Improved non-interactive output

develop
Dominik Dzienia 3 weeks ago
parent e585c9d78c
commit 5bd4059357

@ -7,10 +7,14 @@ help() {
Usage: nightscout-tool [options] Usage: nightscout-tool [options]
Description: Description:
Nightscout-tool is a command-line tool for managing Nightscout. Nightscout-tool is a command-line tool for managing Nightscout.
In UI mode, tool provides a menu-driven interface for managing Nightscout server, its configuration, updates, cleanup, and diagnostics. In UI mode, tool provides a menu-driven interface for managing
In watchdog mode, it can be used to monitor the status of Nightscout and send an email alert if the service is down. Nightscout server, its configuration, updates, cleanup, and diagnostics.
In watchdog mode, it can be used to monitor the status of Nightscout
and send an email alert if the service is down.
Options: Options:
-w, --watchdog Run in watchdog mode -w, --watchdog Run in watchdog mode
@ -28,7 +32,7 @@ parse_commandline_args() {
load_update_channel load_update_channel
CMDARGS=$(getopt --quiet -o wvdpuc: --long watchdog,version,develop,production,update,channel: -n 'nightscout-tool' -- "$@") CMDARGS=$(getopt --quiet -o wvldpuc:h --long watchdog,version,loud,develop,production,update,channel:,help -n 'nightscout-tool' -- "$@")
# shellcheck disable=SC2181 # shellcheck disable=SC2181
if [ $? != 0 ]; then if [ $? != 0 ]; then
@ -40,10 +44,12 @@ parse_commandline_args() {
eval set -- "$CMDARGS" eval set -- "$CMDARGS"
WATCHDOGMODE=false WATCHDOGMODE=false
NONINTERACTIVE_MODE=false
while true; do while true; do
case "$1" in case "$1" in
-w | --watchdog) -w | --watchdog)
WATCHDOGMODE=true WATCHDOGMODE=true
NONINTERACTIVE_MODE=true
shift shift
;; ;;
-v | --version) -v | --version)
@ -106,6 +112,8 @@ parse_commandline_args() {
done done
if [ "$WATCHDOGMODE" = "true" ]; then if [ "$WATCHDOGMODE" = "true" ]; then
startup_version
startup_debug
watchdog_check watchdog_check
fi fi

@ -42,6 +42,7 @@ DOCKER_DOWN_MAIL=604800 # == 7 days in seconds
SCRIPT_VERSION="1.10.1" #auto-update SCRIPT_VERSION="1.10.1" #auto-update
SCRIPT_BUILD_TIME="2026.01.05" #auto-update SCRIPT_BUILD_TIME="2026.01.05" #auto-update
FORCE_DEBUG_LOG="" FORCE_DEBUG_LOG=""
NONINTERACTIVE_MODE="false"
#======================================= #=======================================
# DOWNLOAD CONFIG # DOWNLOAD CONFIG

@ -4,7 +4,6 @@
update_logto() { update_logto() {
if [[ "$UPDATE_CHANNEL" == "develop" || "$FORCE_DEBUG_LOG" == "1" ]]; then if [[ "$UPDATE_CHANNEL" == "develop" || "$FORCE_DEBUG_LOG" == "1" ]]; then
msgok "Debug logging enabled - see: $DEBUG_LOG_FILE"
LOGTO="$DEBUG_LOG_FILE" LOGTO="$DEBUG_LOG_FILE"
else else
LOGTO=/dev/null LOGTO=/dev/null
@ -37,7 +36,6 @@ get_domain_status() {
load_update_channel() { load_update_channel() {
if [[ -f $UPDATE_CHANNEL_FILE ]]; then if [[ -f $UPDATE_CHANNEL_FILE ]]; then
UPDATE_CHANNEL=$(cat "$UPDATE_CHANNEL_FILE") UPDATE_CHANNEL=$(cat "$UPDATE_CHANNEL_FILE")
msgok "Loaded update channel: $UPDATE_CHANNEL"
update_logto update_logto
fi fi
} }
@ -48,4 +46,13 @@ startup_version() {
msgnote "build ${updateInstalled}" msgnote "build ${updateInstalled}"
msgnote "$uni_copyright 2023-2026 Dominik Dzienia" msgnote "$uni_copyright 2023-2026 Dominik Dzienia"
msgnote "Licensed under CC BY-NC-ND 4.0" msgnote "Licensed under CC BY-NC-ND 4.0"
if [[ -f $UPDATE_CHANNEL_FILE ]]; then
msgok "Loaded update channel: $UPDATE_CHANNEL"
fi
}
startup_debug() {
if [[ "$UPDATE_CHANNEL" == "develop" || "$FORCE_DEBUG_LOG" == "1" ]]; then
msgdebug "Debug logging enabled - see: $DEBUG_LOG_FILE"
fi
} }

@ -150,7 +150,9 @@ get_watchdog_status() {
} }
watchdog_check() { watchdog_check() {
echo "Nightscout Watchdog mode" echo "---------------------------"
echo " Nightscout Watchdog mode"
echo "---------------------------"
WATCHDOG_LAST_TIME=$(date -u +"%Y-%m-%dT%H:%M:%SZ") WATCHDOG_LAST_TIME=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
WATCHDOG_TIME=$(date -u +"%Y-%m-%dT%H:%M:%SZ") WATCHDOG_TIME=$(date -u +"%Y-%m-%dT%H:%M:%SZ")

@ -25,6 +25,7 @@ emoji_check="\U2705"
emoji_ok="\U1F197" emoji_ok="\U1F197"
emoji_err="\U274C" emoji_err="\U274C"
emoji_note="\U1F4A1" emoji_note="\U1F4A1"
emoji_debug="\U1F4DC"
uni_bullet=" $(printf '\u2022') " uni_bullet=" $(printf '\u2022') "
uni_copyright="$(printf '\uA9\uFE0F')" uni_copyright="$(printf '\uA9\uFE0F')"

@ -28,8 +28,9 @@ if [[ ! -d "$DIR" ]]; then DIR="$PWD"; fi
# MAIN SCRIPT # MAIN SCRIPT
#======================================= #=======================================
startup_version
parse_commandline_args "$@" parse_commandline_args "$@"
startup_version
startup_debug
# check_interactive # check_interactive
check_git check_git
check_docker check_docker

@ -17,29 +17,70 @@ chomp() {
} }
ohai() { ohai() {
if [ "$NONINTERACTIVE_MODE" = "true" ]; then
# shellcheck disable=SC2059
printf "==> %s\n" "$(shell_join "$@")"
else
printf "${tty_blue}==>${tty_bold} %s${tty_reset}\n" "$(shell_join "$@")" printf "${tty_blue}==>${tty_bold} %s${tty_reset}\n" "$(shell_join "$@")"
fi
} }
msgok() { msgok() {
if [ "$NONINTERACTIVE_MODE" = "true" ]; then
# shellcheck disable=SC2059
printf "$1\n"
else
# shellcheck disable=SC2059 # shellcheck disable=SC2059
printf "$emoji_ok $1\n" printf "$emoji_ok $1\n"
fi
} }
msgnote() { msgnote() {
if [ "$NONINTERACTIVE_MODE" = "true" ]; then
# shellcheck disable=SC2059
printf "$1\n"
else
# shellcheck disable=SC2059 # shellcheck disable=SC2059
printf "$emoji_note $1\n" printf "$emoji_note $1\n"
fi
} }
msgcheck() { msgcheck() {
if [ "$NONINTERACTIVE_MODE" = "true" ]; then
# shellcheck disable=SC2059
printf "$1\n"
else
# shellcheck disable=SC2059 # shellcheck disable=SC2059
printf "$emoji_check $1\n" printf "$emoji_check $1\n"
fi
} }
msgerr() { msgerr() {
if [ "$NONINTERACTIVE_MODE" = "true" ]; then
# shellcheck disable=SC2059
printf "$1\n"
else
# shellcheck disable=SC2059 # shellcheck disable=SC2059
printf "$emoji_err $1\n" printf "$emoji_err $1\n"
fi
}
msgdebug() {
if [[ "$UPDATE_CHANNEL" == "develop" || "$FORCE_DEBUG_LOG" == "1" ]]; then
if [ "$NONINTERACTIVE_MODE" = "true" ]; then
# shellcheck disable=SC2059
printf "$1\n"
else
printf "$emoji_debug $1\n"
fi
fi
} }
warn() { warn() {
if [ "$NONINTERACTIVE_MODE" = "true" ]; then
# shellcheck disable=SC2059
printf "Warning: %s\n" "$(chomp "$1")" >&2
else
printf "${tty_red}Warning${tty_reset}: %s\n" "$(chomp "$1")" >&2 printf "${tty_red}Warning${tty_reset}: %s\n" "$(chomp "$1")" >&2
fi
} }

Loading…
Cancel
Save