summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTuncer Ayaz <tuncer.ayaz@gmail.com>2011-08-26 18:29:09 +0200
committerTuncer Ayaz <tuncer.ayaz@gmail.com>2011-08-29 17:27:45 +0200
commit93128f2f6b33ce8e613baa686e9f424cfde01f7e (patch)
tree435fcdf5c7e1eaf2cc32a26ed216ce238d0aa10d
parent00b3d9d3cc10e955cda1a93473d507472d59dde7 (diff)
Search plugin sources in base_dir and plugin_dir
-rw-r--r--src/rebar_core.erl10
-rw-r--r--src/rebar_utils.erl7
2 files changed, 13 insertions, 4 deletions
diff --git a/src/rebar_core.erl b/src/rebar_core.erl
index 5e7848f..27d9223 100644
--- a/src/rebar_core.erl
+++ b/src/rebar_core.erl
@@ -407,10 +407,14 @@ load_plugin_modules(Config, Modules) ->
Dir
end,
- %% Find relevant sources
+ %% Find relevant sources in base_dir and plugin_dir
Erls = string:join([atom_to_list(M)++"\\.erl" || M <- Modules], "|"),
- RE = ".*" ++ Erls ++ "\$",
- Sources = rebar_utils:find_files(PluginDir, RE),
+ RE = "^" ++ Erls ++ "\$",
+ BaseDir = rebar_config:get_global(base_dir, []),
+ %% If a plugin is found in base_dir and plugin_dir the clash
+ %% will provoke an error and we'll abort.
+ Sources = rebar_utils:find_files(PluginDir, RE, false)
+ ++ rebar_utils:find_files(BaseDir, RE, false),
%% Compile and load plugins
Loaded = [load_plugin(Src) || Src <- Sources],
diff --git a/src/rebar_utils.erl b/src/rebar_utils.erl
index ca254eb..e19911b 100644
--- a/src/rebar_utils.erl
+++ b/src/rebar_utils.erl
@@ -32,6 +32,7 @@
wordsize/0,
sh/2,
find_files/2,
+ find_files/3,
now_str/0,
ensure_dir/1,
beam_to_mod/2, beams/1,
@@ -127,7 +128,11 @@ patch_on_windows(Cmd, Env) ->
end.
find_files(Dir, Regex) ->
- filelib:fold_files(Dir, Regex, true, fun(F, Acc) -> [F | Acc] end, []).
+ find_files(Dir, Regex, true).
+
+find_files(Dir, Regex, Recursive) ->
+ filelib:fold_files(Dir, Regex, Recursive,
+ fun(F, Acc) -> [F | Acc] end, []).
now_str() ->
{{Year, Month, Day}, {Hour, Minute, Second}} = calendar:local_time(),