Generate one file at a time (don't require ulimit change)

This commit is contained in:
Juan Wajnerman
2013-11-05 23:22:58 -03:00
parent f0e2cdbbb9
commit 8f0a03dbe5
2 changed files with 12 additions and 16 deletions

View File

@@ -4,6 +4,5 @@ zones:
mkdir -p priv/tzdata mkdir -p priv/tzdata
tar -xvzf tzdata-latest.tar.gz -C priv/tzdata tar -xvzf tzdata-latest.tar.gz -C priv/tzdata
rm tzdata-latest.tar.gz rm tzdata-latest.tar.gz
ulimit -n 1024
erl -pa ebin -s ezic_generator generate -s erlang halt erl -pa ebin -s ezic_generator generate -s erlang halt
erlc -o ebin zones/*.erl erlc -o ebin zones/*.erl

View File

@@ -22,25 +22,20 @@ generate_links([#link{from = From, to = To} | Rest], MapFile) ->
file:write(MapFile, io_lib:format("find(~p) -> find(~p);\n", [To, From])), file:write(MapFile, io_lib:format("find(~p) -> find(~p);\n", [To, From])),
generate_links(Rest, MapFile). generate_links(Rest, MapFile).
generate_zones([], _, Files) -> generate_zones([], MapFile, Files) ->
lists:foreach(fun({_, File}) -> lists:foreach(fun({ZoneName, Content}) ->
file:write(File, "]."), create_file(ZoneName, Content, MapFile)
file:close(File)
end, Files); end, Files);
generate_zones([FlatZone = #flatzone{tzname = Name} | Rest], MapFile, Files) -> generate_zones([FlatZone = #flatzone{tzname = Name} | Rest], MapFile, Files) ->
{File, NewFiles} = case orddict:find(Name, Files) of Files2 = case orddict:is_key(Name, Files) of
error -> true -> orddict:append(Name, ",\n", Files);
IO = create_file(Name, MapFile), false -> Files
{IO, orddict:store(Name, IO, Files)};
{ok, IO} ->
file:write(IO, ",\n"),
{IO, Files}
end, end,
file:write(File, io_lib:format("~1000p", [FlatZone])), Files3 = orddict:append(Name, io_lib:format("~1000p", [FlatZone]), Files2),
generate_zones(Rest, MapFile, NewFiles). generate_zones(Rest, MapFile, Files3).
create_file(ZoneName, MapFile) -> create_file(ZoneName, Content, MapFile) ->
io:format("Creating file for zone ~p~n", [ZoneName]), io:format("Creating file for zone ~p~n", [ZoneName]),
ModuleName = "ezic_zone_" ++ re:replace(string:to_lower(ZoneName), "/", "_", [global, {return, list}]), ModuleName = "ezic_zone_" ++ re:replace(string:to_lower(ZoneName), "/", "_", [global, {return, list}]),
FileName = "zones" ++ "/" ++ ModuleName ++ ".erl", FileName = "zones" ++ "/" ++ ModuleName ++ ".erl",
@@ -49,4 +44,6 @@ create_file(ZoneName, MapFile) ->
file:write(File, "-export([flatzones/0]).\n"), file:write(File, "-export([flatzones/0]).\n"),
file:write(File, "flatzones() ->\n["), file:write(File, "flatzones() ->\n["),
file:write(MapFile, io_lib:format("find(~p) -> ~p;\n", [ZoneName, list_to_atom(ModuleName)])), file:write(MapFile, io_lib:format("find(~p) -> ~p;\n", [ZoneName, list_to_atom(ModuleName)])),
File. file:write(File, Content),
file:write(File, "]."),
file:close(File).