mirror of
https://github.com/correl/rebar.git
synced 2024-12-18 03:00:17 +00:00
Make 'rebar xref' honour the skip_app directive
It is now possible to call rebar as: rebar xref skip_app=Mod1,Mod2,... This makes it easy to skip running xref on (e.g) imported dependencies in your application. The function rebar_utils:is_skipped_app/0 is added so that other rebar commands may use it.
This commit is contained in:
parent
e763ba28ed
commit
b4f136d752
2 changed files with 46 additions and 2 deletions
|
@ -43,7 +43,9 @@
|
|||
prop_check/3,
|
||||
expand_code_path/0,
|
||||
deprecated/5,
|
||||
expand_env_variable/3]).
|
||||
expand_env_variable/3,
|
||||
is_skipped_app/0
|
||||
]).
|
||||
|
||||
-include("rebar.hrl").
|
||||
|
||||
|
@ -199,6 +201,42 @@ expand_env_variable(InStr, VarName, RawVarValue) ->
|
|||
re:replace(InStr, RegEx, [VarValue, "\\2"], ReOpts)
|
||||
end.
|
||||
|
||||
%%
|
||||
%% Return: true , if we are in the context of a 'Skipped App', else: false
|
||||
%% (Example: rebar xref skip_app=mochiweb,webmachine)
|
||||
is_skipped_app() ->
|
||||
case rebar_config:get_global(skip_app, undefined) of
|
||||
undefined ->
|
||||
%% no skip list
|
||||
false;
|
||||
|
||||
SkipApps ->
|
||||
|
||||
case string:tokens(SkipApps, ",") of
|
||||
[] ->
|
||||
%% no tokens
|
||||
false;
|
||||
|
||||
SkipAppsTokens ->
|
||||
|
||||
%% Where we are at the moment
|
||||
Cwd = rebar_utils:get_cwd(),
|
||||
|
||||
%% Return true if app should be skipped
|
||||
SkipPred = fun(App) ->
|
||||
case re:run(Cwd, App) of
|
||||
{match,_} -> true;
|
||||
_ -> false
|
||||
end
|
||||
end,
|
||||
|
||||
%% Check if 'we' are among the skipped apps.
|
||||
lists:foldl(fun(SkippedApp, Bool) ->
|
||||
SkipPred(SkippedApp) or Bool
|
||||
end, false, SkipAppsTokens)
|
||||
end
|
||||
end.
|
||||
|
||||
|
||||
%% ====================================================================
|
||||
%% Internal functions
|
||||
|
|
|
@ -40,7 +40,13 @@
|
|||
%% Public API
|
||||
%% ===================================================================
|
||||
|
||||
xref(Config, _) ->
|
||||
xref(Config, _X) ->
|
||||
case rebar_utils:is_skipped_app() of
|
||||
true -> ok;
|
||||
false -> xref0(Config, _X)
|
||||
end.
|
||||
|
||||
xref0(Config, _) ->
|
||||
%% Spin up xref
|
||||
{ok, _} = xref:start(xref),
|
||||
ok = xref:set_library_path(xref, code_path()),
|
||||
|
|
Loading…
Reference in a new issue