소스 검색

fix for downloading transitive source deps

pull/3/head
Tristan Sloughter 10 년 전
부모
커밋
955f582a3e
4개의 변경된 파일24개의 추가작업 그리고 33개의 파일을 삭제
  1. +1
    -0
      src/rebar.app.src
  2. +1
    -1
      src/rebar3.erl
  3. +10
    -5
      src/rebar_prv_install_deps.erl
  4. +12
    -27
      src/rebar_prv_update.erl

+ 1
- 0
src/rebar.app.src 파일 보기

@ -33,6 +33,7 @@
rebar_prv_tar,
rebar_prv_new,
rebar_prv_update,
rebar_prv_upgrade,
rebar_prv_release,
rebar_prv_version,
rebar_prv_help]}

+ 1
- 1
src/rebar3.erl 파일 보기

@ -44,7 +44,7 @@
%% escript Entry point
main(Args) ->
case catch(run(Args)) of
ok ->
{ok, _State} ->
ok;
rebar_abort ->
rebar_utils:delayed_halt(1);

+ 10
- 5
src/rebar_prv_install_deps.erl 파일 보기

@ -74,7 +74,7 @@ do(State) ->
handle_deps(State, Locks)
end,
Source = ProjectApps ++ rebar_state:src_deps(State1),
Source = ProjectApps ++ rebar_state:src_apps(State1),
{ok, Sort} = rebar_topo:sort_apps(Source),
{ok, rebar_state:set(State1, deps_to_build, lists:dropwhile(fun is_valid/1, Sort -- ProjectApps))}.
@ -191,16 +191,21 @@ update_src_deps(Level, State, Update) ->
,NewBinaryDeps++BinaryDepsAcc
,rebar_state:src_apps(StateAcc, AppInfo2)};
false ->
AppInfo1 = rebar_app_info:dep_level(AppInfo, Level),
{SrcDepsAcc, BinaryDepsAcc, rebar_state:src_apps(StateAcc, AppInfo1)}
{AppInfo1, NewSrcDeps, NewBinaryDeps} =
handle_dep(DepsDir, AppInfo),
AppInfo2 = rebar_app_info:dep_level(AppInfo1, Level),
{NewSrcDeps ++ SrcDepsAcc
,NewBinaryDeps++BinaryDepsAcc
,rebar_state:src_apps(StateAcc, AppInfo2)}
end
end
end, {[], rebar_state:binary_deps(State), State}, SrcDeps) of
{[], NewBinaryDeps, State1} ->
rebar_state:binary_deps(State1, NewBinaryDeps);
{_NewSrcDeps, NewBinaryDeps, State1} ->
{NewSrcDeps, NewBinaryDeps, State1} ->
State2 = rebar_state:binary_deps(State1, NewBinaryDeps),
update_src_deps(Level+1, State2, Update)
State3 = rebar_state:src_deps(State2, NewSrcDeps),
update_src_deps(Level+1, State3, Update)
end.
-spec handle_dep(file:filename_all(), rebar_app_info:t()) ->

+ 12
- 27
src/rebar_prv_update.erl 파일 보기

@ -23,40 +23,25 @@ init(State) ->
provider_impl = ?MODULE,
bare = false,
deps = ?DEPS,
example = "rebar update cowboy",
short_desc = "Update package index or individual dependency.",
example = "rebar update",
short_desc = "Update package index.",
desc = "",
opts = []}),
{ok, State1}.
-spec do(rebar_state:t()) -> {ok, rebar_state:t()} | {error, string()}.
do(State) ->
case rebar_state:command_args(State) of
[Name] ->
?INFO("Updating ~s~n", [Name]),
Locks = rebar_state:get(State, locks, []),
case lists:keyfind(ec_cnv:to_binary(Name), 1, Locks) of
{_, _, _, Level} ->
Deps = rebar_state:get(State, deps),
Dep = lists:keyfind(list_to_atom(Name), 1, Deps),
rebar_prv_install_deps:handle_deps(State, [Dep], {true, ec_cnv:to_binary(Name), Level}),
{ok, State};
false ->
{error, io_lib:format("No such dependency ~s~n", [Name])}
end;
[] ->
?INFO("Updating package index...~n", []),
try
Url = url(State),
?INFO("Updating package index...~n", []),
try
Url = url(State),
%{ok, [Home]} = init:get_argument(home),
ec_file:mkdir_p(filename:join([os:getenv("HOME"), ".rebar"])),
PackagesFile = filename:join([os:getenv("HOME"), ".rebar", "packages"]),
{ok, RequestId} = httpc:request(get, {Url, []}, [], [{stream, PackagesFile}
,{sync, true}])
catch
_:_ ->
{error, io_lib:format("Failed to write package index.~n", [])}
end
ec_file:mkdir_p(filename:join([os:getenv("HOME"), ".rebar"])),
PackagesFile = filename:join([os:getenv("HOME"), ".rebar", "packages"]),
{ok, RequestId} = httpc:request(get, {Url, []}, [], [{stream, PackagesFile}
,{sync, true}])
catch
_:_ ->
{error, io_lib:format("Failed to write package index.~n", [])}
end.
url(State) ->

불러오는 중...
취소
저장