summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rebar_core.erl22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/rebar_core.erl b/src/rebar_core.erl
index c7790cd..7c94504 100644
--- a/src/rebar_core.erl
+++ b/src/rebar_core.erl
@@ -79,6 +79,9 @@ run(RawArgs) ->
%% 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
process_commands(CommandAtoms).
@@ -275,12 +278,26 @@ filter_flags([Item | Rest], Commands) ->
end.
process_commands([]) ->
- ok;
+ case erlang:get(operations) of
+ 0 ->
+ %% none of the commands had an effect
+ ?FAIL;
+ _ ->
+ ok
+ end;
process_commands([Command | Rest]) ->
%% Reset skip dirs
[erlang:erase({skip_dir, D}) || D <- skip_dirs()],
+ Operations = erlang:get(operations),
process_dir(rebar_utils:get_cwd(), rebar_config:new(), Command, sets:new()),
+ case erlang:get(operations) of
+ Operations ->
+ %% This command didn't do anything
+ ?CONSOLE("Command '~p' not understood\n", [Command]);
+ _ ->
+ ok
+ end,
process_commands(Rest).
@@ -417,6 +434,9 @@ execute(Command, Modules, Config, ModuleFile) ->
Dir = rebar_utils:get_cwd(),
?CONSOLE("==> ~s (~s)\n", [filename:basename(Dir), Command]),
+ %% Increment the count of operations, since some module responds to this command
+ erlang:put(operations, erlang:get(operations) + 1),
+
%% Run the available modules
case catch(run_modules(TargetModules, Command, Config, ModuleFile)) of
ok ->