#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' \
        'dialyze[Analyze the code for discrepancies]' \
        'build-plt[Build project-specific PLT]' \
        'check-plt[Check the plt for consistency and rebuild it if it is not up-to-date]' \
        '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 available 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]:' \
        'profiler[Select profiler]::flag:(fprof eflame)' \
        'nodeid[Node id]:' \
        'root_dir[Reltool config root directory]::directory:_files -/' \
        'shell[Start a shell similar to erl -pa ebin -pa deps/*/ebin]' \
        '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
