diff --git a/src/rebar_prv_path.erl b/src/rebar_prv_path.erl index 4562db8f..5374b0c1 100644 --- a/src/rebar_prv_path.erl +++ b/src/rebar_prv_path.erl @@ -12,7 +12,7 @@ -include("rebar.hrl"). -define(PROVIDER, path). --define(DEPS, [compile]). +-define(DEPS, [app_discovery]). %% =================================================================== %% Public API @@ -54,11 +54,11 @@ filter_apps(RawOpts, State) -> [] -> ProjectDeps = project_deps(State), ProjectApps = rebar_state:project_apps(State), - ProjectApps ++ ProjectDeps; - _ -> - Apps + lists:map(fun(A) -> binary_to_list(rebar_app_info:name(A)) end, ProjectApps) ++ ProjectDeps; + _ -> Apps end. + paths([], _, State, Acc) -> print_paths_if_exist(lists:reverse(Acc), State); paths([{base, true}|Rest], Apps, State, Acc) -> paths(Rest, Apps, State, [base_dir(State)|Acc]); @@ -80,12 +80,12 @@ bin_dir(State) -> io_lib:format("~ts/bin", [rebar_dir:base_dir(State)]). lib_dir(State) -> io_lib:format("~ts", [rebar_dir:deps_dir(State)]). rel_dir(State) -> io_lib:format("~ts/rel", [rebar_dir:base_dir(State)]). -ebin_dirs(Apps, _State) -> - lists:map(fun(App) -> rebar_app_info:ebin_dir(App) end, Apps). -priv_dirs(Apps, _State) -> - lists:map(fun(App) -> rebar_app_info:priv_dir(App) end, Apps). -src_dirs(Apps, _State) -> - lists:map(fun(App) -> filename:join(rebar_app_info:out_dir(App), "src") end, Apps). +ebin_dirs(Apps, State) -> + lists:map(fun(App) -> io_lib:format("~ts/~ts/ebin", [rebar_dir:deps_dir(State), App]) end, Apps). +priv_dirs(Apps, State) -> + lists:map(fun(App) -> io_lib:format("~ts/~ts/priv", [rebar_dir:deps_dir(State), App]) end, Apps). +src_dirs(Apps, State) -> + lists:map(fun(App) -> io_lib:format("~ts/~ts/src", [rebar_dir:deps_dir(State), App]) end, Apps). print_paths_if_exist(Paths, State) -> {RawOpts, _} = rebar_state:command_parsed_args(State), @@ -94,7 +94,18 @@ print_paths_if_exist(Paths, State) -> io:format("~ts", [rebar_string:join(RealPaths, Sep)]). project_deps(State) -> - rebar_state:all_deps(State). + Profiles = rebar_state:current_profiles(State), + DepList = lists:foldl(fun(Profile, Acc) -> rebar_state:get(State, {deps, Profile}, []) ++ Acc end, [], Profiles), + LockList = lists:foldl(fun(Profile, Acc) -> rebar_state:get(State, {locks, Profile}, []) ++ Acc end, [], Profiles), + Deps = [normalize(name(Dep)) || Dep <- DepList++LockList], + lists:usort(Deps). + +name(App) when is_tuple(App) -> element(1, App); +name(Name) when is_binary(Name); is_list(Name); is_atom(Name) -> Name. + +normalize(AppName) when is_list(AppName) -> AppName; +normalize(AppName) when is_atom(AppName) -> atom_to_list(AppName); +normalize(AppName) when is_binary(AppName) -> binary_to_list(AppName). path_opts(_State) -> [{app, undefined, "app", string, help(app)},