From 02fdbf3bbc215268cca4edf79c106eabc7423567 Mon Sep 17 00:00:00 2001 From: Federico Angelilli Date: Sun, 14 Jan 2024 13:01:56 +0100 Subject: Add prompt extension --- extension/prompt.bash | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 extension/prompt.bash (limited to 'extension') diff --git a/extension/prompt.bash b/extension/prompt.bash new file mode 100644 index 0000000..9c5c350 --- /dev/null +++ b/extension/prompt.bash @@ -0,0 +1,39 @@ +single_prompt() { + local inp + read -r -p "Enter contents of $NAME ($ENTRY): " -e inp + echo "$inp" > "$FILE" +} + +long_prompt() { + printf "Enter contents of $NAME ($ENTRY) and press Ctrl+D when finished:\n\n" + cat - > "$FILE" +} + +double_prompt() { + local inp inp2 + read -r -p "Enter contents of $NAME ($ENTRY): " -s inp || error "Failed prompt" + echo + read -r -p "Retype contents of $NAME: " -s inp2 || error "Failed prompt" + echo + + [[ "$inp" == "$inp2" ]] || error "Contents don't match..." + echo "$inp" > "$FILE" +} + +prompt() { + local opts long=0 double=0 + opts="$($GETOPT -o ld -l long,double -n "$PROGRAM" -- "$@")" + local err=$? + eval set -- "$opts" + while true; do case $1 in + -l|--long) long=1; shift ;; + -d|--double) double=1; shift ;; + --) shift; break ;; + esac done + + [[ $err -ne 0 || ( $long -eq 1 && $double -eq 1 ) || $# -ne 0 ]] && error "Invalid options for prompt ($ACTION action for $NAME)" + + [[ $long -eq 1 ]] && long_prompt && return + [[ $double -eq 1 ]] && double_prompt && return + single_prompt +} -- cgit v1.2.3