fix(dc-ops): ensure proper quoting in script

- Quote variables in `dirname` to prevent word splitting
- Use quotes around `$LINE` in `grep` to handle spaces
- Quote `cd` paths to handle directories with spaces
- Quote `docker compose` file argument to handle file names with spaces
🤖
This commit is contained in:
Christian Hennevogl 2023-12-18 10:58:13 +01:00
parent 5eecfcb2e7
commit 208eed8048

12
dc-ops
View file

@ -9,27 +9,27 @@
h1() { echo "* $*"; } h1() { echo "* $*"; }
msg() { echo "$*"; } msg() { echo "$*"; }
BASEDIR=$(dirname $0) BASEDIR=$(dirname "$0")
# use list from file or passed parameters # use list from file or passed parameters
STACKLIST=$(cat $BASEDIR/stacklist 2>/dev/null) STACKLIST=$(cat "$BASEDIR/stacklist" 2>/dev/null)
[[ $# -gt 0 ]] && STACKLIST=$* [[ $# -gt 0 ]] && STACKLIST=$*
# iterate list # iterate list
for LINE in $STACKLIST; do for LINE in $STACKLIST; do
grep -q "^[[:space:]]*#" <<<$LINE && continue # skip comments grep -q "^[[:space:]]*#" <<<"$LINE" && continue # skip comments
# determine if passed a directory or a file # determine if passed a directory or a file
STACKDIR=$LINE STACKDIR=$LINE
if [[ -f $LINE ]]; then if [[ -f $LINE ]]; then
STACKDIR=$(dirname $LINE) STACKDIR=$(dirname "$LINE")
COMPOSEFILE=$LINE COMPOSEFILE=$LINE
fi fi
h1 "processing $STACKDIR" h1 "processing $STACKDIR"
# skip if directroy not found # skip if directroy not found
cd $STACKDIR || continue cd "$STACKDIR" || continue
# fetch from repo and check for new commits # fetch from repo and check for new commits
git fetch --quiet git fetch --quiet
@ -40,5 +40,5 @@ for LINE in $STACKLIST; do
# pull new commits and run docker compose # pull new commits and run docker compose
git pull git pull
docker compose --file ${COMPOSEFILE:=docker-compose.yml} up --build --detach --remove-orphans docker compose --file "${COMPOSEFILE:=docker-compose.yml}" up --build --detach --remove-orphans
done done