summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorEvgeny Khramtsov <ekhramtsov@process-one.net>2019-06-14 23:35:51 +0300
committerEvgeny Khramtsov <ekhramtsov@process-one.net>2019-06-14 23:35:51 +0300
commitea76b87461eb5ed09449b6a93aa93e8c322b9a9a (patch)
treebe8db37925465163592bc256c9a539d5b5557d29 /tools
parentAccept output argument in tools/opt_types.sh (diff)
Ignore beams compiled by Elixir
Diffstat (limited to 'tools')
-rwxr-xr-xtools/hook_deps.sh40
-rwxr-xr-xtools/opt_types.sh44
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]),