mirror of
https://github.com/correl/rebar.git
synced 2024-12-18 11:06:20 +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,
|
prop_check/3,
|
||||||
expand_code_path/0,
|
expand_code_path/0,
|
||||||
deprecated/5,
|
deprecated/5,
|
||||||
expand_env_variable/3]).
|
expand_env_variable/3,
|
||||||
|
is_skipped_app/0
|
||||||
|
]).
|
||||||
|
|
||||||
-include("rebar.hrl").
|
-include("rebar.hrl").
|
||||||
|
|
||||||
|
@ -199,6 +201,42 @@ expand_env_variable(InStr, VarName, RawVarValue) ->
|
||||||
re:replace(InStr, RegEx, [VarValue, "\\2"], ReOpts)
|
re:replace(InStr, RegEx, [VarValue, "\\2"], ReOpts)
|
||||||
end.
|
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
|
%% Internal functions
|
||||||
|
|
|
@ -40,7 +40,13 @@
|
||||||
%% Public API
|
%% 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
|
%% Spin up xref
|
||||||
{ok, _} = xref:start(xref),
|
{ok, _} = xref:start(xref),
|
||||||
ok = xref:set_library_path(xref, code_path()),
|
ok = xref:set_library_path(xref, code_path()),
|
||||||
|
|
Loading…
Reference in a new issue