diff options
-rw-r--r-- | src/rebar.app.src | 2 | ||||
-rw-r--r-- | src/rebar_app_info.erl | 15 | ||||
-rw-r--r-- | src/rebar_otp_app.erl | 14 | ||||
-rw-r--r-- | test/rebar_pkg_alias_SUITE.erl | 3 |
4 files changed, 28 insertions, 6 deletions
diff --git a/src/rebar.app.src b/src/rebar.app.src index 4be8b76..74efe97 100644 --- a/src/rebar.app.src +++ b/src/rebar.app.src @@ -3,7 +3,7 @@ {application, rebar, [{description, "Rebar: Erlang Build Tool"}, - {vsn, "3.4.4"}, + {vsn, "git"}, {modules, []}, {registered, []}, {applications, [kernel, diff --git a/src/rebar_app_info.erl b/src/rebar_app_info.erl index 050ccc1..de497d5 100644 --- a/src/rebar_app_info.erl +++ b/src/rebar_app_info.erl @@ -311,15 +311,22 @@ app_file(AppInfo=#app_info_t{}, AppFile) -> app_details(AppInfo=#app_info_t{app_details=[]}) -> case app_file(AppInfo) of undefined -> - rebar_file_utils:try_consult(app_file_src(AppInfo)); + case rebar_config:consult_app_file(app_file_src(AppInfo)) of + [] -> []; + [{application, _Name, AppDetails}] -> AppDetails + end; AppFile -> - try - rebar_file_utils:try_consult(AppFile) + try rebar_file_utils:try_consult(AppFile) of + [] -> []; + [{application, _Name, AppDetails}] -> AppDetails catch throw:{error, {Module, Reason}} -> ?DEBUG("Warning, falling back to .app.src because of: ~ts", [Module:format_error(Reason)]), - rebar_file_utils:try_consult(app_file_src(AppInfo)) + case rebar_config:consult_app_file(app_file_src(AppInfo)) of + [] -> []; + [{application, _Name, AppDetails}] -> AppDetails + end end end; app_details(#app_info_t{app_details=AppDetails}) -> diff --git a/src/rebar_otp_app.erl b/src/rebar_otp_app.erl index ed573f2..1bc33b9 100644 --- a/src/rebar_otp_app.erl +++ b/src/rebar_otp_app.erl @@ -117,8 +117,11 @@ preprocess(State, AppInfo, AppSrcFile) -> %% without a 'registered' value. A3 = ensure_registered(A2), + %% some tools complain if a description is not present. + A4 = ensure_description(A3), + %% Build the final spec as a string - Spec = io_lib:format("~p.\n", [{application, AppName, A3}]), + Spec = io_lib:format("~p.\n", [{application, AppName, A4}]), %% Setup file .app filename and write new contents EbinDir = rebar_app_info:ebin_dir(AppInfo), @@ -195,6 +198,15 @@ ensure_registered(AppData) -> AppData end. +ensure_description(AppData) -> + case lists:keyfind(description, 1, AppData) of + false -> + %% Required for releases to work. + [{description, ""} | AppData]; + {description, _} -> + AppData + end. + %% In the case of *.app.src we want to give the user the ability to %% dynamically script the application resource file (think dynamic version %% string, etc.), in a way similar to what can be done with the rebar diff --git a/test/rebar_pkg_alias_SUITE.erl b/test/rebar_pkg_alias_SUITE.erl index 2b8ccd2..07656d0 100644 --- a/test/rebar_pkg_alias_SUITE.erl +++ b/test/rebar_pkg_alias_SUITE.erl @@ -166,6 +166,8 @@ mock_config(Name, Config) -> {ChkFake, Etag} = create_lib(Name, Config, "fakelib"), {ChkTop, _} = create_lib(Name, Config, "topdep"), {ChkTrans, _} = create_lib(Name, Config, "transitive_app", "transitive"), + ct:pal("{~p, _}",[ChkTop]), + ct:pal("{~p, _}",[ChkTrans]), Priv = ?config(priv_dir, Config), TmpDir = filename:join([Priv, "tmp", atom_to_list(Name)]), %% Add an alias for goodpkg -> fakelib by hand @@ -173,6 +175,7 @@ mock_config(Name, Config) -> CacheRoot = filename:join([Priv, "cache", atom_to_list(Name)]), CacheDir = filename:join([CacheRoot, "hex", "com", "test", "packages"]), rebar_test_utils:create_app(AppDir, "fakelib", "1.0.0", [kernel, stdlib]), + ct:pal("{~p, ~p}",[ChkFake, Etag]), {ChkFake, Etag} = rebar_test_utils:package_app(AppDir, CacheDir, "goodpkg-1.0.0"), Tid = ets:new(registry_table, [public]), |