diff options
Diffstat (limited to 'completions/makepkg')
-rw-r--r-- | completions/makepkg | 34 |
1 files changed, 28 insertions, 6 deletions
diff --git a/completions/makepkg b/completions/makepkg index 84b4af79..98edda8f 100644 --- a/completions/makepkg +++ b/completions/makepkg @@ -1,25 +1,47 @@ -# Slackware Linux makepkg completion -*- shell-script -*- +# makepkg completion -*- shell-script -*- -_makepkg() +# Slackware Linux variant +_makepkg_slackware() { local cur prev words cword _init_completion || return case "$prev" in -l|--linkadd|-c|--chown) - COMPREPLY=( $( compgen -W 'y n' -- "$cur" ) ) + COMPREPLY=( $(compgen -W 'y n' -- "$cur") ) return ;; esac if [[ "$cur" == -* ]]; then - COMPREPLY=( $( compgen -W '-l --linkadd -p --prepend -c --chown' \ - -- "$cur" ) ) + COMPREPLY=( $(compgen -W \ + '$1 | command sed -e "s/^options://" | _parse_help -' -- "$cur") ) return fi _filedir +} + +_makepkg_bootstrap() +{ + local fname help + + # Use --help to detect variant; the Slackware one starts making + # a package for unknown args, including --version :P + help=$("$1" --help 2>&1) + case ${help,,} in + *slackware*) + fname=_makepkg_slackware + ;; + *) + fname=_minimal + ;; + esac + + unset -f _makepkg_bootstrap + complete -F $fname makepkg + $fname } && -complete -F _makepkg makepkg +complete -F _makepkg_bootstrap makepkg # ex: filetype=sh |