diff options
Diffstat (limited to 'src/rebar_core.erl')
-rw-r--r-- | src/rebar_core.erl | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/rebar_core.erl b/src/rebar_core.erl index 832bb32..e457f1f 100644 --- a/src/rebar_core.erl +++ b/src/rebar_core.erl @@ -128,8 +128,18 @@ process_dir(Dir, ParentConfig, Command, DirSet) -> %% Invoke 'preprocess' on the modules -- this yields a list of other %% directories that should be processed _before_ the current one. Predirs = acc_modules(Modules, preprocess, Config, ModuleSetFile), - ?DEBUG("Predirs: ~p\n", [Predirs]), - DirSet2 = process_each(Predirs, Command, Config, + + %% Get the list of plug-in modules from rebar.config. These + %% modules may participate in preprocess and postprocess. + {ok, PluginModules} = plugin_modules(Config), + + PluginPredirs = acc_modules(PluginModules, preprocess, + Config, ModuleSetFile), + + AllPredirs = Predirs ++ PluginPredirs, + + ?DEBUG("Predirs: ~p\n", [AllPredirs]), + DirSet2 = process_each(AllPredirs, Command, Config, ModuleSetFile, DirSet), %% Make sure the CWD is reset properly; processing the dirs may have @@ -144,11 +154,6 @@ process_dir(Dir, ParentConfig, Command, DirSet) -> ?INFO("Skipping ~s in ~s\n", [Command, Dir]); false -> - %% Get the list of plug-in modules from rebar.config. These - %% modules are processed LAST and do not participate - %% in preprocess. - {ok, PluginModules} = plugin_modules(Config), - %% Execute any before_command plugins on this directory execute_pre(Command, PluginModules, Config, ModuleSetFile), @@ -167,7 +172,8 @@ process_dir(Dir, ParentConfig, Command, DirSet) -> %% Invoke 'postprocess' on the modules. This yields a list of other %% directories that should be processed _after_ the current one. - Postdirs = acc_modules(Modules, postprocess, Config, ModuleSetFile), + Postdirs = acc_modules(Modules ++ PluginModules, postprocess, + Config, ModuleSetFile), ?DEBUG("Postdirs: ~p\n", [Postdirs]), DirSet4 = process_each(Postdirs, Command, Config, ModuleSetFile, DirSet3), |