summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rebar_app_info.erl13
-rw-r--r--src/rebar_prv_install_deps.erl11
2 files changed, 23 insertions, 1 deletions
diff --git a/src/rebar_app_info.erl b/src/rebar_app_info.erl
index 7894e75..91640f2 100644
--- a/src/rebar_app_info.erl
+++ b/src/rebar_app_info.erl
@@ -157,6 +157,19 @@ app_file(AppInfo=#app_info_t{}, AppFile) ->
AppInfo#app_info_t{app_file=AppFile}.
-spec app_details(t()) -> list().
+app_details(AppInfo=#app_info_t{app_details=[]}) ->
+ AppFile = case app_file(AppInfo) of
+ undefined ->
+ app_file_src(AppInfo);
+ File ->
+ File
+ end,
+ case file:consult(AppFile) of
+ {ok, [{application, _, AppDetails}]} ->
+ AppDetails;
+ _ ->
+ []
+ end;
app_details(#app_info_t{app_details=AppDetails}) ->
AppDetails.
diff --git a/src/rebar_prv_install_deps.erl b/src/rebar_prv_install_deps.erl
index 0fa843f..5598381 100644
--- a/src/rebar_prv_install_deps.erl
+++ b/src/rebar_prv_install_deps.erl
@@ -396,7 +396,7 @@ maybe_fetch(AppInfo, Profile, Upgrade, Seen, State) ->
case fetch_app(AppInfo, AppDir, State) of
true ->
maybe_symlink_default(State, Profile, AppDir, AppInfo),
- {true, AppInfo};
+ {true, update_app_info(AppInfo)};
Other ->
{Other, AppInfo}
end;
@@ -563,6 +563,15 @@ fetch_app(AppInfo, AppDir, State) ->
Result
end.
+update_app_info(AppInfo) ->
+ AppDetails = rebar_app_info:app_details(AppInfo),
+ Applications = proplists:get_value(applications, AppDetails, []),
+ IncludedApplications = proplists:get_value(included_applications, AppDetails, []),
+ AppInfo1 = rebar_app_info:applications(
+ rebar_app_info:app_details(AppInfo, AppDetails),
+ IncludedApplications++Applications),
+ rebar_app_info:valid(AppInfo1, false).
+
maybe_upgrade(AppInfo, AppDir, false, State) ->
Source = rebar_app_info:source(AppInfo),
rebar_fetch:needs_update(AppDir, Source, State);