From 914e5fbf68fc87077af4da90d006c12892f59084 Mon Sep 17 00:00:00 2001 From: Tuncer Ayaz Date: Mon, 3 May 2010 11:38:27 +0200 Subject: New commands and opts (-V/--version/version/help) --- src/rebar_core.erl | 49 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 34 insertions(+), 15 deletions(-) (limited to 'src/rebar_core.erl') diff --git a/src/rebar_core.erl b/src/rebar_core.erl index 750cea7..e021fc1 100644 --- a/src/rebar_core.erl +++ b/src/rebar_core.erl @@ -41,11 +41,13 @@ %% Public API %% =================================================================== +run(["help"]) -> + help(), + ok; run(["version"]) -> %% Load application spec and display vsn and build time info ok = application:load(rebar), - {ok, Vsn} = application:get_key(rebar, vsn), - ?CONSOLE("Version ~s built ~s\n", [Vsn, ?BUILD_TIME]), + version(), ok; run(RawArgs) -> %% Pre-load the rebar app so that we get default configuration @@ -87,7 +89,7 @@ parse_args(Args) -> case getopt:parse(OptSpecList, Args) of {ok, {Options, NonOptArgs}} -> %% Check options and maybe halt execution - {ok, continue} = print_help_maybe_halt(Options, NonOptArgs), + {ok, continue} = show_info_maybe_halt(Options, NonOptArgs), %% Set global variables based on getopt options set_global_flag(Options, verbose), @@ -123,26 +125,32 @@ set_global_flag(Options, Flag) -> rebar_config:set_global(Flag, Value). %% -%% print help and maybe halt execution +%% show info and maybe halt execution %% -print_help_maybe_halt(Options, NonOptArgs) -> - case proplists:get_bool(help, Options) of +show_info_maybe_halt(Opts, NonOptArgs) -> + case proplists:get_bool(help, Opts) of true -> help(), halt(0); false -> - case proplists:get_bool(commands, Options) of + case proplists:get_bool(commands, Opts) of true -> commands(), halt(0); false -> - case NonOptArgs of - [] -> - io:format("No command to run specified!~n"), - help(), - halt(1); - _ -> - {ok, continue} + case proplists:get_bool(version, Opts) of + true -> + version(), + halt(0); + false -> + case NonOptArgs of + [] -> + ?CONSOLE("No command to run specified!~n",[]), + help(), + halt(1); + _ -> + {ok, continue} + end end end end. @@ -187,12 +195,22 @@ perf_test [suite=] [case=] Run ct suites in ./perf_test test [suite=] [case=] Run ct suites in ./test xref Run cross reference analysis + +help Show the program options +version Show version information ">>, io:put_chars(S), %% workaround to delay exit until all output is written timer:sleep(300). %% +%% show version information and halt +%% +version() -> + {ok, Vsn} = application:get_key(rebar, vsn), + ?CONSOLE("Version ~s built ~s\n", [Vsn, ?BUILD_TIME]). + +%% %% options accepted via getopt %% option_spec_list() -> @@ -205,6 +223,7 @@ option_spec_list() -> {help, $h, "help", undefined, "Show the program options"}, {commands, $c, "commands", undefined, "Show available commands"}, {verbose, $v, "verbose", undefined, "Be verbose about what gets done"}, + {version, $V, "version", undefined, "Show version information"}, {force, $f, "force", undefined, "Force"}, {jobs, $j, "jobs", integer, JobsHelp} ]. @@ -312,7 +331,7 @@ apply_commands([], _Modules, _Config, _ModuleFile) -> apply_commands([Command | Rest], Modules, Config, ModuleFile) -> case select_modules(Modules, Command, []) of [] -> - ?CONSOLE("WARNING: ~p command does not apply to directory ~s\n", + ?CONSOLE("WARNING: '~p' command does not apply to directory ~s\n", [Command, rebar_utils:get_cwd()]), apply_commands(Rest, Modules, Config, ModuleFile); TargetModules -> -- cgit v1.1