mirror of
https://github.com/correl/rebar.git
synced 2024-11-23 19:19:54 +00:00
Rework how the escript is built so that we can inclue templates
This commit is contained in:
parent
1454b4faa6
commit
1ea7065b83
1 changed files with 15 additions and 7 deletions
22
bootstrap
22
bootstrap
|
@ -13,7 +13,7 @@ main(Args) ->
|
||||||
false ->
|
false ->
|
||||||
ok
|
ok
|
||||||
end,
|
end,
|
||||||
|
|
||||||
%% Compile all src/*.erl to ebin
|
%% Compile all src/*.erl to ebin
|
||||||
case make:files(filelib:wildcard("src/*.erl"), [{outdir, "ebin"}, {i, "include"},
|
case make:files(filelib:wildcard("src/*.erl"), [{outdir, "ebin"}, {i, "include"},
|
||||||
{d, 'BUILD_TIME', Built}]) of
|
{d, 'BUILD_TIME', Built}]) of
|
||||||
|
@ -39,10 +39,12 @@ main(Args) ->
|
||||||
%% Run rebar to do proper .app validation and such
|
%% Run rebar to do proper .app validation and such
|
||||||
rebar:main(["compile"] ++ Args),
|
rebar:main(["compile"] ++ Args),
|
||||||
|
|
||||||
%% Construct the archive of everything in ebin/ dir -- put it on the
|
%% Read the contents of the files in ebin and templates; note that we place
|
||||||
%% top-level of the zip file so that code loading works properly.
|
%% all the beam files at the top level of the code archive so that code loading
|
||||||
Files = filelib:wildcard("*", "ebin"),
|
%% works properly.
|
||||||
case zip:create("mem", Files, [{cwd, "ebin"}, memory]) of
|
Files = load_files("*", "ebin") ++ load_files("priv/templates/*", "."),
|
||||||
|
|
||||||
|
case zip:create("mem", Files, [memory]) of
|
||||||
{ok, {"mem", ZipBin}} ->
|
{ok, {"mem", ZipBin}} ->
|
||||||
%% Archive was successfully created. Prefix that binary with our
|
%% Archive was successfully created. Prefix that binary with our
|
||||||
%% header and write to "rebar" file
|
%% header and write to "rebar" file
|
||||||
|
@ -67,9 +69,15 @@ main(Args) ->
|
||||||
"your current working directory. Place this script anywhere in your path\n"
|
"your current working directory. Place this script anywhere in your path\n"
|
||||||
"and you can use rebar to build OTP-compliant apps.\n").
|
"and you can use rebar to build OTP-compliant apps.\n").
|
||||||
|
|
||||||
|
|
||||||
build_time() ->
|
build_time() ->
|
||||||
{{Y, M, D}, {H, Min, S}} = calendar:now_to_universal_time(now()),
|
{{Y, M, D}, {H, Min, S}} = calendar:now_to_universal_time(now()),
|
||||||
lists:flatten(io_lib:format("~4..0w~2..0w~2..0w_~2..0w~2..0w~2..0w", [Y, M, D, H, Min, S])).
|
lists:flatten(io_lib:format("~4..0w~2..0w~2..0w_~2..0w~2..0w~2..0w", [Y, M, D, H, Min, S])).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
load_files(Wildcard, Dir) ->
|
||||||
|
[read_file(Filename, Dir) || Filename <- filelib:wildcard(Wildcard, Dir)].
|
||||||
|
|
||||||
|
read_file(Filename, Dir) ->
|
||||||
|
{ok, Bin} = file:read_file(filename:join(Dir, Filename)),
|
||||||
|
{Filename, Bin}.
|
||||||
|
|
Loading…
Reference in a new issue