mirror of
https://github.com/correl/rebar.git
synced 2024-12-18 03:00:17 +00:00
First pass at updating dependencies (svn, hg, bzr untested)
This commit is contained in:
parent
8ea62597ff
commit
968ef1cc77
1 changed files with 29 additions and 5 deletions
|
@ -1,4 +1,3 @@
|
|||
|
||||
%% -*- tab-width: 4;erlang-indent-level: 4;indent-tabs-mode: nil -*-
|
||||
%% ex: ts=4 sw=4 et
|
||||
%% -------------------------------------------------------------------
|
||||
|
@ -109,14 +108,19 @@ compile(Config, AppFile) ->
|
|||
'get-deps'(Config, _) ->
|
||||
%% Determine what deps are available and missing
|
||||
Deps = rebar_config:get_local(Config, deps, []),
|
||||
{_AvailableDeps, MissingDeps} = find_deps(Deps),
|
||||
{AvailableDeps, MissingDeps} = find_deps(Deps),
|
||||
|
||||
%% For each missing dep with a specified source, try to pull it.
|
||||
PulledDeps = [use_source(D) || D <- MissingDeps, D#dep.source /= undefined],
|
||||
PulledDeps0 = [use_source(D) || D <- MissingDeps, D#dep.source /= undefined],
|
||||
|
||||
%% For each available dep try to update the source to the specified
|
||||
%% version.
|
||||
PulledDeps1 = [update_source(D) || D <- AvailableDeps,
|
||||
D#dep.source /= undefined],
|
||||
|
||||
%% Add each pulled dep to our list of dirs for post-processing. This yields
|
||||
%% the necessary transitivity of the deps
|
||||
erlang:put(?MODULE, [D#dep.dir || D <- PulledDeps]),
|
||||
erlang:put(?MODULE, [D#dep.dir || D <- PulledDeps0 ++ PulledDeps1]),
|
||||
ok.
|
||||
|
||||
'delete-deps'(Config, _) ->
|
||||
|
@ -129,7 +133,6 @@ compile(Config, AppFile) ->
|
|||
ok.
|
||||
|
||||
|
||||
|
||||
%% ===================================================================
|
||||
%% Internal functions
|
||||
%% ===================================================================
|
||||
|
@ -292,6 +295,27 @@ download_source(AppDir, {svn, Url, Rev}) ->
|
|||
[Rev, Url, filename:basename(AppDir)]), [],
|
||||
filename:dirname(AppDir)).
|
||||
|
||||
update_source(Dep) ->
|
||||
?CONSOLE("Updating ~p from ~p\n", [Dep#dep.app, Dep#dep.source]),
|
||||
require_source_engine(Dep#dep.source),
|
||||
update_source(filename:join(get_deps_dir(), Dep#dep.app),
|
||||
Dep#dep.source),
|
||||
Dep.
|
||||
|
||||
update_source(AppDir, {git, _Url, {Type, Refspec}})
|
||||
when Type =:= branch orelse
|
||||
Type =:= tag ->
|
||||
rebar_utils:sh(?FMT("git pull origin ~s", [Refspec]), [], AppDir);
|
||||
update_source(AppDir, {git, Url, Refspec}) ->
|
||||
update_source(AppDir, {git, Url, {branch, Refspec}});
|
||||
update_source(AppDir, {svn, _Url, Rev}) ->
|
||||
rebar_utils:sh(?FMT("svn up -r ~s", [Rev]), [], AppDir);
|
||||
update_source(AppDir, {hg, _Url, Rev}) ->
|
||||
rebar_utils:sh(?FMT("hg pull -u -r ~s", [Rev]), [], AppDir);
|
||||
update_source(AppDir, {bzr, _Url, Rev}) ->
|
||||
rebar_utils:sh(?FMT("bzr update -r ~s", [Rev]), [], AppDir).
|
||||
|
||||
|
||||
|
||||
%% ===================================================================
|
||||
%% Source helper functions
|
||||
|
|
Loading…
Reference in a new issue