aboutsummaryrefslogtreecommitdiff
path: root/tools/hook_deps.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tools/hook_deps.sh')
-rwxr-xr-xtools/hook_deps.sh40
1 files changed, 27 insertions, 13 deletions
diff --git a/tools/hook_deps.sh b/tools/hook_deps.sh
index 4dca7f078..1ca4b4265 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]),