aboutsummaryrefslogtreecommitdiff
path: root/vis-complete
diff options
context:
space:
mode:
authorQuentin Rameau <quinq@fifth.space>2023-03-22 23:54:42 +0100
committerFelix Van der Jeugt <felix.vanderjeugt@posteo.net>2023-05-23 20:40:58 +0200
commitab23e5f5f37ead444bd527ef189349e53130d819 (patch)
treed315e569cc844a14afab8047729f8348c6cdba5d /vis-complete
parent364d21291a0a3848efeed615e5da69c757a5d2b0 (diff)
downloadvis-ab23e5f5f37ead444bd527ef189349e53130d819.tar.gz
vis-ab23e5f5f37ead444bd527ef189349e53130d819.tar.xz
vis-complete: Fix commandline options handling
Diffstat (limited to 'vis-complete')
-rwxr-xr-xvis-complete31
1 files changed, 25 insertions, 6 deletions
diff --git a/vis-complete b/vis-complete
index c61a6d5..f30359b 100755
--- a/vis-complete
+++ b/vis-complete
@@ -1,33 +1,52 @@
#!/bin/sh
set -e
+usage() {
+ printf '%s\n' "usage: $(basename "$0") [--file|--word] pattern" \
+ " $(basename "$0") -h|--help"
+}
+
basic_regex_quote() { printf "%s" "$1" | sed 's|[\\.*^$[]|\\&|g'; }
glob_quote () { printf "%s" "$1" | sed 's|[\\?*[]]|\\&|g'; }
-PATTERN=""
COMPLETE_WORD=0
FIND_FILE_LIMIT=1000
while [ $# -gt 0 ]; do
case "$1" in
- -h|--help)
- echo "usage: $(basename "$0") [-h] [--file|--word] [pattern]"
- exit 0;
- ;;
--file)
+ COMPLETE_WORD=0
shift
;;
--word)
COMPLETE_WORD=1
shift
;;
+ --)
+ shift
+ break
+ ;;
+ -h|--help)
+ usage
+ exit 0
+ ;;
+ -*)
+ usage
+ exit 1
+ ;;
*)
- PATTERN="$1"
break
;;
esac
done
+if [ $# -ne 1 ]; then
+ usage
+ exit 1
+fi
+
+PATTERN="$1"
+
if [ $COMPLETE_WORD = 1 ]; then
tr -cs '[:alnum:]_' '\n' |
grep "^$(basic_regex_quote "$PATTERN")." |