summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/rebar_prv_compile.erl32
1 files changed, 25 insertions, 7 deletions
diff --git a/src/rebar_prv_compile.erl b/src/rebar_prv_compile.erl
index 0b4fa5f..edb2d82 100644
--- a/src/rebar_prv_compile.erl
+++ b/src/rebar_prv_compile.erl
@@ -30,22 +30,41 @@ init(State) ->
{example, "rebar3 compile"},
{short_desc, "Compile apps .app.src and .erl files."},
{desc, "Compile apps .app.src and .erl files."},
- {opts, []}])),
+ {opts, [{deps_only, $d, "deps_only", undefined,
+ "Only compile dependencies, no project apps will be built."}]}])),
{ok, State1}.
-spec do(rebar_state:t()) -> {ok, rebar_state:t()} | {error, string()}.
do(State) ->
+ IsDepsOnly = is_deps_only(State),
DepsPaths = rebar_state:code_paths(State, all_deps),
PluginDepsPaths = rebar_state:code_paths(State, all_plugin_deps),
rebar_utils:remove_from_code_path(PluginDepsPaths),
code:add_pathsa(DepsPaths),
- ProjectApps = rebar_state:project_apps(State),
Providers = rebar_state:providers(State),
Deps = rebar_state:deps_to_build(State),
- Cwd = rebar_state:dir(State),
-
copy_and_build_apps(State, Providers, Deps),
+
+ State1 = case IsDepsOnly of
+ true ->
+ State;
+ false ->
+ handle_project_apps(DepsPaths, Providers, State)
+ end,
+
+ rebar_utils:cleanup_code_path(rebar_state:code_paths(State1, default)
+ ++ rebar_state:code_paths(State, all_plugin_deps)),
+
+ {ok, State1}.
+
+is_deps_only(State) ->
+ {Args, _} = rebar_state:command_parsed_args(State),
+ proplists:get_value(deps_only, Args, false).
+
+handle_project_apps(DepsPaths, Providers, State) ->
+ Cwd = rebar_state:dir(State),
+ ProjectApps = rebar_state:project_apps(State),
{ok, ProjectApps1} = rebar_digraph:compile_order(ProjectApps),
%% Run top level hooks *before* project apps compiled but *after* deps are
@@ -66,10 +85,9 @@ do(State) ->
true ->
true
end,
- rebar_utils:cleanup_code_path(rebar_state:code_paths(State3, default)
- ++ rebar_state:code_paths(State, all_plugin_deps)),
- {ok, State3}.
+ State3.
+
-spec format_error(any()) -> iolist().
format_error({missing_artifact, File}) ->