From 3b345046bde490641866e6098d9145c360b04205 Mon Sep 17 00:00:00 2001 From: Jesse Gumm Date: Sun, 20 Mar 2016 09:18:06 -0500 Subject: Support rebar3-style deps Example: {git, {appname, "git://something/something", {branch, master}}} ^ | |---- Notice the lack of a version Regex --- inttest/rebar3_deps1/a.erl | 8 +++++ inttest/rebar3_deps1/a.rebar.config | 1 + inttest/rebar3_deps1/b.hrl | 1 + inttest/rebar3_deps1/rebar3_deps1_rt.erl | 59 ++++++++++++++++++++++++++++++++ src/rebar_deps.erl | 8 +++++ 5 files changed, 77 insertions(+) create mode 100644 inttest/rebar3_deps1/a.erl create mode 100644 inttest/rebar3_deps1/a.rebar.config create mode 100644 inttest/rebar3_deps1/b.hrl create mode 100644 inttest/rebar3_deps1/rebar3_deps1_rt.erl diff --git a/inttest/rebar3_deps1/a.erl b/inttest/rebar3_deps1/a.erl new file mode 100644 index 0000000..835522a --- /dev/null +++ b/inttest/rebar3_deps1/a.erl @@ -0,0 +1,8 @@ +-module(a). + +-compile(export_all). + +-include_lib("b/include/b.hrl"). + +hello() -> + io:format("~s\n", [?HELLO]). diff --git a/inttest/rebar3_deps1/a.rebar.config b/inttest/rebar3_deps1/a.rebar.config new file mode 100644 index 0000000..6b20717 --- /dev/null +++ b/inttest/rebar3_deps1/a.rebar.config @@ -0,0 +1 @@ +{deps, [{b, {git, "../repo/b"}}]}. diff --git a/inttest/rebar3_deps1/b.hrl b/inttest/rebar3_deps1/b.hrl new file mode 100644 index 0000000..25dfeda --- /dev/null +++ b/inttest/rebar3_deps1/b.hrl @@ -0,0 +1 @@ +-define(HELLO, "Hi From B"). diff --git a/inttest/rebar3_deps1/rebar3_deps1_rt.erl b/inttest/rebar3_deps1/rebar3_deps1_rt.erl new file mode 100644 index 0000000..36f94e3 --- /dev/null +++ b/inttest/rebar3_deps1/rebar3_deps1_rt.erl @@ -0,0 +1,59 @@ +%% -*- erlang-indent-level: 4;indent-tabs-mode: nil -*- +%% ex: ts=4 sw=4 et +-module(rebar3_deps1_rt). + +-compile(export_all). + +setup([Target]) -> + retest_utils:load_module(filename:join(Target, "inttest_utils.erl")), + ok. + +%% Test deps with rebar3-type dependencies (that is, dependencies without Regexes) +%% Example: {git, {appname, "git://something/something", {branch, master}}} +files() -> + [ + %% A application + {create, "ebin/a.app", app(a, [a])}, + {copy, "a.rebar.config", "rebar.config"}, + {copy, "a.erl", "src/a.erl"}, + + %% B application + {create, "repo/b/ebin/b.app", app(b, [])}, + {copy, "b.hrl", "repo/b/include/b.hrl"} + + ] ++ inttest_utils:rebar_setup(). + +apply_cmds([], _Params) -> + ok; +apply_cmds([Cmd | Rest], Params) -> + io:format("Running: ~s (~p)\n", [Cmd, Params]), + {ok, _} = retest_sh:run(Cmd, Params), + apply_cmds(Rest, Params). + +run(_Dir) -> + %% Initialize the dep app as git repos so that dependencies pull + %% properly + GitCmds = ["git init", + "git add -A", + "git config user.email 'tdeps@example.com'", + "git config user.name 'tdeps'", + "git commit -a -m \"Initial Commit\""], + apply_cmds(GitCmds, [{dir, "repo/b"}]), + + {ok, _} = retest_sh:run("./rebar get-deps", []), + {ok, _} = retest_sh:run("./rebar compile", []), + + true = filelib:is_regular("ebin/a.beam"), + ok. + +%% +%% Generate the contents of a simple .app file +%% +app(Name, Modules) -> + App = {application, Name, + [{description, atom_to_list(Name)}, + {vsn, "1"}, + {modules, Modules}, + {registered, []}, + {applications, [kernel, stdlib]}]}, + io_lib:format("~p.\n", [App]). diff --git a/src/rebar_deps.erl b/src/rebar_deps.erl index 995ce97..def703b 100644 --- a/src/rebar_deps.erl +++ b/src/rebar_deps.erl @@ -268,10 +268,16 @@ info_help(Description) -> {rebar, "1.0.*"}, {rebar, ".*", {git, "git://github.com/rebar/rebar.git"}}, + {rebar, + {git, "git://github.com/rebar/rebar.git"}}, {rebar, ".*", {git, "git://github.com/rebar/rebar.git", "Rev"}}, + {rebar, + {git, "git://github.com/rebar/rebar.git", "Rev"}}, {rebar, "1.0.*", {git, "git://github.com/rebar/rebar.git", {branch, "master"}}}, + {rebar, + {git, "git://github.com/rebar/rebar.git", {branch, "master"}}}, {rebar, "1.0.0", {git, "git://github.com/rebar/rebar.git", {tag, "1.0.0"}}}, {rebar, "", @@ -371,6 +377,8 @@ find_deps(Config, read, [], Deps) -> {Config, lists:reverse(Deps)}; find_deps(Config, Mode, [App | Rest], Acc) when is_atom(App) -> find_deps(Config, Mode, [{App, ".*", undefined} | Rest], Acc); +find_deps(Config, Mode, [{App, Source} | Rest], Acc) when is_tuple(Source) -> + find_deps(Config, Mode, [{App, ".*", Source} | Rest], Acc); find_deps(Config, Mode, [{App, VsnRegex} | Rest], Acc) when is_atom(App) -> find_deps(Config, Mode, [{App, VsnRegex, undefined} | Rest], Acc); find_deps(Config, Mode, [{App, VsnRegex, Source} | Rest], Acc) -> -- cgit v1.2.1 From 27d0f6166a1328fdeb1a5974e6b7e91a97e13f56 Mon Sep 17 00:00:00 2001 From: Jesse Gumm Date: Sun, 20 Mar 2016 10:08:05 -0500 Subject: Add raw to VsnRegex-Free dep --- inttest/rebar3_deps1/a.rebar.config | 5 ++++- inttest/rebar3_deps1/c.txt | 1 + inttest/rebar3_deps1/rebar3_deps1_rt.erl | 6 +++++- src/rebar_deps.erl | 5 +++++ 4 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 inttest/rebar3_deps1/c.txt diff --git a/inttest/rebar3_deps1/a.rebar.config b/inttest/rebar3_deps1/a.rebar.config index 6b20717..de3abe3 100644 --- a/inttest/rebar3_deps1/a.rebar.config +++ b/inttest/rebar3_deps1/a.rebar.config @@ -1 +1,4 @@ -{deps, [{b, {git, "../repo/b"}}]}. +{deps, [ + {b, {git, "../repo/b"}}, + {c, {git, "../repo/c"}, [raw]} +]}. diff --git a/inttest/rebar3_deps1/c.txt b/inttest/rebar3_deps1/c.txt new file mode 100644 index 0000000..5adcd3d --- /dev/null +++ b/inttest/rebar3_deps1/c.txt @@ -0,0 +1 @@ +This is a text file. diff --git a/inttest/rebar3_deps1/rebar3_deps1_rt.erl b/inttest/rebar3_deps1/rebar3_deps1_rt.erl index 36f94e3..e84b6ba 100644 --- a/inttest/rebar3_deps1/rebar3_deps1_rt.erl +++ b/inttest/rebar3_deps1/rebar3_deps1_rt.erl @@ -19,7 +19,9 @@ files() -> %% B application {create, "repo/b/ebin/b.app", app(b, [])}, - {copy, "b.hrl", "repo/b/include/b.hrl"} + {copy, "b.hrl", "repo/b/include/b.hrl"}, + + {copy, "c.txt", "repo/c/c.txt"} ] ++ inttest_utils:rebar_setup(). @@ -39,11 +41,13 @@ run(_Dir) -> "git config user.name 'tdeps'", "git commit -a -m \"Initial Commit\""], apply_cmds(GitCmds, [{dir, "repo/b"}]), + apply_cmds(GitCmds, [{dir, "repo/c"}]), {ok, _} = retest_sh:run("./rebar get-deps", []), {ok, _} = retest_sh:run("./rebar compile", []), true = filelib:is_regular("ebin/a.beam"), + true = filelib:is_regular("deps/c/c.txt"), ok. %% diff --git a/src/rebar_deps.erl b/src/rebar_deps.erl index def703b..251bdee 100644 --- a/src/rebar_deps.erl +++ b/src/rebar_deps.erl @@ -283,6 +283,9 @@ info_help(Description) -> {rebar, "", {git, "git://github.com/rebar/rebar.git", {branch, "master"}}, [raw]}, + {rebar, + {git, "git://github.com/rebar/rebar.git", {branch, "master"}}, + [raw]}, {app_name, ".*", {hg, "https://www.example.org/url"}}, {app_name, ".*", {rsync, "Url"}}, {app_name, ".*", {svn, "https://www.example.org/url"}}, @@ -381,6 +384,8 @@ find_deps(Config, Mode, [{App, Source} | Rest], Acc) when is_tuple(Source) -> find_deps(Config, Mode, [{App, ".*", Source} | Rest], Acc); find_deps(Config, Mode, [{App, VsnRegex} | Rest], Acc) when is_atom(App) -> find_deps(Config, Mode, [{App, VsnRegex, undefined} | Rest], Acc); +find_deps(Config, Mode, [{App, Source, Opts} | Rest], Acc) when is_tuple(Source) -> + find_deps(Config, Mode, [{App, ".*", Source, Opts} | Rest], Acc); find_deps(Config, Mode, [{App, VsnRegex, Source} | Rest], Acc) -> find_deps(Config, Mode, [{App, VsnRegex, Source, []} | Rest], Acc); find_deps(Config, Mode, [{App, VsnRegex, Source, Opts} | Rest], Acc) -- cgit v1.2.1