浏览代码

Allow script to be evaluated when app file is loaded

This allows an <app-name>.app.src.script to be defined and evaluated
when <app-name>.app.src or <app-name>.app are loaded. This allows the
user to add project specific manipulations to app metadata.
pull/3/head
Eric Merritt 12 年前
提交者 Tuncer Ayaz
父节点
当前提交
eaad535e31
共有 1 个文件被更改,包括 23 次插入1 次删除
  1. +23
    -1
      src/rebar_app_utils.erl

+ 23
- 1
src/rebar_app_utils.erl 查看文件

@ -138,7 +138,7 @@ load_app_file(Config, Filename) ->
AppFile = {app_file, Filename}, AppFile = {app_file, Filename},
case rebar_config:get_xconf(Config, {appfile, AppFile}, undefined) of case rebar_config:get_xconf(Config, {appfile, AppFile}, undefined) of
undefined -> undefined ->
case file:consult(Filename) of
case consult_app_file(Filename) of
{ok, [{application, AppName, AppData}]} -> {ok, [{application, AppName, AppData}]} ->
Config1 = rebar_config:set_xconf(Config, Config1 = rebar_config:set_xconf(Config,
{appfile, AppFile}, {appfile, AppFile},
@ -153,6 +153,28 @@ load_app_file(Config, Filename) ->
{ok, Config, AppName, AppData} {ok, Config, AppName, AppData}
end. 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
%% config. However, in the case of *.app, rebar should not manipulate
%% that file. This enforces that dichotomy between app and app.src.
consult_app_file(Filename) ->
case lists:suffix(".app.src", Filename) of
false ->
file:consult(Filename);
true ->
%% TODO: EXPERIMENTAL For now let's warn the user if a
%% script is going to be run.
case filelib:is_regular([Filename, ".script"]) of
true ->
?CONSOLE("NOTICE: Using experimental *.app.src.script "
"functionality on ~s ~n", [Filename]);
_ ->
ok
end,
rebar_config:consult_file(Filename)
end.
get_value(Key, AppInfo, AppFile) -> get_value(Key, AppInfo, AppFile) ->
case proplists:get_value(Key, AppInfo) of case proplists:get_value(Key, AppInfo) of
undefined -> undefined ->

正在加载...
取消
保存