c55384c0ec
Helps suppressing the error "parameterized modules are no longer supported" which libraries like ChicagoBoss depend on.
67 lines
2.1 KiB
Erlang
Executable File
67 lines
2.1 KiB
Erlang
Executable File
#!/usr/bin/env escript
|
|
-export([main/1]).
|
|
|
|
main([FileName]) ->
|
|
LibDirs = (["ebin", "include", "src", "test"] ++
|
|
filelib:wildcard("{apps,deps,lib}/*/{ebin,include}")),
|
|
compile(FileName, LibDirs);
|
|
|
|
main([FileName, "-rebar", Path, LibDirs]) ->
|
|
{ok, L} = file:consult(Path),
|
|
P = dict:from_list(L),
|
|
Root = filename:dirname(Path),
|
|
|
|
Lib1 = case dict:find(lib_dirs, P) of
|
|
{ok, X} -> lists:map(fun(Sub) -> Root ++ "/" ++ Sub end, X);
|
|
_ -> []
|
|
end,
|
|
|
|
Lib2 = case dict:find(sub_dirs, P) of
|
|
{ok, Y} -> lists:foldl(
|
|
fun(Sub,Sofar) ->
|
|
Sofar ++ [
|
|
Root ++ "/" ++ Sub,
|
|
Root ++ "/" ++ Sub ++ "/include",
|
|
Root ++ "/" ++ Sub ++ "/deps",
|
|
Root ++ "/" ++ Sub ++ "/lib"
|
|
] end, [], Y);
|
|
_ -> []
|
|
end,
|
|
|
|
LibDirs1 = LibDirs ++ Lib1 ++ Lib2,
|
|
%io:format("~p~n", [LibDirs1]),
|
|
compile(FileName, LibDirs1);
|
|
|
|
main([FileName, LibDirs]) ->
|
|
compile(FileName, LibDirs).
|
|
|
|
compile(FileName, LibDirs) ->
|
|
Root = get_root(filename:dirname(FileName)),
|
|
ok = code:add_pathsa(LibDirs),
|
|
compile:file(FileName,
|
|
[warn_obsolete_guard,
|
|
warn_unused_import,
|
|
warn_shadow_vars,
|
|
warn_export_vars,
|
|
strong_validation,
|
|
report] ++
|
|
[{i, filename:join(Root, I)} || I <- LibDirs] ++
|
|
case lists:member("deps/pmod_transform/include", LibDirs) of
|
|
true -> [{parse_transform, pmod_pt}];
|
|
_ -> []
|
|
end
|
|
).
|
|
|
|
get_root(Dir) ->
|
|
Path = filename:split(filename:absname(Dir)),
|
|
filename:join(get_root(lists:reverse(Path), Path)).
|
|
|
|
get_root([], Path) ->
|
|
Path;
|
|
get_root(["src" | Tail], _Path) ->
|
|
lists:reverse(Tail);
|
|
get_root(["test" | Tail], _Path) ->
|
|
lists:reverse(Tail);
|
|
get_root([_ | Tail], Path) ->
|
|
get_root(Tail, Path).
|