summaryrefslogtreecommitdiff
path: root/src/rebar.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/rebar.erl')
-rw-r--r--src/rebar.erl50
1 files changed, 44 insertions, 6 deletions
diff --git a/src/rebar.erl b/src/rebar.erl
index 5121f59..1b502b1 100644
--- a/src/rebar.erl
+++ b/src/rebar.erl
@@ -38,7 +38,7 @@
%% ====================================================================
main(Args) ->
- case catch(rebar_core:run(Args)) of
+ case catch(run(Args)) of
ok ->
ok;
{error, failed} ->
@@ -49,6 +49,48 @@ main(Args) ->
halt(1)
end.
+%% ====================================================================
+%% Internal functions
+%% ====================================================================
+
+run(RawArgs) ->
+ %% Pre-load the rebar app so that we get default configuration
+ ok = application:load(rebar),
+ %% Parse out command line arguments -- what's left is a list of commands to
+ %% run -- and start running commands
+ run_aux(parse_args(RawArgs)).
+
+run_aux(["help"]) ->
+ help(),
+ ok;
+run_aux(["version"]) ->
+ %% Display vsn and build time info
+ version(),
+ ok;
+run_aux(Commands) ->
+ %% Make sure crypto is running
+ ok = crypto:start(),
+
+ %% Initialize logging system
+ rebar_log:init(),
+
+ %% Convert command strings to atoms
+ CommandAtoms = [list_to_atom(C) || C <- Commands],
+
+ %% Determine the location of the rebar executable; important for pulling
+ %% resources out of the escript
+ rebar_config:set_global(escript, filename:absname(escript:script_name())),
+ ?DEBUG("Rebar location: ~p\n", [rebar_config:get_global(escript, undefined)]),
+
+ %% Note the top-level directory for reference
+ rebar_config:set_global(base_dir, filename:absname(rebar_utils:get_cwd())),
+
+ %% Keep track of how many operations we do, so we can detect bad commands
+ erlang:put(operations, 0),
+
+ %% Process each command, resetting any state between each one
+ rebar_core:process_commands(CommandAtoms).
+
%%
%% print help/usage string
%%
@@ -94,7 +136,7 @@ parse_args(Args) ->
{error, {Reason, Data}} ->
?ERROR("Error: ~s ~p~n~n", [Reason, Data]),
- rebar:help(),
+ help(),
halt(1)
end.
@@ -106,10 +148,6 @@ version() ->
?CONSOLE("rebar version: ~s date: ~s vcs: ~s\n", [Vsn, ?BUILD_TIME, ?VCS_INFO]).
-%% ====================================================================
-%% Internal functions
-%% ====================================================================
-
%%
%% set global flag based on getopt option boolean value
%%