summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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"}