diff options
Diffstat (limited to 'completions/sbopkg')
-rw-r--r-- | completions/sbopkg | 45 |
1 files changed, 21 insertions, 24 deletions
diff --git a/completions/sbopkg b/completions/sbopkg index 16bd58f..a2fc5a6 100644 --- a/completions/sbopkg +++ b/completions/sbopkg @@ -1,31 +1,30 @@ # bash completion for sbopkg(8) -*- shell-script -*- -_sbopkg() +_comp_cmd_sbopkg() { - local cur prev words cword - _init_completion || return + local cur prev words cword comp_args + _comp_initialize -- "$@" || return if [[ $cur == -* ]]; then - COMPREPLY=($(compgen -W '$(_parse_help "$1" -h)' -- "$cur")) + _comp_compgen_help -- -h [[ ${COMPREPLY-} ]] && return fi case "$prev" in -e) - COMPREPLY=($(compgen -W 'ask continue stop' -- "$cur")) + _comp_compgen -- -W 'ask continue stop' return ;; -f) - _filedir + _comp_compgen_filedir return ;; -d) - _filedir -d + _comp_compgen_filedir -d return ;; -V) - COMPREPLY=($(compgen -W "? - $(sbopkg -V '?' 2>&1 | cut -s -f1)" -- "$cur")) + _comp_compgen_split -- "? $(sbopkg -V '?' 2>&1 | cut -s -f1)" return ;; -i | -b) ;; @@ -35,20 +34,20 @@ _sbopkg() ;; esac - local i config + local i REPLY config config="/etc/sbopkg/sbopkg.conf" - for ((i = ${#words[@]} - 1; i > 0; i--)); do + for ((i = ${#words[@]} - 2; i > 0; i--)); do if [[ ${words[i]} == -f ]]; then - config="${words[i + 1]}" - __expand_tilde_by_ref config + _comp_expand_tilde "${words[i + 1]}" + config=$REPLY break fi done - [[ -r $config ]] || return - . $config + [[ -f $config && -r $config ]] || return + . "$config" - for ((i = 1; i < ${#words[@]}; i++)); do + for ((i = 1; i < ${#words[@]} - 1; i++)); do case "${words[i]}" in -V) REPO_NAME="${words[i + 1]%%/*}" @@ -59,15 +58,13 @@ _sbopkg() ;; esac done - [[ -r $REPO_ROOT/$REPO_NAME/$REPO_BRANCH/SLACKBUILDS.TXT ]] || return + local file=${REPO_ROOT-}/${REPO_NAME-}/${REPO_BRANCH-}/SLACKBUILDS.TXT + [[ -f $file && -r $file ]] || 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" - )) + _comp_compgen_split -l -- "$(command sed -ne "s/^SLACKBUILD NAME: //p" \ + "$file")" + _comp_compgen -aC "$QUEUEDIR" -- -f -X "!*.sqf" } && - complete -F _sbopkg sbopkg + complete -F _comp_cmd_sbopkg sbopkg # ex: filetype=sh |