mirror of
https://github.com/correl/rebar.git
synced 2024-12-26 19:16:55 +00:00
77a0eb6fe4
Always-on recursive application of all rebar commands causes too many issues. Recursive application is required for: 1. dealing with dependencies: get-deps, update-deps, and compile of deps right after get-deps or update-deps 2. projects with a riak-like apps/ project structure and dev process The vast majority of projects are not structured like riak. Therefore, moving forward it's best to (by default) restrict recursive behavior to dealing with deps. This commit does that and also adds command line and rebar.config options for controlling or configuring recursion. Also, we introduce two meta commands: prepare-deps (equivalent to rebar -r get-deps compile) and refresh-deps (equivalent to rebar -r update-deps compile). riak-like projects can extend the list of recursive commands (to include 'eunit' and 'compile') by adding {recursive_cmds, [eunit, compile]} to rebar.config.
87 lines
3.4 KiB
Bash
87 lines
3.4 KiB
Bash
#compdef rebar
|
|
|
|
local curcontext=$curcontext state ret=1
|
|
typeset -ga _rebar_global_opts
|
|
|
|
_rebar_global_opts=(
|
|
'(--help -h)'{--help,-h}'[Show the program options]'
|
|
'(--commands -c)'{--commands,-c}'[Show available commands]'
|
|
'(--version -V)'{--version,-V}'[Show version information]'
|
|
'(-vv -v)'--verbose'[Enforce verbosity level]'
|
|
'(-vv)-v[Slightly more verbose output]'
|
|
'(-v)-vv[More verbose output]'
|
|
'(-vv -v --verbose)'{--quiet,-q}'[Quiet, only print error messages]'
|
|
'(--force -f)'{--force,-f}'[Force]'
|
|
'-D+[Define compiler macro]'
|
|
'(--jobs -j)'{--jobs+,-j+}'[Number of concurrent workers a command may use. Default: 3]:workers:(1 2 3 4 5 6 7 8 9)'
|
|
'(--config -C)'{--config,-C}'[Rebar config file to use]:files:_files'
|
|
'(--profile -p)'{--profile,-p}'[Profile this run of rebar]'
|
|
'(--keep-going -k)'{--keep-going,-k}'[Keep running after a command fails]'
|
|
'(--recursive -r)'{--recursive,-r}'[Apply commands to subdirs and dependencies]'
|
|
)
|
|
|
|
_rebar () {
|
|
_arguments -C $_rebar_global_opts \
|
|
'*::command and variable:->cmd_and_var' \
|
|
&& return
|
|
|
|
case $state in
|
|
cmd_and_var)
|
|
_values -S = 'variables' \
|
|
'clean[Clean]' \
|
|
'compile[Compile sources]' \
|
|
'create[Create skel based on template and vars]' \
|
|
'create-app[Create simple app skel]' \
|
|
'create-lib[Create simple lib skel]' \
|
|
'create-node[Create simple node skel]' \
|
|
'list-template[List avaiavle templates]' \
|
|
'doc[Generate Erlang program documentation]' \
|
|
'check-deps[Display to be fetched dependencies]' \
|
|
'prepare-deps[Fetch and build dependencies]' \
|
|
'refresh-deps[Update and build dependencies]' \
|
|
'get-deps[Fetch dependencies]' \
|
|
'update-deps[Update fetched dependencies]' \
|
|
'delete-deps[Delete fetched dependencies]' \
|
|
'list-deps[List dependencies]' \
|
|
'generate[Build release with reltool]' \
|
|
'overlay[Run reltool overlays only]' \
|
|
'generate-appups[Generate appup files]' \
|
|
'generate-upgrade[Build an upgrade package]' \
|
|
'escriptize[Create stand-alone escript executable]' \
|
|
'eunit[Run eunit tests]' \
|
|
'ct[Run common_test suites]' \
|
|
'qc[Test QuickCheck properties]' \
|
|
'xref[Run cross reference analysis]' \
|
|
'help[Show the program options]' \
|
|
'version[Show version information]' \
|
|
'apps[Application names to process]:' \
|
|
'case[Common Test case]:' \
|
|
'dump_spec[Dump reltool spec]::flag:(1)' \
|
|
'jobs[Number of workers]::workers:(0 1 2 3 4 5 6 7 8 9)' \
|
|
'suites[Common Test suites]::suite name:_path_files -W "(src test)" -g "*.erl(:r)"' \
|
|
'verbose[Verbosity level]::verbosity level:(0 1 2 3)' \
|
|
'appid[Application id]:' \
|
|
'overlay_vars[Overlay variables file]:' \
|
|
'previous_release[Previous release path]:' \
|
|
'nodeid[Node id]:' \
|
|
'root_dir[Reltool config root directory]::directory:_files -/' \
|
|
'skip_deps[Skip deps]::flag:(true false)' \
|
|
'skip_apps[Application names to not process]::flag:(true false)' \
|
|
'target_dir[Target directory]:' \
|
|
'template[Template name]:' \
|
|
'template_dir[Template directory]::directory:_files -/' \
|
|
'tests[Run eunit tests whose name starts with given string]:' \
|
|
&& ret=0
|
|
;;
|
|
esac
|
|
}
|
|
|
|
_rebar
|
|
|
|
# Local variables:
|
|
# mode: shell-script
|
|
# sh-basic-offset: 2
|
|
# sh-indent-comment: t
|
|
# indent-tabs-mode: nil
|
|
# End:
|
|
# ex: sw=2 ts=2 et filetype=sh
|