diff options
author | Tuncer Ayaz <tuncer.ayaz@gmail.com> | 2013-06-15 11:14:04 +0200 |
---|---|---|
committer | Tuncer Ayaz <tuncer.ayaz@gmail.com> | 2013-06-24 21:46:24 +0200 |
commit | bdf957b20184d9db081eaec2b715fdd0302aca2c (patch) | |
tree | b55f4e1c919649b305780e65803bf1e273a5a378 /src | |
parent | edd835510b62c88bdc451839f1a34ceeb06cbd66 (diff) |
rebar_core: fix consistency issues caused by 252b31f
- refactor plugin dirs code to be simpler and easier to read
- use erlang-mode's default (%%) comments for portability/consistency
- make sure erlang-mode's indenter is used so that a future whole
buffer indent doesn't get messed up
Diffstat (limited to 'src')
-rw-r--r-- | src/rebar_core.erl | 38 |
1 files changed, 22 insertions, 16 deletions
diff --git a/src/rebar_core.erl b/src/rebar_core.erl index 61e8412..fcfa62a 100644 --- a/src/rebar_core.erl +++ b/src/rebar_core.erl @@ -533,21 +533,7 @@ plugin_modules(Config, PredirsAssoc, FoundModules, MissingModules) -> load_plugin_modules(Config, PredirsAssoc, Modules) -> Cwd = rebar_utils:get_cwd(), - PluginDirs = case rebar_config:get_local(Config, plugin_dir, undefined) of - undefined -> - % Plugin can be in the project's "plugins" folder - [filename:join(Cwd, "plugins")]; - Dir -> - [Dir] - end ++ - % We also want to include this case: - % Plugin can be in "plugins" directory of the plugin base directory. For - % example, Cwd depends on Plugin, and deps/Plugin/plugins/Plugin.erl is the - % plugin. - [ - filename:join(Dir, "plugins") || - Dir <- get_plugin_base_dirs(Cwd, PredirsAssoc) - ], + PluginDirs = get_all_plugin_dirs(Config, Cwd, PredirsAssoc), %% Find relevant sources in base_dir and plugin_dir Erls = string:join([atom_to_list(M)++"\\.erl" || M <- Modules], "|"), @@ -562,12 +548,32 @@ load_plugin_modules(Config, PredirsAssoc, Modules) -> NotLoaded = [V || V <- Modules, FilterMissing(V)], {Loaded, NotLoaded}. +get_all_plugin_dirs(Config, Cwd, PredirsAssoc) -> + get_plugin_dir(Config, Cwd) ++ get_base_plugin_dirs(Cwd, PredirsAssoc). + +get_plugin_dir(Config, Cwd) -> + case rebar_config:get_local(Config, plugin_dir, undefined) of + undefined -> + %% Plugin can be in the project's "plugins" folder + [filename:join(Cwd, "plugins")]; + Dir -> + [Dir] + end. + +%% We also want to include this case: +%% Plugin can be in "plugins" directory of the plugin base directory. +%% For example, Cwd depends on Plugin, and deps/Plugin/plugins/Plugin.erl +%% is the plugin. +get_base_plugin_dirs(Cwd, PredirsAssoc) -> + [filename:join(Dir, "plugins") || + Dir <- get_plugin_base_dirs(Cwd, PredirsAssoc)]. + %% @doc PredirsAssoc is a dictionary of plugindir -> 'parent' pairs %% 'parent' in this case depends on plugin; therefore we have to give %% all plugins that Cwd ('parent' in this case) depends on. get_plugin_base_dirs(Cwd, PredirsAssoc) -> [PluginDir || {PluginDir, Master} <- dict:to_list(PredirsAssoc), - Master =:= Cwd]. + Master =:= Cwd]. is_missing_plugin(Loaded) -> fun(Mod) -> not lists:member(Mod, Loaded) end. |