Implemented very simple completions for stack exec and stack test based on a local .cabal file
This commit is contained in:
parent
d848c94804
commit
a6bf707ec5
@ -1,6 +1,23 @@
|
|||||||
|
function _stack_package_name() {
|
||||||
|
grep "^name: [^ ]*" *.cabal | sed "s/name: *//" | sed "s/--.*//"
|
||||||
|
}
|
||||||
|
|
||||||
|
function _stack_exes() {
|
||||||
|
grep "^executable [^ ]*" *.cabal | sed "s/executable //" | sed "s/--.*//"
|
||||||
|
}
|
||||||
|
|
||||||
|
function _stack_tests() {
|
||||||
|
PACK_NAME="$(_stack_package_name)"
|
||||||
|
grep "^test-suite [^ ]*" *.cabal | sed "s/test-suite //" | sed "s/--.*//" | sed "s/\(.*\)/$PACK_NAME:\1/"
|
||||||
|
}
|
||||||
|
|
||||||
function _stack_commands() {
|
function _stack_commands() {
|
||||||
local ret=1 state
|
local ret=1
|
||||||
_arguments ':subcommand:->subcommand' && ret=0
|
|
||||||
|
_arguments \
|
||||||
|
'1: :->subcommand'\
|
||||||
|
'2: :->options'\
|
||||||
|
'*: :->flags' && ret=0
|
||||||
|
|
||||||
case $state in
|
case $state in
|
||||||
subcommand)
|
subcommand)
|
||||||
@ -29,8 +46,25 @@ function _stack_commands() {
|
|||||||
"docker:Subcommands specific to Docker use"
|
"docker:Subcommands specific to Docker use"
|
||||||
)
|
)
|
||||||
_describe -t subcommands 'stack subcommands' subcommands && ret=0
|
_describe -t subcommands 'stack subcommands' subcommands && ret=0
|
||||||
|
;;
|
||||||
|
options)
|
||||||
|
case $words[2] in
|
||||||
|
'exec')
|
||||||
|
compadd "$@" `_stack_exes`
|
||||||
|
;;
|
||||||
|
'test')
|
||||||
|
compadd "$@" `_stack_tests`
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
_files
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
case $words[2] in
|
||||||
|
*)
|
||||||
|
_files
|
||||||
|
esac
|
||||||
esac
|
esac
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user