diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/rebar_prv_install_deps.erl | 8 | ||||
-rw-r--r-- | src/rebar_prv_lock.erl | 31 |
2 files changed, 26 insertions, 13 deletions
diff --git a/src/rebar_prv_install_deps.erl b/src/rebar_prv_install_deps.erl index ad585b1..faca012 100644 --- a/src/rebar_prv_install_deps.erl +++ b/src/rebar_prv_install_deps.erl @@ -68,7 +68,8 @@ do(State) -> case rebar_state:get(State, locks, []) of [] -> handle_deps(State, ordsets:from_list(rebar_state:get(State, deps, []))); - _Locks -> + Locks -> + handle_deps(State, ordsets:from_list(Locks)), {ok, State} end. @@ -210,8 +211,9 @@ parse_deps(DepsDir, Deps) -> ,ec_cnv:to_binary(Vsn)) | BinaryDepsAcc]}; (Name, {SrcDepsAcc, BinaryDepsAcc}) when is_atom(Name) -> {SrcDepsAcc, [ec_cnv:to_binary(Name) | BinaryDepsAcc]}; - ({Name, _, Source}, {SrcDepsAcc, BinaryDepsAcc}) -> - {ok, Dep} = rebar_app_info:discover(get_deps_dir(DepsDir, Name)), + ({Name, _Vsn, Source}, {SrcDepsAcc, BinaryDepsAcc}) when is_tuple (Source) -> + {ok, Dep} = + rebar_app_info:discover(ec_cnv:to_list(get_deps_dir(DepsDir, Name))), Dep1 = rebar_app_info:source(Dep, Source), {ordsets:add_element(Dep1, SrcDepsAcc), BinaryDepsAcc} end, {ordsets:new(), []}, Deps). diff --git a/src/rebar_prv_lock.erl b/src/rebar_prv_lock.erl index 6aaf7ac..8edfc9a 100644 --- a/src/rebar_prv_lock.erl +++ b/src/rebar_prv_lock.erl @@ -28,16 +28,27 @@ init(State) -> -spec do(rebar_state:t()) -> {ok, rebar_state:t()}. do(State) -> - AllDeps = rebar_state:get(State, all_deps, []), - Locks = lists:map(fun(Dep) -> - Dir = rebar_app_info:dir(Dep), - {rebar_app_info:name(Dep) - ,rebar_app_info:original_vsn(Dep) - ,rebar_fetch:lock_source(Dir, rebar_app_info:source(Dep))} - end, AllDeps), - Dir = rebar_state:dir(State), - file:write_file(filename:join(Dir, "rebar.lock"), io_lib:format("~p.~n", [Locks])), - {ok, rebar_state:set(State, locks, Locks)}. + case rebar_state:get(State, locks, []) of + [] -> + AllDeps = rebar_state:get(State, all_deps, []), + Locks = lists:map(fun(Dep) -> + Dir = rebar_app_info:dir(Dep), + case rebar_app_info:source(Dep) of + Source when is_tuple(Source) -> + {rebar_app_info:name(Dep) + ,rebar_app_info:original_vsn(Dep) + ,rebar_fetch:lock_source(Dir, Source)}; + _Source -> + {rebar_app_info:name(Dep) + ,rebar_app_info:original_vsn(Dep)} + end + end, AllDeps), + Dir = rebar_state:dir(State), + file:write_file(filename:join(Dir, "rebar.lock"), io_lib:format("~p.~n", [Locks])), + {ok, rebar_state:set(State, locks, Locks)}; + _Locks -> + {ok, State} + end. info(_) -> "". |