summaryrefslogtreecommitdiffstats
path: root/completions/sbopkg
diff options
context:
space:
mode:
Diffstat (limited to 'completions/sbopkg')
-rw-r--r--completions/sbopkg73
1 files changed, 73 insertions, 0 deletions
diff --git a/completions/sbopkg b/completions/sbopkg
new file mode 100644
index 0000000..16bd58f
--- /dev/null
+++ b/completions/sbopkg
@@ -0,0 +1,73 @@
+# bash completion for sbopkg(8) -*- shell-script -*-
+
+_sbopkg()
+{
+ local cur prev words cword
+ _init_completion || return
+
+ if [[ $cur == -* ]]; then
+ COMPREPLY=($(compgen -W '$(_parse_help "$1" -h)' -- "$cur"))
+ [[ ${COMPREPLY-} ]] && return
+ fi
+
+ case "$prev" in
+ -e)
+ COMPREPLY=($(compgen -W 'ask continue stop' -- "$cur"))
+ return
+ ;;
+ -f)
+ _filedir
+ return
+ ;;
+ -d)
+ _filedir -d
+ return
+ ;;
+ -V)
+ COMPREPLY=($(compgen -W "?
+ $(sbopkg -V '?' 2>&1 | cut -s -f1)" -- "$cur"))
+ return
+ ;;
+ -i | -b) ;;
+
+ *)
+ return
+ ;;
+ esac
+
+ local i config
+ config="/etc/sbopkg/sbopkg.conf"
+ for ((i = ${#words[@]} - 1; i > 0; i--)); do
+ if [[ ${words[i]} == -f ]]; then
+ config="${words[i + 1]}"
+ __expand_tilde_by_ref config
+ break
+ fi
+ done
+
+ [[ -r $config ]] || return
+ . $config
+
+ for ((i = 1; i < ${#words[@]}; i++)); do
+ case "${words[i]}" in
+ -V)
+ REPO_NAME="${words[i + 1]%%/*}"
+ REPO_BRANCH="${words[i + 1]#*/}"
+ ;;
+ -d)
+ REPO_ROOT="${words[i + 1]}"
+ ;;
+ esac
+ done
+ [[ -r $REPO_ROOT/$REPO_NAME/$REPO_BRANCH/SLACKBUILDS.TXT ]] || return
+
+ COMPREPLY=($(command sed -ne "/^SLACKBUILD NAME: $cur/{s/^SLACKBUILD NAME: //;p}" \
+ $REPO_ROOT/$REPO_NAME/$REPO_BRANCH/SLACKBUILDS.TXT)
+ $(
+ cd $QUEUEDIR
+ compgen -f -X "!*.sqf" -- "$cur"
+ ))
+} &&
+ complete -F _sbopkg sbopkg
+
+# ex: filetype=sh