summaryrefslogtreecommitdiff
path: root/lib/keyringer/functions
diff options
context:
space:
mode:
Diffstat (limited to 'lib/keyringer/functions')
-rwxr-xr-xlib/keyringer/functions29
1 files changed, 18 insertions, 11 deletions
diff --git a/lib/keyringer/functions b/lib/keyringer/functions
index ab519b2..09b004d 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
@@ -473,7 +480,7 @@ function keyringer_get_new_file {
fi
# Sanitize and complete file name
- FILE="`echo $FILE | sed -e 's/[^A-Za-z0-9.\/\-]/_/g'`"
+ FILE="`echo $FILE | sed -e 's/[^A-Za-z0-9@.\/\-]/_/g'`"
# Warn user about file name change
if [ "`basename "$*"`" != "`basename $FILE`" ]; then