From 1382563c132a3df0b852cd74de6333c54acac6ae Mon Sep 17 00:00:00 2001 From: slakmagik Date: Thu, 17 Mar 2011 05:51:00 +0000 Subject: [PATCH] add sbopkg bash completion file Thanks to Sergey V.! --- src/usr/doc/contrib/sbopkg.bash | 74 +++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 src/usr/doc/contrib/sbopkg.bash diff --git a/src/usr/doc/contrib/sbopkg.bash b/src/usr/doc/contrib/sbopkg.bash new file mode 100644 index 0000000..4b6b64c --- /dev/null +++ b/src/usr/doc/contrib/sbopkg.bash @@ -0,0 +1,74 @@ +# bash completion for sbopkg tool + +_sbopkg() +{ + COMPREPLY=() + + local cur="${COMP_WORDS[COMP_CWORD]}" + local prev="${COMP_WORDS[COMP_CWORD-1]}" + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-b -c -d -e -f -g -h -i -k -l \ + -o -P -p -q -R -r -s -u -V -v' -- "$cur" ) ) + return 0 + fi + + case $prev in + -e) + COMPREPLY=( $( compgen -W 'ask continue stop' -- "$cur" ) ) + return 0 + ;; + -f) + COMPREPLY=( $( compgen -f -- "$cur" ) ) + return 0 + ;; + -d) + COMPREPLY=( $( compgen -d -- "$cur" ) ) + return 0 + ;; + -V) + COMPREPLY=( $( compgen -W "? \ + $(sbopkg -V ? 2>&1 | cut -s -f1)" -- "$cur" ) ) + return 0 + ;; + -i|-b) + ;; + *) + return 0 + ;; + esac + + local config="/etc/sbopkg/sbopkg.conf" + + for (( i=${#COMP_WORDS[@]}-1; i>0; i-- )); do + if [[ "${COMP_WORDS[i]}" == -f ]]; then + config="${COMP_WORDS[i+1]}" + break + fi + done + + if [ ! -r "$config" ]; then + return 0 + fi + + . $config + + for (( i=1; i<${#COMP_WORDS[@]}; i++ )); do + case "${COMP_WORDS[i]}" in + -V) + REPO_NAME="${COMP_WORDS[i+1]%%/*}" + REPO_BRANCH="${COMP_WORDS[i+1]#*/}" + ;; + -d) + REPO_ROOT="${COMP_WORDS[i+1]}" + ;; + esac + done + + if [ ! -r "$REPO_ROOT/$REPO_NAME/$REPO_BRANCH/SLACKBUILDS.TXT" ]; then + return 0 + fi + COMPREPLY=( $( 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 -o filenames -F _sbopkg sbopkg