summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rebar_edoc.erl19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/rebar_edoc.erl b/src/rebar_edoc.erl
index ce5458a..27e0015 100644
--- a/src/rebar_edoc.erl
+++ b/src/rebar_edoc.erl
@@ -48,7 +48,26 @@
%% @doc Generate Erlang program documentation.
-spec doc(Config::rebar_config:config(), File::file:filename()) -> ok.
doc(Config, File) ->
+ %% Save code path
+ CodePath = setup_code_path(),
{ok, AppName, _AppData} = rebar_app_utils:load_app_file(File),
EDocOpts = rebar_config:get(Config, edoc_opts, []),
ok = edoc:application(AppName, ".", EDocOpts),
+ %% Restore code path
+ true = code:set_path(CodePath),
ok.
+
+%% ===================================================================
+%% Internal functions
+%% ===================================================================
+
+setup_code_path() ->
+ %% Setup code path prior to calling edoc so that edown, asciiedoc,
+ %% and the like can work properly when generating their own
+ %% documentation.
+ CodePath = code:get_path(),
+ true = code:add_patha(ebin_dir()),
+ CodePath.
+
+ebin_dir() ->
+ filename:join(rebar_utils:get_cwd(), "ebin").