summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rebar_deps.erl22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/rebar_deps.erl b/src/rebar_deps.erl
index 01cfad3..fe73ca5 100644
--- a/src/rebar_deps.erl
+++ b/src/rebar_deps.erl
@@ -34,7 +34,8 @@
'check-deps'/2,
'get-deps'/2,
'update-deps'/2,
- 'delete-deps'/2]).
+ 'delete-deps'/2,
+ 'list-deps'/2]).
-record(dep, { dir,
@@ -139,6 +140,18 @@ compile(Config, AppFile) ->
lists:prefix(DepsDir, D#dep.dir)],
ok.
+'list-deps'(Config, _) ->
+ Deps = rebar_config:get_local(Config, deps, []),
+ case find_deps(find, Deps) of
+ {AvailDeps, []} ->
+ lists:foreach(fun(Dep) ->
+ ?CONSOLE("~s\n", [print_source(Dep#dep.source)])
+ end, AvailDeps),
+ ok;
+ {_, MissingDeps} ->
+ ?ABORT("Missing dependencies: ~p\n", [MissingDeps])
+ end.
+
%% ===================================================================
%% Internal functions
@@ -449,3 +462,10 @@ has_vcs_dir(svn, Dir) ->
orelse filelib:is_dir(filename:join(Dir, "_svn"));
has_vcs_dir(_, _) ->
true.
+
+print_source({git, Url}) -> ?FMT("BRANCH ~s ~s", ["HEAD", Url]);
+print_source({git, Url, ""}) -> ?FMT("BRANCH ~s ~s", ["HEAD", Url]);
+print_source({git, Url, {branch, Branch}}) -> ?FMT("BRANCH ~s ~s", [Branch, Url]);
+print_source({git, Url, {tag, Tag}}) -> ?FMT("TAG ~s ~s", [Tag, Url]);
+print_source({_, Url, Rev}) -> ?FMT("REV ~s ~s", [Rev, Url]).
+