mirror of
https://github.com/correl/rebar.git
synced 2024-12-18 03:00:17 +00:00
Only regenerate edocs if a source file is newer than
overview-summary.html
This commit is contained in:
parent
1c98f6ccd4
commit
81112cbd07
1 changed files with 45 additions and 2 deletions
|
@ -50,9 +50,30 @@
|
||||||
doc(Config, File) ->
|
doc(Config, File) ->
|
||||||
%% Save code path
|
%% Save code path
|
||||||
CodePath = setup_code_path(),
|
CodePath = setup_code_path(),
|
||||||
{ok, AppName, _AppData} = rebar_app_utils:load_app_file(File),
|
|
||||||
|
%% Get the edoc_opts and app file info
|
||||||
EDocOpts = rebar_config:get(Config, edoc_opts, []),
|
EDocOpts = rebar_config:get(Config, edoc_opts, []),
|
||||||
ok = edoc:application(AppName, ".", EDocOpts),
|
{ok, AppName, _AppData} = rebar_app_utils:load_app_file(File),
|
||||||
|
|
||||||
|
%% Determine the age of the summary file
|
||||||
|
SummaryFilename = filename:join(proplists:get_value(dir, EDocOpts, "doc"),
|
||||||
|
"overview-summary.html"),
|
||||||
|
SummaryLastMod = filelib:last_modified(SummaryFilename),
|
||||||
|
|
||||||
|
%% For each source directory, look for a more recent file than
|
||||||
|
%% SumaryLastMod; in that case, we go ahead and do a full regen
|
||||||
|
NeedsRegen = newer_file_exists(proplists:get_value(source_path, EDocOpts, ["src"]),
|
||||||
|
SummaryLastMod),
|
||||||
|
|
||||||
|
case NeedsRegen of
|
||||||
|
true ->
|
||||||
|
?INFO("Regenerating edocs for ~p\n", [AppName]),
|
||||||
|
ok = edoc:application(AppName, ".", EDocOpts);
|
||||||
|
false ->
|
||||||
|
?INFO("Skipping regeneration of edocs for ~p\n", [AppName]),
|
||||||
|
ok
|
||||||
|
end,
|
||||||
|
|
||||||
%% Restore code path
|
%% Restore code path
|
||||||
true = code:set_path(CodePath),
|
true = code:set_path(CodePath),
|
||||||
ok.
|
ok.
|
||||||
|
@ -71,3 +92,25 @@ setup_code_path() ->
|
||||||
|
|
||||||
ebin_dir() ->
|
ebin_dir() ->
|
||||||
filename:join(rebar_utils:get_cwd(), "ebin").
|
filename:join(rebar_utils:get_cwd(), "ebin").
|
||||||
|
|
||||||
|
newer_file_exists(Paths, LastMod) ->
|
||||||
|
CheckFile = fun(Filename, _) ->
|
||||||
|
FLast = filelib:last_modified(Filename),
|
||||||
|
case FLast > LastMod of
|
||||||
|
true ->
|
||||||
|
?DEBUG("~p is more recent than overview-summary.html: ~120p > ~120p\n",
|
||||||
|
[Filename, FLast, LastMod]),
|
||||||
|
throw(newer_file_exists);
|
||||||
|
false ->
|
||||||
|
false
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
try
|
||||||
|
lists:foldl(fun(P, _) -> filelib:fold_files(P, ".*.erl", true, CheckFile, false) end,
|
||||||
|
undefined, Paths),
|
||||||
|
false
|
||||||
|
catch
|
||||||
|
throw:newer_file_exists ->
|
||||||
|
true
|
||||||
|
end.
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue