diff --git a/zsh/lib/utils/io.zsh b/zsh/lib/utils/io.zsh index 1887b98..55c481d 100644 --- a/zsh/lib/utils/io.zsh +++ b/zsh/lib/utils/io.zsh @@ -33,7 +33,7 @@ WARNING() { # warning-level messages; not errors } DEBUG() { # helpful during development or (sparingly) to help others' development - [[ $SCWRYPTS_LOG_LEVEL -gt 4 ]] \ + [[ $SCWRYPTS_LOG_LEVEL -ge 4 ]] \ && PREFIX="DEBUG ℹ" COLOR=$__WHITE PRINT "$@" } @@ -82,23 +82,10 @@ source "${0:a:h}/io.usage.zsh" ### facilitate user prompt and input ################################ ##################################################################### -Yn() { # ask a yes-or-no question (default yes) - PROMPT "$@ [Yn]" - [ $CI ] && { echo y >&2; return 0; } - [ $__SCWRYPTS_YES ] && [[ $__SCWRYPTS_YES -eq 1 ]] && { echo y; return 0; } - - local Yn; READ -k Yn; echo >&2 - [[ $Yn =~ [nN] ]] && return 1 || return 0 -} - -yN() { # ask a yes-or-no question (default no) - PROMPT "$@ [yN]" - [ $CI ] && { echo y >&2; return 0; } - [ $__SCWRYPTS_YES ] && [[ $__SCWRYPTS_YES -eq 1 ]] && { echo y; return 0; } - - local yN; READ -k yN; echo >&2 - [[ $yN =~ [yY] ]] && return 0 || return 1 -} +# yes/no prompts && = yes (exit code 0) +# || = no (exit code 1) +Yn() { [[ ! $(READ_YN $@ '[Yn]') =~ [nN] ]]; } # default 'yes' +yN() { [[ $(READ_YN $@ '[yN]') =~ [yY] ]]; } # default 'no' INPUT() { # read a single line of user input PROMPT "${@:2}" @@ -159,12 +146,85 @@ GETSUDO() { || { ERROR 'failed :c'; return 1; } } - READ() { - [ $CI ] && { - WARNING 'currently in CI, skipping READ' - return 0 - } - read $@ &2 + + READ ${READ_ARGS[@]} -s -k yn + + [[ $FORCE_USER_INPUT =~ true ]] && [[ $SCWRYPTS_LOG_LEVEL -lt 1 ]] \ + && echo $yn >&2 + ;; + esac + + [[ $SCWRYPTS_LOG_LEVEL -ge 1 ]] && echo $yn >&2 + + echo $yn +}