From 519e1c8d1658536f9a1e978a3f0c64e3c73a04a5 Mon Sep 17 00:00:00 2001 From: Joe DeVivo Date: Mon, 25 Aug 2014 09:58:52 -0700 Subject: [PATCH 1/2] fish shell completions for rebar --- priv/shell-completion/fish/rebar.fish | 189 ++++++++++++++++++++++++++ 1 file changed, 189 insertions(+) create mode 100644 priv/shell-completion/fish/rebar.fish diff --git a/priv/shell-completion/fish/rebar.fish b/priv/shell-completion/fish/rebar.fish new file mode 100644 index 0000000..5dcd9fd --- /dev/null +++ b/priv/shell-completion/fish/rebar.fish @@ -0,0 +1,189 @@ +## fish completions for rebar 2.5.0 + +function __fish_rebar_needs_command + set cmd (commandline -opc) + if [ (count $cmd) -eq 1 -a $cmd[1] = 'rebar' ] + return 0 + end + return 1 +end + +function __fish_rebar_using_command + set cmd (commandline -opc) + if [ (count $cmd) -gt 1 ] + if [ $argv[1] = $cmd[2] ] + return 0 + end + end + return 1 +end + +## Rebar Command Output +## ➜ ~ rebar --version +## rebar 2.5.0 R16B02 20140716_213805 git 2.5.0-14-g1e7c742 +## ➜ ~ rebar --help +## Usage: rebar [-h] [-c] [-v ] [-q ] [-V] [-f] +## [-D ] [-j ] [-C ] [-p] [-k] +## [-r ] [var=value,...] +## +## -h, --help Show the program options +## -c, --commands Show available commands +## -v, --verbose Verbosity level (-v, -vv) +## -q, --quiet Quiet, only print error messages +## -V, --version Show version information +## -f, --force Force +## -D Define compiler macro +## -j, --jobs Number of concurrent workers a command may use. +## Default: 3 +## -C, --config Rebar config file to use +## -p, --profile Profile this run of rebar +## -k, --keep-going Keep running after a command fails +## -r, --recursive Apply commands to subdirs and dependencies +## var=value rebar global variables (e.g. force=1) +## command Command to run (e.g. compile) +## +## To see a list of built-in commands, execute rebar -c. +## +## Type 'rebar help ' for help on specific commands. + +# general options +complete -f -c rebar -n 'not __fish_rebar_needs_command' -l help -d 'Display the manual of a rebar command' + +## Flags +complete -c rebar -s h -l help -d "Show the program options" +complete -c rebar -s c -l commands -d "Show available commands" +complete -c rebar -s v -l verbose -d "Verbosity level (-v, -vv, -vvv, --verbose 3). Default: 0" +complete -c rebar -s vv -d "Verbosity level 2" +complete -c rebar -s vvv -d "Verbosity level 2" +complete -c rebar -s q -l quiet -d "Quiet, only print error messages" +complete -c rebar -s V -l version -d "Show version information" +complete -c rebar -s f -l force -d "Force" +complete -c rebar -s D -d "Define compiler macro" +complete -c rebar -s j -l jobs -d "Number of concurrent workers a command may use. Default: 3" +complete -c rebar -s C -l config -d "Rebar config file to use" +complete -c rebar -s p -l profile -d "Profile this run of rebar" +complete -c rebar -s k -l keep-going -d "Keep running after a command fails" +complete -c rebar -s r -l recursive -d "Apply commands to subdirs and dependencies" + + +## Not going to cover abbreviations, since this is for completions anyway :D +## rebar allows you to abbreviate the command to run: +## $ rebar co # same as rebar compile +## $ rebar eu # same as rebar eunit +## $ rebar g-d # same as rebar get-deps +## $ rebar x eu # same as rebar xref eunit +## $ rebar l-d # same as rebar list-deps +## $ rebar l-d l-t # same as rebar list-deps list-templates +## $ rebar list-d l-te # same as rebar list-deps list-templates +## +## Core command line options: +## apps=app1,app2 (specify apps to process) +## skip_apps=app1,app2 (specify apps to skip) + +## COMMANDS! +## ➜ ~ rebar -c +## clean Clean +complete -f -c rebar -n '__fish_rebar_needs_command' -a clean -d 'Clean' + +## compile Compile sources +complete -f -c rebar -n '__fish_rebar_needs_command' -a compile -d 'Compile sources' + +## escriptize Generate escript archive +complete -f -c rebar -n '__fish_rebar_needs_command' -a escriptize -d 'Generate escript archive' + +## create template= [var=foo,...] Create skel based on template and vars +complete -f -c rebar -n '__fish_rebar_needs_command' -a create -d 'Create skel based on template and vars' +complete -f -c rebar -n '__fish_rebar_using_command create' -a 'template=' -d 'Template name' + +## create-app [appid=myapp] Create simple app skel +complete -f -c rebar -n '__fish_rebar_needs_command' -a create-app -d 'Create simple app skel' +complete -f -c rebar -n '__fish_rebar_using_command create-app' -a 'appid=' -d 'Application name' + +## create-lib [libid=mylib] Create simple lib skel +complete -f -c rebar -n '__fish_rebar_needs_command' -a create-lib -d 'Create simple lib skel' +complete -f -c rebar -n '__fish_rebar_using_command create-lib' -a 'libid=' -d 'Library name' + +## create-node [nodeid=mynode] Create simple node skel +complete -f -c rebar -n '__fish_rebar_needs_command' -a create-node -d 'Create simple node skel' +complete -f -c rebar -n '__fish_rebar_using_command create-node' -a 'nodeid=' -d 'Node name' + +## list-templates List available templates +complete -f -c rebar -n '__fish_rebar_needs_command' -a list-templates -d 'List available templates' + +## doc Generate Erlang program documentation +complete -f -c rebar -n '__fish_rebar_needs_command' -a doc -d 'Generate Erlang program documentation' + +## prepare-deps Run 'rebar -r get-deps compile' +complete -f -c rebar -n '__fish_rebar_needs_command' -a prepare-deps -d 'Prepare Dependencies' + +## refresh-deps Run 'rebar -r update-deps compile' +complete -f -c rebar -n '__fish_rebar_needs_command' -a refresh-deps -d 'Refresh Dependencies' + +## check-deps Display to be fetched dependencies +complete -f -c rebar -n '__fish_rebar_needs_command' -a check-deps -d 'Display to be fetched dependencies' + +## get-deps Fetch dependencies +complete -f -c rebar -n '__fish_rebar_needs_command' -a get-deps -d 'Fetch dependencies' + +## update-deps Update fetched dependencies +complete -f -c rebar -n '__fish_rebar_needs_command' -a update-deps -d 'Update fetched dependencies' + +## delete-deps Delete fetched dependencies +complete -f -c rebar -n '__fish_rebar_needs_command' -a delete-deps -d 'Delete fetched dependencies' + +## list-deps List dependencies +complete -f -c rebar -n '__fish_rebar_needs_command' -a list-deps -d 'List Dependencies' + +## generate [dump_spec=0/1] Build release with reltool +complete -f -c rebar -n '__fish_rebar_needs_command' -a generate -d 'Build release with reltool' +complete -f -c rebar -n '__fish_rebar_using_command generate' -a 'dump_spec=0 dump_spec=1' + +## overlay Run reltool overlays only +complete -f -c rebar -n '__fish_rebar_needs_command' -a overlay -d 'Run reltool overlays only' + +## generate-upgrade previous_release=path Build an upgrade package +complete -f -c rebar -n '__fish_rebar_needs_command' -a generate-upgrade -d 'Build an upgrade package' +complete -f -c rebar -n '__fish_rebar_using_command generate-upgrade' -a 'previous_release=' + +## generate-appups previous_release=path Generate appup files +complete -f -c rebar -n '__fish_rebar_needs_command' -a generate-appups -d 'Generate appup files' +complete -f -c rebar -n '__fish_rebar_using_command generate-appups' -a 'previous_release=' + +## eunit [suite[s]=foo] Run EUnit tests in foo.erl and +## test/foo_tests.erl +## [suite[s]=foo] [test[s]=bar] Run specific EUnit tests [first test +## name starting with 'bar' in foo.erl +## and test/foo_tests.erl] +## [test[s]=bar] For every existing suite, run the first +## test whose name starts with bar and, if +## no such test exists, run the test whose +## name starts with bar in the suite's +## _tests module. +## [random_suite_order=true] Run tests in a random order, either +## [random_suite_order=Seed] with a random seed for the PRNG, or a +## specific one. +complete -f -c rebar -n '__fish_rebar_needs_command' -a eunit -d 'Run EUnit tests' +complete -f -c rebar -n '__fish_rebar_using_command eunit' -a 'suites=' +complete -f -c rebar -n '__fish_rebar_using_command eunit' -a 'tests=' +complete -f -c rebar -n '__fish_rebar_using_command eunit' -a 'random_suite_order=' + +## ct [suite[s]=] [case=] Run common_test suites +complete -f -c rebar -n '__fish_rebar_needs_command' -a ct -d 'Run common_test suites' +complete -f -c rebar -n '__fish_rebar_using_command ct' -a 'suites=' +complete -f -c rebar -n '__fish_rebar_using_command ct' -a 'case=' + +## qc Test QuickCheck properties +complete -f -c rebar -n '__fish_rebar_needs_command' -a qc -d 'Test QuickCheck properties' + +## xref Run cross reference analysis +complete -f -c rebar -n '__fish_rebar_needs_command' -a xref -d 'Run cross reference analysis' + +## shell Start a shell similar to +## 'erl -pa ebin -pa deps/*/ebin' +complete -f -c rebar -n '__fish_rebar_needs_command' -a shell -d 'Start a shell' + +## help Show the program options +complete -f -c rebar -n '__fish_rebar_needs_command' -a help -d 'Show the program options' + +## version Show version information +complete -f -c rebar -n '__fish_rebar_needs_command' -a version -d 'Show version information' From 0a54123ff21caf208b4259970df36f5361a0df05 Mon Sep 17 00:00:00 2001 From: Joe DeVivo Date: Mon, 25 Aug 2014 11:20:09 -0700 Subject: [PATCH 2/2] added fish support for './rebar' --- priv/shell-completion/fish/rebar.fish | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/priv/shell-completion/fish/rebar.fish b/priv/shell-completion/fish/rebar.fish index 5dcd9fd..b00037e 100644 --- a/priv/shell-completion/fish/rebar.fish +++ b/priv/shell-completion/fish/rebar.fish @@ -2,7 +2,7 @@ function __fish_rebar_needs_command set cmd (commandline -opc) - if [ (count $cmd) -eq 1 -a $cmd[1] = 'rebar' ] + if [ (count $cmd) -eq 1 -a $cmd[1] = 'rebar' -o $cmd[1] = './rebar' ] return 0 end return 1