summaryrefslogtreecommitdiffstats
path: root/completions/carton
diff options
context:
space:
mode:
Diffstat (limited to 'completions/carton')
-rw-r--r--completions/carton60
1 files changed, 37 insertions, 23 deletions
diff --git a/completions/carton b/completions/carton
index 5d700c8..7f99c90 100644
--- a/completions/carton
+++ b/completions/carton
@@ -1,81 +1,95 @@
# carton(3pm) completion -*- shell-script -*-
-_carton_commands()
+_comp_cmd_carton__commands()
{
- local cmds=$("${1:-carton}" usage 2>&1 |
+ local cmds=$("$1" usage 2>&1 |
command sed -ne '/.*command.* is one of/{n;p;q;}')
- COMPREPLY+=($(IFS="$IFS," compgen -W "$cmds" -- "$cur"))
+ _comp_compgen -aF $' \t\n,' -- -W "$cmds"
}
-_carton_command_help()
+_comp_cmd_carton__command_help()
{
- local help=$(PERLDOC_PAGER=cat PERLDOC=-otext "${1:-carton}" -h $2 2>&1)
- COMPREPLY+=($(compgen -W '$help' -- "$cur"))
+ local help=$(PERLDOC_PAGER=cat PERLDOC=-otext "$1" -h "$2" 2>&1)
+ _comp_compgen -a -- -W '$help'
}
-_carton()
+_comp_cmd_carton()
{
- local cur prev words cword split
- _init_completion -s || return
+ local cur prev words cword was_split comp_args
+ _comp_initialize -s -- "$@" || return
- local i command
+ local i command="" has_command=""
for ((i = 1; i < cword; i++)); do
case ${words[i]} in
-*) ;;
*)
command=${words[i]}
+ has_command=set
break
;;
esac
done
- if [[ ! -v command ]]; then
- _carton_commands "$1"
+ if [[ ! $has_command ]]; then
+ _comp_cmd_carton__commands "$1"
return
fi
case $prev in
- --version | -v)
- return
- ;;
- --help | -h)
- [[ -n $command ]] || _carton_commands "$1"
+ --version | --help | -[vh])
return
;;
--cpanfile)
if [[ $command == install ]]; then
- _filedir
+ _comp_compgen_filedir
return
fi
;;
--path)
if [[ $command == install ]]; then
- _filedir -d
+ _comp_compgen_filedir -d
return
fi
;;
--without)
if [[ $command == install ]]; then
local phases="configure build test runtime develop"
- COMPREPLY+=($(compgen -W '$phases' -- "$cur"))
+ _comp_compgen -a -- -W '$phases'
return
fi
;;
esac
- $split && return
+ [[ $was_split ]] && return
if [[ $cur == -* ]]; then
[[ $command == @(help|usage) ]] || COMPREPLY=(--help)
- _carton_command_help "$1" $command
+ _comp_cmd_carton__command_help "$1" "$command"
fi
case $command in
+ exec)
+ # skip all the options --, -v, etc. and identify the command name
+ # position.
+ for ((i++; i < cword; i++)); do
+ case ${words[i]} in
+ --)
+ ((i++))
+ break
+ ;;
+ -*) ;;
+ *) break ;;
+ esac
+ done
+
+ _comp_command_offset "$i"
+ return
+ ;;
show | update)
: # TODO modules completion
;;
esac
} &&
- complete -F _carton carton
+ complete -F _comp_cmd_carton carton
# ex: filetype=sh