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