Просмотр исходного кода

ensure color in dottie output by passing through env

Christian Winther 1 год назад
Родитель
Сommit
1976af6dd1
2 измененных файлов с 42 добавлено и 10 удалено
  1. 6 1
      docker/artisan
  2. 36 9
      docker/dottie

+ 6 - 1
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 "${@}"

+ 36 - 9
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}" "$@"