summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSilvio Rhatto <rhatto@riseup.net>2015-07-26 14:00:12 -0300
committerSilvio Rhatto <rhatto@riseup.net>2015-07-26 14:00:12 -0300
commit1d7d4720df16c41c96e17440b8c6f36658f02ae4 (patch)
tree3a3ffa61a747e5e26dd7c5f1e06d8b5d926f76e5
parentf6584c42cf17028d186bb939a0609167ae178d2a (diff)
downloadkeyringer-1d7d4720df16c41c96e17440b8c6f36658f02ae4.tar.gz
keyringer-1d7d4720df16c41c96e17440b8c6f36658f02ae4.tar.bz2
Slightly more interactive keyringer_get_file
-rwxr-xr-xlib/keyringer/functions27
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