You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
1.6 KiB
Bash
78 lines
1.6 KiB
Bash
#=======================================
|
|
# COMMANDLINE PARSER
|
|
#=======================================
|
|
|
|
parse_commandline_args() {
|
|
|
|
load_update_channel
|
|
|
|
CMDARGS=$(getopt --quiet -o wvdpuc: --long watchdog,version,develop,production,update,channel: -n 'nightscout-tool' -- "$@")
|
|
|
|
# shellcheck disable=SC2181
|
|
if [ $? != 0 ]; then
|
|
echo "Invalid arguments: " "$@" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Note the quotes around '$TEMP': they are essential!
|
|
eval set -- "$CMDARGS"
|
|
|
|
WATCHDOGMODE=false
|
|
while true; do
|
|
case "$1" in
|
|
-w | --watchdog)
|
|
WATCHDOGMODE=true
|
|
shift
|
|
;;
|
|
-v | --version)
|
|
echo "$SCRIPT_VERSION"
|
|
exit 0
|
|
;;
|
|
-d | --develop)
|
|
warn "Switching to DEVELOP update channel"
|
|
UPDATE_CHANNEL=develop
|
|
forceUpdateCheck=1
|
|
echo "$UPDATE_CHANNEL" >"$UPDATE_CHANNEL_FILE"
|
|
shift
|
|
;;
|
|
-p | --production)
|
|
warn "Switching to PRODUCTION update channel"
|
|
UPDATE_CHANNEL=master
|
|
forceUpdateCheck=1
|
|
echo "$UPDATE_CHANNEL" >"$UPDATE_CHANNEL_FILE"
|
|
shift
|
|
;;
|
|
-u | --update)
|
|
warn "Forcing update check"
|
|
forceUpdateCheck=1
|
|
shift
|
|
;;
|
|
-c | --channel)
|
|
shift # The arg is next in position args
|
|
UPDATE_CHANNEL_CANDIDATE=$1
|
|
forceUpdateCheck=1
|
|
|
|
[[ ! "$UPDATE_CHANNEL_CANDIDATE" =~ ^[a-z]{3,}$ ]] && {
|
|
echo "Incorrect channel name provided: $UPDATE_CHANNEL_CANDIDATE"
|
|
exit 1
|
|
}
|
|
|
|
warn "Switching to $UPDATE_CHANNEL_CANDIDATE update channel"
|
|
UPDATE_CHANNEL="$UPDATE_CHANNEL_CANDIDATE"
|
|
echo "$UPDATE_CHANNEL" >"$UPDATE_CHANNEL_FILE"
|
|
shift
|
|
;;
|
|
--)
|
|
shift
|
|
break
|
|
;;
|
|
*) break ;;
|
|
esac
|
|
done
|
|
|
|
if [ "$WATCHDOGMODE" = "true" ]; then
|
|
watchdog_check
|
|
fi
|
|
|
|
}
|