pixelfed/pixelfed

View on GitHub
docker/dottie

Summary

Maintainability
Test Coverage
#!/bin/bash

set -e -o errexit -o nounset -o pipefail

declare project_root="${PWD}"
declare user="${PF_USER:=www-data}"

if command -v git &>/dev/null; then
    project_root=$(git rev-parse --show-toplevel)
fi

declare -r release="${DOTTIE_VERSION:-latest}"

declare -r update_check_file="/tmp/.dottie-update-check"      # file to check age of since last update
declare -i update_check_max_age=$((8 * 60 * 60))              # 8 hours between checking for dottie version
declare -i update_check_cur_age=$((update_check_max_age + 1)) # by default the "update" event should happen

# default [docker run] flags
declare -a flags=(
    --rm
    --interactive
    --tty
    --user "${user}"
    --env TERM
    --env COLORTERM
    --volume "${project_root}:/var/www"
    --workdir /var/www
)

# if update file exists, find its age since last modification
if [[ -f "${update_check_file}" ]]; then
    now=$(date +%s)
    changed=$(date -r "${update_check_file}" +%s)
    update_check_cur_age=$((now - changed))
fi

# if update file is older than max allowed poll for new version of dottie
if [[ $update_check_cur_age -gt $update_check_max_age ]]; then
    flags+=(--pull always)

    touch "${update_check_file}"
fi

# run dottie
exec docker run "${flags[@]}" "ghcr.io/jippi/dottie:${release}" "$@"