Use stack internal

This commit is contained in:
Cypher 2017-08-10 22:51:51 +10:00
parent a6bf707ec5
commit 52fcfdd687

View File

@ -1,71 +1,3 @@
function _stack_package_name() { autoload -U +X compinit && compinit
grep "^name: [^ ]*" *.cabal | sed "s/name: *//" | sed "s/--.*//" autoload -U +X bashcompinit && bashcompinit
} eval "$(stack --bash-completion-script stack)"
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() {
local ret=1
_arguments \
'1: :->subcommand'\
'2: :->options'\
'*: :->flags' && ret=0
case $state in
subcommand)
subcommands=(
"build:Build the project(s) in this directory/configuration"
"install:Build executables and install to a user path"
"test:Build and test the project(s) in this directory/configuration"
"bench:Build and benchmark the project(s) in this directory/configuration"
"haddock:Generate haddocks for the project(s) in this directory/configuration"
"new:Create a brand new project"
"init:Initialize a stack project based on one or more stack packages"
"solver:Use a dependency solver to try and determine missing extra-deps"
"setup:Get the appropriate ghc for your project"
"path:Print out handy path information"
"unpack:Unpack one or more packages locally"
"update:Update the package index"
"upgrade:Upgrade to the latest stack (experimental)"
"upload:Upload a package to Hackage"
"dot:Visualize your project's dependency graph using Graphviz dot"
"exec:Execute a command"
"ghc:Run ghc"
"ghci:Run ghci in the context of project(s)"
"ide:Run ide-backend-client with the correct arguments"
"runghc:Run runghc"
"clean:Clean the local packages"
"docker:Subcommands specific to Docker use"
)
_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
return ret
}
compdef _stack_commands stack