aboutsummaryrefslogtreecommitdiff
path: root/extension
diff options
context:
space:
mode:
Diffstat (limited to 'extension')
-rw-r--r--extension/prompt.bash39
1 files changed, 39 insertions, 0 deletions
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
+}