diff options
author | Evgeny Khramtsov <ekhramtsov@process-one.net> | 2019-06-14 23:35:51 +0300 |
---|---|---|
committer | Evgeny Khramtsov <ekhramtsov@process-one.net> | 2019-06-14 23:35:51 +0300 |
commit | ea76b87461eb5ed09449b6a93aa93e8c322b9a9a (patch) | |
tree | be8db37925465163592bc256c9a539d5b5557d29 /tools | |
parent | Accept output argument in tools/opt_types.sh (diff) |
Ignore beams compiled by Elixir
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/hook_deps.sh | 40 | ||||
-rwxr-xr-x | tools/opt_types.sh | 44 |
2 files changed, 56 insertions, 28 deletions
diff --git a/tools/hook_deps.sh b/tools/hook_deps.sh index 4dca7f07..1ca4b426 100755 --- a/tools/hook_deps.sh +++ b/tools/hook_deps.sh @@ -1,6 +1,5 @@ #!/usr/bin/env escript %% -*- erlang -*- -%%! -pa ebin -record(state, {run_hooks = dict:new(), run_fold_hooks = dict:new(), @@ -342,12 +341,16 @@ fold_beams(Fun, State, Paths) -> fun(File, {I, Acc}) -> io:format("Progress: ~B% (~B/~B)\r", [round(I*100/Total), I, Total]), - AbsCode = get_code_from_beam(File), - Acc2 = lists:foldl( - fun(Form, Acc1) -> - Fun(File, Form, Acc1) - end, Acc, AbsCode), - {I+1, Acc2} + case is_elixir_beam(File) of + true -> {I+1, Acc}; + false -> + AbsCode = get_code_from_beam(File), + Acc2 = lists:foldl( + fun(Form, Acc1) -> + Fun(File, Form, Acc1) + end, Acc, AbsCode), + {I+1, Acc2} + end end, {0, State}, Paths1), State1. @@ -356,17 +359,28 @@ fold_paths(Paths) -> fun(Path) -> case filelib:is_dir(Path) of true -> - lists:reverse( - filelib:fold_files( - Path, ".+\.beam\$", false, - fun(File, Acc) -> - [File|Acc] - end, [])); + Beams = lists:reverse( + filelib:fold_files( + Path, ".+\.beam\$", false, + fun(File, Acc) -> + [File|Acc] + end, [])), + case Beams of + [] -> ok; + _ -> code:add_path(Path) + end, + Beams; false -> [Path] end end, Paths). +is_elixir_beam(File) -> + case filename:basename(File) of + "Elixir" ++ _ -> true; + _ -> false + end. + get_code_from_beam(File) -> try {ok, {_, List}} = beam_lib:chunks(File, [abstract_code]), diff --git a/tools/opt_types.sh b/tools/opt_types.sh index a5c47597..6dd46c33 100755 --- a/tools/opt_types.sh +++ b/tools/opt_types.sh @@ -1,6 +1,5 @@ #!/usr/bin/env escript %% -*- erlang -*- -%%! -pa ebin -compile([nowarn_unused_function]). -record(state, {g_opts = #{} :: map(), @@ -495,14 +494,18 @@ fold_beams(Fun, State, Paths) -> fun(File, {I, Acc}) -> io:format("Progress: ~B% (~B/~B)\r", [round(I*100/Total), I, Total]), - AbsCode = get_code_from_beam(File), - Acc2 = case is_behaviour(AbsCode, ejabberd_config) of - true -> - fold_opt(File, Fun, Acc, AbsCode); - false -> - fold_mod_opt(File, Fun, Acc, AbsCode) - end, - {I+1, Acc2} + case is_elixir_beam(File) of + true -> {I+1, Acc}; + false -> + AbsCode = get_code_from_beam(File), + Acc2 = case is_behaviour(AbsCode, ejabberd_config) of + true -> + fold_opt(File, Fun, Acc, AbsCode); + false -> + fold_mod_opt(File, Fun, Acc, AbsCode) + end, + {I+1, Acc2} + end end, {0, State}, Paths1), State1. @@ -543,12 +546,17 @@ fold_paths(Paths) -> fun(Path) -> case filelib:is_dir(Path) of true -> - lists:reverse( - filelib:fold_files( - Path, ".+\.beam\$", false, - fun(File, Acc) -> - [File|Acc] - end, [])); + Beams = lists:reverse( + filelib:fold_files( + Path, ".+\.beam\$", false, + fun(File, Acc) -> + [File|Acc] + end, [])), + case Beams of + [] -> ok; + _ -> code:add_path(Path) + end, + Beams; false -> [Path] end @@ -566,6 +574,12 @@ is_behaviour(AbsCode, Mod) -> end end, AbsCode). +is_elixir_beam(File) -> + case filename:basename(File) of + "Elixir" ++ _ -> true; + _ -> false + end. + get_code_from_beam(File) -> try {ok, {_, List}} = beam_lib:chunks(File, [abstract_code]), |