diff options
| author | Tuncer Ayaz <tuncer.ayaz@gmail.com> | 2014-03-30 19:47:31 +0200 | 
|---|---|---|
| committer | Tuncer Ayaz <tuncer.ayaz@gmail.com> | 2014-03-30 22:07:26 +0200 | 
| commit | 883decce3d8599762fc7267948ceb33acd7a1278 (patch) | |
| tree | 82ea8ac67056e8cb959e75e24476b170e52d09af /src | |
| parent | 47c089aa806653d826b8bc5f4b8dc29724af1da7 (diff) | |
Fix 'rebar generate' regression (#253)
If the directory we're about to process contains
reltool.config[.script] and the command to be applied is
'generate', then it's safe to process. We do this to retain the
behavior of specifying {sub_dirs, ["rel"]} and have "rebar generate"
pick up rel/reltool.config[.script]. Without this workaround you'd
have to run "rebar -r generate" (which you don't want to do if you
have deps or other sub_dirs) or "cd rel && rebar generate".
Diffstat (limited to 'src')
| -rw-r--r-- | src/rebar_core.erl | 22 | 
1 files changed, 21 insertions, 1 deletions
| diff --git a/src/rebar_core.erl b/src/rebar_core.erl index 81b9a6d..f54147f 100644 --- a/src/rebar_core.erl +++ b/src/rebar_core.erl @@ -152,14 +152,34 @@ maybe_process_dir(Dir, ParentConfig, Command, DirSet) ->  should_cd_into_dir(Dir, Config, Command) ->      rebar_utils:processing_base_dir(Config, Dir) orelse          rebar_config:is_recursive(Config) orelse -        is_recursive_command(Config, Command). +        is_recursive_command(Config, Command) orelse +        is_generate_in_rel_dir(Command, Dir). +%% Check whether the command is part of the built-in (or extended via +%% rebar.config) list of default-recursive commands.  is_recursive_command(Config, Command) ->      {ok, AppCmds} = application:get_env(rebar, recursive_cmds),      ConfCmds = rebar_config:get_local(Config, recursive_cmds, []),      RecursiveCmds = AppCmds ++ ConfCmds,      lists:member(Command, RecursiveCmds). +%% If the directory we're about to process contains +%% reltool.config[.script] and the command to be applied is +%% 'generate', then it's safe to process. We do this to retain the +%% behavior of specifying {sub_dirs, ["rel"]} and have "rebar generate" +%% pick up rel/reltool.config[.script]. Without this workaround you'd +%% have to run "rebar -r generate" (which you don't want to do if you +%% have deps or other sub_dirs) or "cd rel && rebar generate". +is_generate_in_rel_dir(generate, Dir) -> +    case rebar_rel_utils:is_rel_dir(Dir) of +        {true, _} -> +            true; +        false -> +            false +    end; +is_generate_in_rel_dir(_, _) -> +    false. +  skip_or_process_dir({[], undefined}=ModuleSet, Config, CurrentCodePath,                      Dir, Command, DirSet) ->      process_dir1(Dir, Command, DirSet, Config, CurrentCodePath, ModuleSet); | 
