summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDave Smith <dizzyd@dizzyd.com>2013-03-02 07:04:41 -0800
committerDave Smith <dizzyd@dizzyd.com>2013-03-02 07:04:41 -0800
commit21038d537c3fa39bacd38797487fbf5e4b5c0b61 (patch)
tree5b14bd3d0fde4af8ecae5cb308dd0cf23215ea6b /src
parenteacfc1160ada693cf587d5806cdc34d65f085b99 (diff)
parent10362775253ff8e8e85e985ca715f24671c615db (diff)
Merge pull request #38 from tuncer/fix-sub_dir-association
rebar_core: fix sub dir association
Diffstat (limited to 'src')
-rw-r--r--src/rebar_core.erl48
1 files changed, 24 insertions, 24 deletions
diff --git a/src/rebar_core.erl b/src/rebar_core.erl
index e6af2c5..eee5239 100644
--- a/src/rebar_core.erl
+++ b/src/rebar_core.erl
@@ -139,21 +139,21 @@ process_dir(Dir, ParentConfig, Command, DirSet) ->
{ok, AvailModuleSets} = application:get_env(rebar, modules),
ModuleSet = choose_module_set(AvailModuleSets, Dir),
skip_or_process_dir(ModuleSet, Config, CurrentCodePath,
- Dir, Command, DirSet)
+ Dir, Command, DirSet)
end.
skip_or_process_dir({[], undefined}=ModuleSet, Config, CurrentCodePath,
- Dir, Command, DirSet) ->
+ Dir, Command, DirSet) ->
process_dir1(Dir, Command, DirSet, Config, CurrentCodePath, ModuleSet);
skip_or_process_dir({_, ModuleSetFile}=ModuleSet, Config, CurrentCodePath,
- Dir, Command, DirSet) ->
+ Dir, Command, DirSet) ->
case lists:suffix(".app.src", ModuleSetFile)
orelse lists:suffix(".app", ModuleSetFile) of
true ->
%% .app or .app.src file, check if is_skipped_app
skip_or_process_dir1(ModuleSetFile, ModuleSet,
- Config, CurrentCodePath, Dir,
- Command, DirSet);
+ Config, CurrentCodePath, Dir,
+ Command, DirSet);
false ->
%% not an app dir, no need to consider apps=/skip_apps=
process_dir1(Dir, Command, DirSet, Config,
@@ -161,7 +161,7 @@ skip_or_process_dir({_, ModuleSetFile}=ModuleSet, Config, CurrentCodePath,
end.
skip_or_process_dir1(AppFile, ModuleSet, Config, CurrentCodePath,
- Dir, Command, DirSet) ->
+ Dir, Command, DirSet) ->
case rebar_app_utils:is_skipped_app(Config, AppFile) of
{Config1, {true, SkippedApp}} ->
?DEBUG("Skipping app: ~p~n", [SkippedApp]),
@@ -187,11 +187,12 @@ process_dir1(Dir, Command, DirSet, Config0, CurrentCodePath,
{Config1, Predirs} = acc_modules(Modules, preprocess, Config0,
ModuleSetFile),
- SubdirAssoc = remember_cwd_subdir(Dir, Predirs),
+ %% Remember associated pre-dirs (used for plugin lookup)
+ PredirsAssoc = remember_cwd_predirs(Dir, Predirs),
%% Get the list of plug-in modules from rebar.config. These
%% modules may participate in preprocess and postprocess.
- {ok, PluginModules} = plugin_modules(Config1, SubdirAssoc),
+ {ok, PluginModules} = plugin_modules(Config1, PredirsAssoc),
{Config2, PluginPredirs} = acc_modules(PluginModules, preprocess,
Config1, ModuleSetFile),
@@ -253,7 +254,7 @@ process_dir1(Dir, Command, DirSet, Config0, CurrentCodePath,
%% Return the updated {config, dirset} as result
Res.
-remember_cwd_subdir(Cwd, Subdirs) ->
+remember_cwd_predirs(Cwd, Predirs) ->
Store = fun(Dir, Dict) ->
case dict:find(Dir, Dict) of
error ->
@@ -264,11 +265,10 @@ remember_cwd_subdir(Cwd, Subdirs) ->
?ABORT("Internal consistency assertion failed.~n"
"sub_dir ~s already associated with ~s.~n"
"Duplicate sub_dirs or deps entries?",
- [Dir, Existing]),
- Dict
+ [Dir, Existing])
end
end,
- lists:foldl(Store, dict:new(), Subdirs).
+ lists:foldl(Store, dict:new(), Predirs).
maybe_load_local_config(Dir, ParentConfig) ->
%% We need to ensure we don't overwrite custom
@@ -488,9 +488,9 @@ acc_modules([Module | Rest], Command, Config, File, Acc) ->
%%
%% Return a flat list of rebar plugin modules.
%%
-plugin_modules(Config, SubdirAssoc) ->
+plugin_modules(Config, PredirsAssoc) ->
Modules = lists:flatten(rebar_config:get_all(Config, plugins)),
- plugin_modules(Config, SubdirAssoc, ulist(Modules)).
+ plugin_modules(Config, PredirsAssoc, ulist(Modules)).
ulist(L) ->
ulist(L, []).
@@ -505,16 +505,16 @@ ulist([H | T], Acc) ->
ulist(T, [H | Acc])
end.
-plugin_modules(_Config, _SubdirAssoc, []) ->
+plugin_modules(_Config, _PredirsAssoc, []) ->
{ok, []};
-plugin_modules(Config, SubdirAssoc, Modules) ->
+plugin_modules(Config, PredirsAssoc, Modules) ->
FoundModules = [M || M <- Modules, code:which(M) =/= non_existing],
- plugin_modules(Config, SubdirAssoc, FoundModules, Modules -- FoundModules).
+ plugin_modules(Config, PredirsAssoc, FoundModules, Modules -- FoundModules).
-plugin_modules(_Config, _SubdirAssoc, FoundModules, []) ->
+plugin_modules(_Config, _PredirsAssoc, FoundModules, []) ->
{ok, FoundModules};
-plugin_modules(Config, SubdirAssoc, FoundModules, MissingModules) ->
- {Loaded, NotLoaded} = load_plugin_modules(Config, SubdirAssoc,
+plugin_modules(Config, PredirsAssoc, FoundModules, MissingModules) ->
+ {Loaded, NotLoaded} = load_plugin_modules(Config, PredirsAssoc,
MissingModules),
AllViablePlugins = FoundModules ++ Loaded,
case NotLoaded =/= [] of
@@ -528,7 +528,7 @@ plugin_modules(Config, SubdirAssoc, FoundModules, MissingModules) ->
end,
{ok, AllViablePlugins}.
-load_plugin_modules(Config, SubdirAssoc, Modules) ->
+load_plugin_modules(Config, PredirsAssoc, Modules) ->
Cwd = rebar_utils:get_cwd(),
PluginDir = case rebar_config:get_local(Config, plugin_dir, undefined) of
undefined ->
@@ -540,7 +540,7 @@ load_plugin_modules(Config, SubdirAssoc, Modules) ->
%% Find relevant sources in base_dir and plugin_dir
Erls = string:join([atom_to_list(M)++"\\.erl" || M <- Modules], "|"),
RE = "^" ++ Erls ++ "\$",
- BaseDir = get_plugin_base_dir(Cwd, SubdirAssoc),
+ BaseDir = get_plugin_base_dir(Cwd, PredirsAssoc),
%% If a plugin is found both in base_dir and plugin_dir, the clash
%% will provoke an error and we'll abort.
Sources = rebar_utils:find_files(PluginDir, RE, false)
@@ -552,8 +552,8 @@ load_plugin_modules(Config, SubdirAssoc, Modules) ->
NotLoaded = [V || V <- Modules, FilterMissing(V)],
{Loaded, NotLoaded}.
-get_plugin_base_dir(Cwd, SubdirAssoc) ->
- case dict:find(Cwd, SubdirAssoc) of
+get_plugin_base_dir(Cwd, PredirsAssoc) ->
+ case dict:find(Cwd, PredirsAssoc) of
{ok, BaseDir} ->
BaseDir;
error ->