aboutsummaryrefslogtreecommitdiffstats
path: root/src/rcl_prv_release.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/rcl_prv_release.erl')
-rw-r--r--src/rcl_prv_release.erl45
1 files changed, 22 insertions, 23 deletions
diff --git a/src/rcl_prv_release.erl b/src/rcl_prv_release.erl
index 66f4e11..eac1f20 100644
--- a/src/rcl_prv_release.erl
+++ b/src/rcl_prv_release.erl
@@ -1,4 +1,4 @@
-%% -*- mode: Erlang; fill-column: 80; comment-column: 75; -*-
+%% -*- erlang-indent-level: 4; indent-tabs-mode: nil; fill-column: 80 -*-
%%% Copyright 2012 Erlware, LLC. All Rights Reserved.
%%%
%%% This file is provided to you under the Apache License,
@@ -47,6 +47,8 @@ do(State) ->
find_default_release(State, DepGraph).
-spec format_error(ErrorDetail::term()) -> iolist().
+format_error(no_goals_specified) ->
+ "No goals specified for this release ~n";
format_error({no_release_name, Vsn}) ->
io_lib:format("A target release version was specified (~s) but no name", [Vsn]);
format_error({invalid_release_info, Info}) ->
@@ -99,36 +101,25 @@ find_default_release(State, DepGraph) ->
end.
resolve_default_release(State0, DepGraph) ->
- %% Here we will just get the lastest version and run that.
+ %% Here we will just get the highest versioned release and run that.
case lists:sort(fun release_sort/2,
ec_dictionary:to_list(rcl_state:releases(State0))) of
- All = [{{RelName, RelVsn}, _} | _] ->
+ [{{RelName, RelVsn}, _} | _] ->
State1 = rcl_state:default_release(State0, RelName, RelVsn),
- lists:foldl(fun({{RN, RV}, _}, {ok, State2}) ->
- solve_release(State2,
- DepGraph, RN, RV);
- (_, E) ->
- E
- end, {ok, State1}, All);
+ solve_release(State1, DepGraph, RelName, RelVsn);
[] ->
?RCL_ERROR(no_releases_in_system)
end.
-
resolve_default_version(State0, DepGraph, RelName) ->
%% Here we will just get the lastest version and run that.
AllReleases = ec_dictionary:to_list(rcl_state:releases(State0)),
SpecificReleases = [Rel || Rel={{PossibleRelName, _}, _} <- AllReleases,
PossibleRelName =:= RelName],
case lists:sort(fun release_sort/2, SpecificReleases) of
- All = [{{RelName, RelVsn}, _} | _] ->
+ [{{RelName, RelVsn}, _} | _] ->
State1 = rcl_state:default_release(State0, RelName, RelVsn),
- lists:foldl(fun({RN, RV}, {ok, State2}) ->
- solve_release(State2,
- DepGraph, RN, RV);
- (_, E) ->
- E
- end, {ok, State1}, All);
+ solve_release(State1, DepGraph, RelName, RelVsn);
[] ->
?RCL_ERROR({no_releases_for, RelName})
end.
@@ -148,14 +139,22 @@ release_sort({{RelNameA, RelVsnA}, _}, {{RelNameB, RelVsnB}, _}) ->
ec_semver:lte(RelVsnA, RelVsnB).
solve_release(State0, DepGraph, RelName, RelVsn) ->
+ rcl_log:debug(rcl_state:log(State0),
+ "Solving Release ~p-~s~n",
+ [RelName, RelVsn]),
try
Release = rcl_state:get_release(State0, RelName, RelVsn),
Goals = rcl_release:goals(Release),
- case rcl_depsolver:solve(DepGraph, Goals) of
- {ok, Pkgs} ->
- set_resolved(State0, Release, Pkgs);
- {error, Error} ->
- ?RCL_ERROR({failed_solve, Error})
+ case Goals of
+ [] ->
+ ?RCL_ERROR(no_goals_specified);
+ _ ->
+ case rcl_depsolver:solve(DepGraph, Goals) of
+ {ok, Pkgs} ->
+ set_resolved(State0, Release, Pkgs);
+ {error, Error} ->
+ ?RCL_ERROR({failed_solve, Error})
+ end
end
catch
throw:not_found ->
@@ -169,7 +168,7 @@ set_resolved(State, Release0, Pkgs) ->
"Resolved ~p-~s~n",
[rcl_release:name(Release1),
rcl_release:vsn(Release1)]),
- rcl_log:info(rcl_state:log(State),
+ rcl_log:debug(rcl_state:log(State),
fun() ->
rcl_release:format(1, Release1)
end),