diff options
author | Silvio Rhatto <rhatto@riseup.net> | 2015-07-26 14:00:12 -0300 |
---|---|---|
committer | Silvio Rhatto <rhatto@riseup.net> | 2015-07-26 14:00:12 -0300 |
commit | 1d7d4720df16c41c96e17440b8c6f36658f02ae4 (patch) | |
tree | 3a3ffa61a747e5e26dd7c5f1e06d8b5d926f76e5 | |
parent | f6584c42cf17028d186bb939a0609167ae178d2a (diff) | |
download | keyringer-1d7d4720df16c41c96e17440b8c6f36658f02ae4.tar.gz keyringer-1d7d4720df16c41c96e17440b8c6f36658f02ae4.tar.bz2 |
Slightly more interactive keyringer_get_file
-rwxr-xr-x | lib/keyringer/functions | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/lib/keyringer/functions b/lib/keyringer/functions index ab519b2..70a107d 100755 --- a/lib/keyringer/functions +++ b/lib/keyringer/functions @@ -430,16 +430,18 @@ function keyringer_get_option { function keyringer_get_file { FILE="$(keyringer_filename "$RELATIVE_PATH/$1")" - if [ -z "$FILE" ]; then - keyringer_action_usage - exit 1 - elif [ ! -f "$KEYDIR/$FILE" ]; then + if [ ! -f "$KEYDIR/$FILE" ]; then # Try to find a similar file + FILE="" count=0 candidates=(`keyringer_exec find "$BASEDIR" | grep -i "$1" | grep -e '.asc$'`) if [ ! -z "$candidates" ]; then - echo "Could not find exact match for \"$1\", please choose one of the following secrets:" + if [ ! -z "$1" ]; then + echo "Could not find exact match for \"$1\"" + fi + + echo "Choose one of the following or type a pattern:" echo "" for candidate in ${candidates[@]}; do @@ -452,15 +454,20 @@ function keyringer_get_file { if [[ "$option" =~ ^[0-9]+$ ]] && [ ! -z "${candidates[$option]}" ]; then FILE="$(keyringer_filename "$RELATIVE_PATH/${candidates[$option]}")" - else - echo "Invalid option" - exit 1 + elif [ ! -z "$option" ]; then + keyringer_get_file $option fi else - echo "File not found: $KEYDIR/$FILE" - exit 1 + echo "Nothing matches $option, try again." + keyringer_get_file fi fi + + # Probably Ctrl-D was hit + if [ -z "$FILE" ]; then + echo "" + exit + fi } # Get a new file argument |