summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Schepis <adam.schepis@gmail.com>2012-02-10 09:55:36 -0500
committerTuncer Ayaz <tuncer.ayaz@gmail.com>2012-03-31 19:21:25 +0200
commit03a026f38fde8eb2b39447eb25aa219d017989fd (patch)
tree2a8c25c365503c549916620eb371c4a968d29907
parent3469039201511d62d6d545ae8b54fae94dfd5e92 (diff)
Add support for alternate dependency urls
This change adds the ability to use alternate urls for downloading dependencies. To make use of alternate urls run: rebar get-deps alt_urls=true
-rw-r--r--priv/shell-completion/bash/rebar3
-rw-r--r--rebar.config.sample5
-rw-r--r--src/rebar_deps.erl17
3 files changed, 22 insertions, 3 deletions
diff --git a/priv/shell-completion/bash/rebar b/priv/shell-completion/bash/rebar
index 964c1ad..c8690c2 100644
--- a/priv/shell-completion/bash/rebar
+++ b/priv/shell-completion/bash/rebar
@@ -12,7 +12,8 @@ _rebar()
ct doc delete-deps eunit get-deps generate generate-upgrade \
help list-deps list-templates update-deps version xref overlay \
apps= case= force=1 jobs= suites= verbose=1 appid= previous_release= \
- nodeid= root_dir= skip_deps=true skip_apps= template= template_dir="
+ nodeid= root_dir= skip_deps=true skip_apps= template= template_dir= \
+ alt_urls=true"
if [[ ${cur} == --* ]] ; then
COMPREPLY=( $(compgen -W "${lopts}" -- ${cur}) )
diff --git a/rebar.config.sample b/rebar.config.sample
index b0c8637..0ffa884 100644
--- a/rebar.config.sample
+++ b/rebar.config.sample
@@ -113,7 +113,10 @@
{deps, [application_name,
{application_name, "1.0.*"},
{application_name, "1.0.*",
- {git, "git://github.com/basho/rebar.git", {branch, "master"}}}]}.
+ {git, "git://github.com/basho/rebar.git", {branch, "master"}}},
+ {application_name, "1.0.*",
+ {git, "git://github.com/basho/rebar.git", {branch, "master"}},
+ [{alt_url, "https://github.com/basho/rebar.git"}]}]}.
%% == Subdirectories ==
diff --git a/src/rebar_deps.erl b/src/rebar_deps.erl
index 2085cf2..c6e3ff6 100644
--- a/src/rebar_deps.erl
+++ b/src/rebar_deps.erl
@@ -223,15 +223,30 @@ find_deps(Mode, [App | Rest], Acc) when is_atom(App) ->
find_deps(Mode, [{App, VsnRegex} | Rest], Acc) when is_atom(App) ->
find_deps(Mode, [{App, VsnRegex, undefined} | Rest], Acc);
find_deps(Mode, [{App, VsnRegex, Source} | Rest], Acc) ->
+ find_deps(Mode, [{App, VsnRegex, Source, []} | Rest], Acc);
+find_deps(Mode, [{App, VsnRegex, Source, Opts} | Rest], Acc) ->
Dep = #dep { app = App,
vsn_regex = VsnRegex,
- source = Source },
+ source = get_source(Source, Opts) },
{Availability, FoundDir} = find_dep(Dep),
find_deps(Mode, Rest, acc_deps(Mode, Availability, Dep, FoundDir, Acc));
find_deps(_Mode, [Other | _Rest], _Acc) ->
?ABORT("Invalid dependency specification ~p in ~s\n",
[Other, rebar_utils:get_cwd()]).
+get_source(undefined, _Opts) ->
+ undefined;
+get_source(Source, Opts) ->
+ setelement(2, Source, dep_url(element(2, Source), Opts)).
+
+dep_url(Url, Opts) ->
+ case rebar_config:get_global(alt_urls, "false") of
+ "true" ->
+ proplists:get_value(alt_url, Opts, Url);
+ "false" ->
+ Url
+ end.
+
find_dep(Dep) ->
%% Find a dep based on its source,
%% e.g. {git, "https://github.com/mochi/mochiweb.git", "HEAD"}