|
| 1 | +module_options+=( |
| 2 | + ["module_homepage,author"]="@armbian" |
| 3 | + ["module_homepage,feature"]="module_homepage" |
| 4 | + ["module_homepage,desc"]="Install homepage container" |
| 5 | + ["module_homepage,example"]="install remove status help" |
| 6 | + ["module_homepage,port"]="3000" |
| 7 | + ["module_homepage,status"]="Active" |
| 8 | + ["module_homepage,arch"]="" |
| 9 | +) |
| 10 | +# |
| 11 | +# Module homepage |
| 12 | +# |
| 13 | +function module_homepage () { |
| 14 | + local title="homepage" |
| 15 | + local condition=$(which "$title" 2>/dev/null) |
| 16 | + |
| 17 | + if check_if_installed docker-ce; then |
| 18 | + local container=$(docker container ls -a | mawk '/homepage?( |$)/{print $1}') |
| 19 | + local image=$(docker image ls -a | mawk '/homepage?( |$)/{print $3}') |
| 20 | + fi |
| 21 | + |
| 22 | + local commands |
| 23 | + IFS=' ' read -r -a commands <<< "${module_options["module_homepage,example"]}" |
| 24 | + |
| 25 | + HOMEPAGE_BASE="${SOFTWARE_FOLDER}/homepage" |
| 26 | + |
| 27 | + case "$1" in |
| 28 | + "${commands[0]}") |
| 29 | + check_if_installed docker-ce || install_docker |
| 30 | + [[ -d "$HOMEPAGE_BASE" ]] || mkdir -p "$HOMEPAGE_BASE" || { echo "Couldn't create storage directory: $HOMEPAGE_BASE"; exit 1; } |
| 31 | + docker run -d \ |
| 32 | + --name homepage \ |
| 33 | + -e PUID=1000 \ |
| 34 | + -e PGID=1000 \ |
| 35 | + -p 3000:3000 \ |
| 36 | + -v "${HOMEPAGE_BASE}/config:/app/config" \ |
| 37 | + -v /var/run/docker.sock:/var/run/docker.sock:ro \ |
| 38 | + --restart unless-stopped \ |
| 39 | + ghcr.io/gethomepage/homepage:latest |
| 40 | + for i in $(seq 1 20); do |
| 41 | + if docker inspect -f '{{ index .Config.Labels "build_version" }}' homepage >/dev/null 2>&1 ; then |
| 42 | + break |
| 43 | + else |
| 44 | + sleep 3 |
| 45 | + fi |
| 46 | + if [ $i -eq 20 ] ; then |
| 47 | + echo -e "\nTimed out waiting for ${title} to start, consult your container logs for more info (\`docker logs homepage\`)" |
| 48 | + exit 1 |
| 49 | + fi |
| 50 | + done |
| 51 | + ;; |
| 52 | + "${commands[1]}") |
| 53 | + [[ "${container}" ]] && docker container rm -f "$container" >/dev/null |
| 54 | + [[ "${image}" ]] && docker image rm "$image" >/dev/null |
| 55 | + [[ -n "${HOMEPAGE_BASE}" && "${HOMEPAGE_BASE}" != "/" ]] && rm -rf "${HOMEPAGE_BASE}" |
| 56 | + ;; |
| 57 | + "${commands[2]}") |
| 58 | + if [[ "${container}" && "${image}" ]]; then |
| 59 | + return 0 |
| 60 | + else |
| 61 | + return 1 |
| 62 | + fi |
| 63 | + ;; |
| 64 | + "${commands[3]}") |
| 65 | + echo -e "\nUsage: ${module_options["module_homepage,feature"]} <command>" |
| 66 | + echo -e "Commands: ${module_options["module_homepage,example"]}" |
| 67 | + echo "Available commands:" |
| 68 | + echo -e "\tinstall\t- Install $title." |
| 69 | + echo -e "\tstatus\t- Installation status $title." |
| 70 | + echo -e "\tremove\t- Remove $title." |
| 71 | + echo |
| 72 | + ;; |
| 73 | + *) |
| 74 | + ${module_options["module_homepage,feature"]} ${commands[3]} |
| 75 | + ;; |
| 76 | + esac |
| 77 | +} |
0 commit comments