Do not rewrite .app file if it didn't change

This commit is contained in:
Lev Walkin 2012-08-06 22:12:01 +04:00 committed by Tuncer Ayaz
parent ca8d7cc95d
commit f2f294d812
2 changed files with 14 additions and 2 deletions

View file

@ -29,7 +29,8 @@
-export([rm_rf/1, -export([rm_rf/1,
cp_r/2, cp_r/2,
mv/2, mv/2,
delete_each/1]). delete_each/1,
write_file_if_contents_differ/2]).
-include("rebar.hrl"). -include("rebar.hrl").
@ -111,6 +112,17 @@ delete_each([File | Rest]) ->
?FAIL ?FAIL
end. end.
write_file_if_contents_differ(Filename, Bytes) ->
ToWrite = iolist_to_binary(Bytes),
case file:read_file(Filename) of
{ok, ToWrite} ->
ok;
{ok, _} ->
file:write_file(Filename, ToWrite);
{error, _} ->
file:write_file(Filename, ToWrite)
end.
%% =================================================================== %% ===================================================================
%% Internal functions %% Internal functions
%% =================================================================== %% ===================================================================

View file

@ -106,7 +106,7 @@ preprocess(Config, AppSrcFile) ->
%% Setup file .app filename and write new contents %% Setup file .app filename and write new contents
AppFile = rebar_app_utils:app_src_to_app(AppSrcFile), AppFile = rebar_app_utils:app_src_to_app(AppSrcFile),
ok = file:write_file(AppFile, Spec), ok = rebar_file_utils:write_file_if_contents_differ(AppFile, Spec),
%% Make certain that the ebin/ directory is available %% Make certain that the ebin/ directory is available
%% on the code path %% on the code path