Iterate on docker-stacks

This commit is contained in:
Joey Hafner 2023-10-10 15:52:02 -07:00
parent 438e60c979
commit f37474a68c

View File

@ -1,65 +1,25 @@
# takes a docker-compose.yml file path and returns a boolean to represent
# whether that stack depends on an smb share under the `/mnt/nas` path
function check_nas {
if [ docker-compose config | grep -q /mnt/nas ]; then
docker-compose config | grep -q /mnt/nas # this returns 0 if `/mnt/nas` is present in the config
MATCH=$?
if [ $MATCH == 0]; then
return true
fi
}
# takes a docker-compose.yml file path and returns a boolean to represent
# whether that stack passes a docker-compose config lint
function lint {
docker-compose config > /dev/null 2>&1
return $?
}
function compose_config {
docker-compose config
}
# takes a docker-compose.yml file path and shuts it down
function compose_down {
docker-compose down
}
# takes a docker-compose.yml file path and brings it up
function compose_up {
if [ "$FORCERECREATE" = true ]; then
docker-compose up --force-recreate -d
elif [ "$FORCERECREATE" = false ]; then
docker-compose up -d
else
echo "Bad variable value: \$FORCERECREATE=$FORCERECREATE"
fi
}
function main { function main {
#echo "\$ARGS is $ARGS"
STACKS_DIRECTORY="/home/admin/homelab/fighter/config" STACKS_DIRECTORY="/home/admin/homelab/fighter/config"
while [[ $# -gt 0 ]]; do while [[ $# -gt 0 ]]; do
#echo "case is $1"
case $1 in case $1 in
# global flags are parsed first # parse global flags
-n|--nas-only) NAS_ONLY=true; shift ;; -n|--nas-only) NAS_ONLY=true; shift ;;
-l|--lint) LINT=true; shift ;; -l|--lint) LINT=true; shift ;;
-p|--path) STACKS_DIRECTORY="$2"; shift; shift ;; -p|--path) STACKS_DIRECTORY="$2"; shift; shift ;;
-v|--verbose) VERBOSE=true; shift ;; -v|--verbose) VERBOSE=true; shift ;;
# commands are parsed with nested parsing for subcommand flags # parse command
up*) COMMAND="up"; shift; up*) COMMAND="docker-compose up -d"; shift;
while [[ $# -gt 0 ]]; do while [[ $# -gt 0 ]]; do
case $1 in case $1 in
-f|--force-recreate) FORCE_RECREATE=true; shift;; -f|--force-recreate) COMMAND="$COMMAND --force-recreate"; shift;;
*) echo "Unrecognized option '$1' for '$COMMAND'"; exit 1;; *) echo "Unrecognized option '$1' for '$COMMAND'"; exit 1;;
esac esac
done done
;; ;;
down*) COMMAND="down"; shift; down*) COMMAND="docker-compose down"; shift;
while [[ $# -gt 0 ]]; do while [[ $# -gt 0 ]]; do
case $1 in case $1 in
-o|--remove-orphans) REMOVE_ORPHANS=true; shift;; -o|--remove-orphans) COMMAND="$COMMAND --remove-orphans"; shift;;
*) echo "Unrecognized option '$1' for '$COMMAND'"; exit 1;; *) echo "Unrecognized option '$1' for '$COMMAND'"; exit 1;;
esac esac
done done
@ -67,7 +27,7 @@ function main {
config*) COMMAND="config"; shift; config*) COMMAND="config"; shift;
while [[ $# -gt 0 ]]; do while [[ $# -gt 0 ]]; do
case $1 in case $1 in
-n|--no-interpolate) NO_INTERPOLATE=true; shift;; -n|--no-interpolate) COMMAND="$COMMAND --no-interpolate"; shift;;
*) echo "Unrecognized option '$1' for '$COMMAND'"; exit 1;; *) echo "Unrecognized option '$1' for '$COMMAND'"; exit 1;;
esac esac
done done
@ -81,23 +41,20 @@ function main {
if [ $NAS_ONLY ] || [ $LINT ]; then if [ $NAS_ONLY ] || [ $LINT ]; then
TMP=$(docker-compose config) TMP=$(docker-compose config)
PASS=$? PASS=$?
if [ $PASS != 0 ]; then
echo "ERROR: $stack failed to lint"
continue
fi
if [ $NAS_ONLY ]; then if [ $NAS_ONLY ]; then
echo $TMP | grep -q /mnt/nas echo $TMP | grep -q /mnt/nas
NAS_DEPENDENT=$? NAS_DEPENDENT=$?
if [ $NAS_DEPENDENT ]; then if [ $NAS_DEPENDENT == 1 ]; then
echo "\$NAS_DEPENDENT is $NAS_DEPENDENT for $stack" continue
fi fi
fi fi
fi fi
case $COMMAND in
up) echo "$COMMAND at $PWD" echo "${PWD} $COMMAND"
;;
down) echo "$COMMAND at $PWD"
;;
config) echo "$COMMAND at $PWD"
;;
*) echo "Unrecognized command '$COMMAND'" ;;
esac
done done
} }