summaryrefslogtreecommitdiff
path: root/completions/makepkg
diff options
context:
space:
mode:
Diffstat (limited to 'completions/makepkg')
-rw-r--r--completions/makepkg34
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