From dc6857fcdda2374bb56823c2b83b4021009b4f5b Mon Sep 17 00:00:00 2001 From: Andrew Hurley Date: Mon, 26 Dec 2022 12:18:10 +1100 Subject: [PATCH] better error checking for arguments and timeout --- vvv.sh | 46 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/vvv.sh b/vvv.sh index dba2299..54e694b 100755 --- a/vvv.sh +++ b/vvv.sh @@ -10,7 +10,7 @@ if [[ $(id -u) -ne "0" ]]; then fi usage () { - printf "Usage: vvv.sh \n" + printf "Usage: vvv.sh \n" printf " project = Compose project folder.\n" printf " Option r: restore operation\n" printf " Option d: keep containers down - don't bring back up\n" @@ -18,10 +18,10 @@ usage () { RESTORE="false" DOWN="false" -OUTPUT="" +OUTPUT=" Option: BACKUP OPERATION" while getopts ':rd' OPT; do case $OPT in - r) RESTORE="true"; OUTPUT="${OUTPUT} Option: RESTORE OPERATION";; + r) RESTORE="true"; OUTPUT=" Option: RESTORE OPERATION";; d) DOWN="true"; OUTPUT="${OUTPUT} Option: KEEP DOWN";; \?) usage; exit;; esac @@ -33,6 +33,18 @@ if [[ $RESTORE == "true" ]] && [[ ! -f docker-restore.sh ]]; then exit 1 fi +ccheck () { + printf "${OUTPUT}\n" + REPLY=$'\n' + timeout 10 bash -c 'read -r -s -N 1 -p "Starting delay of 10 seconds. Press 'Escape' or 'q' to cancel..."' + if [[ $REPLY != $'\n' ]]; then + printf "${OUTPUT} cancelled.\n" + return 1 + else + printf "${OUTPUT} starting.\n" + fi +} + scripts () { for MODE in backup restore; do FILE="docker-${MODE}.sh" @@ -63,7 +75,7 @@ scripts () { done } -if [[ $# -lt 1 ]]; then +if [[ ! $# -eq 1 ]]; then usage exit 1 fi @@ -80,6 +92,14 @@ if [[ -z "$VOLUMES" ]]; then exit 1 fi +printf "${OUTPUT}\n" +if timeout --preserve-status --foreground 10 bash -c 'read -r -s -N 1 -p "Starting delay of 10 seconds. Press a key to cancel... "'; then + printf "cancelled\n" + exit 1 +else + printf "starting\n" +fi + USER=$(stat -c '%u' $BASH_SOURCE) pushd "../${PROJECT}" > /dev/null || exit 1 @@ -89,7 +109,11 @@ if [[ ! $RESTORE == "true" ]]; then fi for COMP in docker-compose*.yml; do - COMMAND="docker compose -f $COMP stop" + if command -v docker-compose; then + COMMAND="docker-compose -f $COMP stop" + else + COMMAND="docker compose -f $COMP stop" + fi printf "${COMMAND}\n" if ! bash -c "${COMMAND}"; then printf "Services 'docker compose stop' error." @@ -98,7 +122,11 @@ for COMP in docker-compose*.yml; do done for COMP in docker-compose*.yml; do - COMMAND="docker compose -f $COMP rm -f" + if command -v docker-compose; then + COMMAND="docker-compose -f $COMP rm -f" + else + COMMAND="docker compose -f $COMP rm -f" + fi printf "${COMMAND}\n" if ! bash -c "${COMMAND}"; then printf "Services 'docker compose rm' error." @@ -112,7 +140,11 @@ else bash "./docker-backup.sh" if [[ $DOWN = "false" ]]; then for COMP in docker-compose*.yml; do - COMMAND="docker compose -f $COMP up -d" + if command -v docker-compose; then + COMMAND="docker-compose -f $COMP up -d" + else + COMMAND="docker compose -f $COMP up -d" + fi printf "${COMMAND}\n" if ! bash -c "${COMMAND}"; then printf "Services 'up' error."