summaryrefslogtreecommitdiffstats
path: root/conf_completion
diff options
context:
space:
mode:
Diffstat (limited to 'conf_completion')
-rw-r--r--conf_completion40
1 files changed, 40 insertions, 0 deletions
diff --git a/conf_completion b/conf_completion
new file mode 100644
index 0000000..ebeb482
--- /dev/null
+++ b/conf_completion
@@ -0,0 +1,40 @@
+#!/usr/bin/env bash
+
+_conf()
+{
+ COMPREPLY=()
+ local cur="${COMP_WORDS[COMP_CWORD]}"
+ local commands="add ls list search edit relink grep help"
+ if [[ $COMP_CWORD -gt 1 ]]; then
+ local lastarg="${COMP_WORDS[$COMP_CWORD-1]}"
+ case "${COMP_WORDS[1]}" in
+ l|ls|list)
+ if [[ $lastarg == "-g" ]]; then
+ COMPREPLY=($(compgen -W "$(conf ls -G)" -- ${cur}))
+ else
+ COMPREPLY=($(compgen -W "$(conf ls -h 2>&1 | awk -F' ' '{print $1}')" -- ${cur}))
+ fi
+ ;;
+ add|a)
+ if [[ $lastarg == "-g" ]]; then
+ COMPREPLY=($(compgen -W "$(conf ls -G)" -- ${cur}))
+ else
+ COMPREPLY=($(compgen -f -- ${cur}))
+ fi
+ ;;
+ edit|e)
+ COMPREPLY=($(compgen -W "$(conf ls -G) \
+ $(conf ls -l | xargs -If basename f) \
+ $(for g in $(conf ls -G); do \
+ conf ls -g $g | xargs -If basename f | sed -e "s#^#${g}/#"; \
+ done)" -- ${cur}))
+ ;;
+ esac
+ else
+ COMPREPLY=($(compgen -W "${commands}" -- ${cur}))
+ fi
+}
+
+complete -F _conf conf
+
+