#!/usr/bin/env escript main(_) -> Files = lists:ukeysort(1, lists:flatten(files())), {ok, {"mad", ZipBin}} = zip:create("mad", Files, [memory]), Script = iolist_to_binary([ "#!/usr/bin/env escript\n", "%% " ++ comment(), "%%! -pa mad/mad/ebin\n", ZipBin]), file:write_file("mad", Script), os:cmd("chmod +x mad"). files() -> [read_file(F) || F <- filelib:wildcard("*", "ebin")]. read_file(F) -> [[{"ebin/", <<>>}], {F, file_contents(F)}]. file_contents(F) -> {ok, Bin} = file:read_file(filename:join("ebin", F)), Bin. comment() -> "Dependency manager for Erlang\n".