diff --git a/docker/artisan b/docker/artisan index d50d65244..3bbf58aea 100755 --- a/docker/artisan +++ b/docker/artisan @@ -3,4 +3,9 @@ declare service="${PF_SERVICE:=worker}" declare user="${PF_USER:=www-data}" -exec docker compose exec --user "${user}" "${service}" php artisan "${@}" +exec docker compose exec \ + --user "${user}" \ + --env TERM \ + --env COLORTERM \ + "${service}" \ + php artisan "${@}" diff --git a/docker/dottie b/docker/dottie index 6e409def2..a6ad7bc78 100755 --- a/docker/dottie +++ b/docker/dottie @@ -1,17 +1,44 @@ #!/bin/bash +set -e -o errexit -o nounset -o pipefail + declare project_root="${PWD}" if command -v git &>/dev/null; then project_root=$(git rev-parse --show-toplevel) fi -exec docker run \ - --rm \ - --interactive \ - --tty \ - --volume "${project_root}:/var/www" \ - --volume "/tmp:/tmp" \ - --workdir /var/www \ - ghcr.io/jippi/dottie \ - "$@" +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 + --env TERM + --env COLORTERM + --volume "/tmp:/tmp" + --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}" "$@"