瀏覽代碼

Merge pull request #1640 from ferd/app-src-fixes

Various fixes related to .app files
pull/1646/head
Fred Hebert 7 年之前
committed by GitHub
父節點
當前提交
6d9037a5a4
共有 4 個檔案被更改,包括 28 行新增6 行删除
  1. +1
    -1
      src/rebar.app.src
  2. +11
    -4
      src/rebar_app_info.erl
  3. +13
    -1
      src/rebar_otp_app.erl
  4. +3
    -0
      test/rebar_pkg_alias_SUITE.erl

+ 1
- 1
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,

+ 11
- 4
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}) ->

+ 13
- 1
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

+ 3
- 0
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]),

Loading…
取消
儲存