summaryrefslogtreecommitdiff
path: root/src/rebar_prv_app_builder.erl
diff options
context:
space:
mode:
authorTristan Sloughter <t@crashfast.com>2014-08-17 21:10:43 -0500
committerTristan Sloughter <t@crashfast.com>2014-08-17 21:10:43 -0500
commit629792f36baaaddaeb8ce654760ca4392a571cc5 (patch)
treeb8332107bf24ee9612123ab7c03939da58085290 /src/rebar_prv_app_builder.erl
parent54e1231e4f34e3bcb9ccdbbd07565fe2538c5401 (diff)
start of moving to splitting state from config parsing
Diffstat (limited to 'src/rebar_prv_app_builder.erl')
-rw-r--r--src/rebar_prv_app_builder.erl63
1 files changed, 16 insertions, 47 deletions
diff --git a/src/rebar_prv_app_builder.erl b/src/rebar_prv_app_builder.erl
index 4e5e798..e608eb1 100644
--- a/src/rebar_prv_app_builder.erl
+++ b/src/rebar_prv_app_builder.erl
@@ -14,9 +14,9 @@
%% Public API
%% ===================================================================
--spec init(rebar_config:config()) -> {ok, rebar_config:config()}.
+-spec init(rebar_state:t()) -> {ok, rebar_state:t()}.
init(State) ->
- State1 = rebar_config:add_provider(State, #provider{name = ?PROVIDER,
+ State1 = rebar_state:add_provider(State, #provider{name = ?PROVIDER,
provider_impl = ?MODULE,
bare = false,
deps = ?DEPS,
@@ -26,33 +26,28 @@ init(State) ->
opts = []}),
{ok, State1}.
--spec do(rebar_config:config()) -> {ok, rebar_config:config()} | relx:error().
+-spec do(rebar_state:t()) -> {ok, rebar_state:t()} | relx:error().
do(Config) ->
- Deps = rebar_config:deps_to_build(Config),
- Apps = rebar_config:apps_to_build(Config),
+ Apps = rebar_state:apps_to_build(Config),
Config1 =
lists:foldl(fun(AppInfo, ConfigAcc) ->
- ?INFO("Building ~p version ~p~n", [rebar_app_info:name(AppInfo)
- ,rebar_app_info:original_vsn(AppInfo)]),
+ ?INFO("Compiling ~p ~s~n", [rebar_app_info:name(AppInfo)
+ ,rebar_app_info:original_vsn(AppInfo)]),
{_AppInfo1, ConfigAcc1} = build(ConfigAcc, AppInfo),
- ConfigAcc
- end, Config, Deps++Apps),
- Graph = construct_graph(Config),
- Goals = rebar_config:goals(Config1),
- {ok, Solve} = rlx_depsolver:solve(Graph, Goals),
-
- DepsDir = get_deps_dir(Config1),
- LockDeps = lists:map(fun({Name, _, Source}) ->
- Dir = get_deps_dir(DepsDir, Name),
- {Name, Vsn} = lists:keyfind(Name, 1, Solve),
- rebar_fetch:new(Dir, Name, format_vsn(Vsn), Source)
- end, rebar_config:deps(Config)),
- ok = file:write_file("./rebar.lock", io_lib:format("~p.~n", [LockDeps])),
+ ConfigAcc1
+ end, Config, Apps),
+
+ %% DepsDir = get_deps_dir(Config1),
+ %% LockDeps = lists:map(fun({Name, Vsn, Source}) ->
+ %% Dir = get_deps_dir(DepsDir, Name),
+ %% rebar_fetch:new(Dir, Name, Vsn, Source)
+ %% end, rebar_state:deps(Config)),
+ %% ok = file:write_file("./rebar.lock", io_lib:format("~p.~n", [LockDeps])),
{ok, Config1}.
build(Config, AppInfo) ->
{ok, AppInfo1} = rebar_otp_app:compile(Config, AppInfo),
- Config1 = rebar_config:replace_app(Config, rebar_app_info:name(AppInfo1), AppInfo1),
+ Config1 = rebar_state:add_app(Config, AppInfo1),
rebar_erlc_compiler:compile(Config, rebar_app_info:dir(AppInfo1)),
{AppInfo1, Config1}.
@@ -60,35 +55,9 @@ build(Config, AppInfo) ->
%% Internal functions
%% ===================================================================
-construct_graph(Config) ->
- LibDirs = rebar_config:get_local(Config, lib_dirs, ["apps", "libs", "."]),
- DepsDir = rebar_deps:get_deps_dir(Config),
- Graph = rlx_depsolver:new_graph(),
- Apps = rebar_app_discover:find_apps([DepsDir | LibDirs]),
- lists:foldl(fun(AppInfo, GraphAcc) ->
- Name = rebar_app_info:name(AppInfo),
- Vsn = rebar_app_info:original_vsn(AppInfo),
- C = rebar_config:new2(rebar_config:new(), rebar_app_info:dir(AppInfo)),
- LocalDeps = rebar_config:get_local(C, deps, []),
- PkgDeps = lists:map(fun({A, "", _}) ->
- A;
- ({A, ".*", _}) ->
- A;
- ({A, V, _}) ->
- {A, V}
- end, LocalDeps),
- rlx_depsolver:add_package_version(GraphAcc
- ,Name
- ,Vsn
- ,PkgDeps)
- end, Graph, Apps).
-
get_deps_dir(Config) ->
BaseDir = rebar_utils:base_dir(Config),
get_deps_dir(BaseDir, deps).
get_deps_dir(DepsDir, App) ->
filename:join(DepsDir, atom_to_list(App)).
-
-format_vsn(Vsn) ->
- binary_to_list(iolist_to_binary(ec_semver:format(Vsn))).