summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rebar_otp_app.erl59
1 files changed, 33 insertions, 26 deletions
diff --git a/src/rebar_otp_app.erl b/src/rebar_otp_app.erl
index 4b22ceb..74b2988 100644
--- a/src/rebar_otp_app.erl
+++ b/src/rebar_otp_app.erl
@@ -51,32 +51,8 @@ compile(State, App) ->
end,
%% Load the app file and validate it.
- AppFile = rebar_app_info:app_file(App1),
- case rebar_app_utils:load_app_file(State2, AppFile) of
- {ok, State3, AppName, AppData} ->
- AppVsn = proplists:get_value(vsn, AppData),
- case validate_name(AppName, AppFile) of
- ok ->
- %% In general, the list of modules is an important thing to validate
- %% for compliance with OTP guidelines and upgrade procedures.
- %% However, some people prefer not to validate this list.
- case rebar_state:get(State3, validate_app_modules, true) of
- true ->
- case rebar_app_discover:validate_application_info(App1) of
- true ->
- {ok, rebar_app_info:original_vsn(App1, AppVsn)};
- Error ->
- Error
- end;
- false ->
- {ok, rebar_app_info:original_vsn(App1, AppVsn)}
- end;
- Error ->
- Error
- end;
- {error, Reason} ->
- ?PRV_ERROR({file_read, AppFile, Reason})
- end.
+ validate_app(State2, App1).
+
format_error({file_read, File, Reason}) ->
io_lib:format("Failed to read ~s for processing: ~p", [File, Reason]);
@@ -104,6 +80,37 @@ clean(_State, File) ->
%% Internal functions
%% ===================================================================
+validate_app(State, App) ->
+ AppFile = rebar_app_info:app_file(App),
+ case rebar_app_utils:load_app_file(State, AppFile) of
+ {ok, State1, AppName, AppData} ->
+ case validate_name(AppName, AppFile) of
+ ok ->
+ validate_app_modules(State1, App, AppData);
+ Error ->
+ Error
+ end;
+ {error, Reason} ->
+ ?PRV_ERROR({file_read, AppFile, Reason})
+ end.
+
+validate_app_modules(State, App, AppData) ->
+ %% In general, the list of modules is an important thing to validate
+ %% for compliance with OTP guidelines and upgrade procedures.
+ %% However, some people prefer not to validate this list.
+ AppVsn = proplists:get_value(vsn, AppData),
+ case rebar_state:get(State, validate_app_modules, true) of
+ true ->
+ case rebar_app_discover:validate_application_info(App) of
+ true ->
+ {ok, rebar_app_info:original_vsn(App, AppVsn)};
+ Error ->
+ Error
+ end;
+ false ->
+ {ok, rebar_app_info:original_vsn(App, AppVsn)}
+ end.
+
preprocess(State, Dir, AppSrcFile) ->
case rebar_app_utils:load_app_file(State, AppSrcFile) of
{ok, State1, AppName, AppData} ->