diff options
| author | Akshay Nair <phenax5@gmail.com> | 2020-07-06 00:12:05 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2020-07-06 00:12:05 +0530 |
| commit | f90372dbd046e08998790a8b39a2ecbc343fbd12 (patch) | |
| tree | 6161484188d4d0ba3bda0368394579748fca348d | |
| parent | c9916f52d7f2af6d1c96706fe5862cff7b6d5470 (diff) | |
| download | anypinentry-f90372dbd046e08998790a8b39a2ecbc343fbd12.tar.gz anypinentry-f90372dbd046e08998790a8b39a2ecbc343fbd12.zip | |
Adds confirm command support
| -rwxr-xr-x | anypinentry | 66 |
1 files changed, 47 insertions, 19 deletions
diff --git a/anypinentry b/anypinentry index bc03360..5d923ac 100755 --- a/anypinentry +++ b/anypinentry @@ -12,13 +12,28 @@ prompt="Password :: "; description=""; keyinfo=""; -prompt_action='dmenu -P -p "$AP_PROMPT"'; -confirm_action=''; +YES="Yes"; +NO="No"; + +promt_action='dmenu -P -p "$AP_PROMPT"'; +confirm_action='echo -e "$AP_YES\n$AP_NO" | dmenu -p "$AP_PROMPT"'; ask_password() { export AP_PROMPT="$prompt"; echo -n '' | bash -c "$prompt_action" 2> /dev/null; } +confirm() { + export AP_PROMPT="$prompt"; + export AP_YES="$YES"; + export AP_NO="$NO"; + echo -n '' | bash -c "$confirm_action" 2> /dev/null; +} + +cancelled_error() { echo "ERR 99 Operation cancelled <Unspecified source>"; } +com_error() { echo "ERR 99 Operation cancelled <Unspecified source>"; } + + + save_option() { echo "OK"; @@ -26,39 +41,50 @@ save_option() { get_info() { case "$1" in - version) echo "D $VERSION" && echo "OK" ;; - pid) echo "D $BASHPID" && echo "OK" ;; - *) echo "ERR 280 IPC parameter error <Unspecified source>" ;; + version) echo "D $VERSION" && echo "OK" ;; + pid) echo "D $BASHPID" && echo "OK" ;; + *) com_error ;; esac; } + password_prompt() { + local pass=""; if pass=$(ask_password); then [[ ! -z "$pass" ]] && echo "D $pass"; echo "OK"; else - echo "ERR 99 Operation cancelled <Unspecified source>"; + cancelled_error; fi; } +confirm_prompt() { + local res=$(confirm); + [[ "$res" == "$YES" ]] && echo "OK" || cancelled_error; +} + interpret_command() { cmd="$(echo "$1" | cut -d' ' -f1)"; data="$(echo "$1" | cut -d' ' -f2-)"; case "$cmd" in - INIT) echo "OK Pleased to meet you" ;; - OPTION) save_option "$data" ;; - GETINFO) get_info "$data" ;; - SETTITLE) title="$data" && echo "OK" ;; - SETPROMPT) prompt="$data" && echo "OK" ;; - SETDESC) description="$data" && echo "OK" ;; - SETKEYINFO) keyinfo="$data" && echo "OK" ;; - GETPIN) password_prompt ;; - BYE) echo "OK closing connection" && exit 0; ;; - *) echo "OK" ;; + INIT) echo "OK Pleased to meet you" ;; + OPTION) save_option "$data" ;; + GETINFO) get_info "$data" ;; + SETTITLE) title="$data" && echo "OK" ;; + SETPROMPT) prompt="$data" && echo "OK" ;; + SETDESC) description="$data" && echo "OK" ;; + SETKEYINFO) keyinfo="$data" && echo "OK" ;; + CONFIRM) confirm_prompt ;; + GETPIN) password_prompt ;; + BYE) echo "OK closing connection" && exit 0; ;; + *) echo "OK" ;; esac; } + + + help() { echo "Usage: $0 [-D DISPLAY] [--prompt script] [--confirm script] [-hv]"; } @@ -70,8 +96,8 @@ parse_cliargs() { -D|--display) export DISPLAY="$2"; shift 1 ;; --prompt) prompt_action="$2"; shift 1 ;; --confirm) confirm_action="$2"; shift 1 ;; - -v) echo "anypinentry-$VERSION" && exit 0 ;; - -h) help && exit 0 ;; + -v|--version) echo "anypinentry-$VERSION" && exit 0 ;; + -h|--help) help && exit 0 ;; *) help && exit 1 ;; esac; @@ -79,6 +105,9 @@ parse_cliargs() { parse_cliargs "$@"; } + + +# Main parse_cliargs "$@"; interpret_command "INIT"; @@ -93,7 +122,6 @@ done; #{ "SETOK", cmd_setok }, #{ "SETNOTOK", cmd_setnotok }, #{ "SETCANCEL", cmd_setcancel }, - #{ "CONFIRM", cmd_confirm }, #{ "MESSAGE", cmd_message }, #{ "SETQUALITYBAR", cmd_setqualitybar }, #{ "SETQUALITYBAR_TT", cmd_setqualitybar_tt }, |
