diff options
-rw-r--r-- | src/rebar_app_info.erl | 13 | ||||
-rw-r--r-- | src/rebar_prv_install_deps.erl | 11 |
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); |