diff options
author | Tuncer Ayaz <tuncer.ayaz@gmail.com> | 2012-05-18 22:16:38 +0200 |
---|---|---|
committer | Tuncer Ayaz <tuncer.ayaz@gmail.com> | 2012-06-14 23:46:55 +0200 |
commit | 1e980859e2ecf0ee0fb2036b3a35496492246d55 (patch) | |
tree | d44283fd7ec13e1bf06936eaadb3ec3f67380268 /bootstrap | |
parent | 8fb552b73f8f83fae96bf0b970b94a4c2ca5effc (diff) |
Extend escriptize and reuse in bootstrap
Diffstat (limited to 'bootstrap')
-rwxr-xr-x | bootstrap | 84 |
1 files changed, 3 insertions, 81 deletions
@@ -53,36 +53,9 @@ main(Args) -> %% Add ebin/ to our path true = code:add_path("ebin"), - %% Run rebar to do proper .app validation and such - rebar:main(["compile"] ++ Args), - - TempDir = make_temp_dir(), - ok = copy_files(TempDir), %% Copy the ebin and priv/templates - {ok, Dirs} = file:list_dir(TempDir), - - case zip:create("mem", Dirs, [memory, {cwd, TempDir}]) of - {ok, {"mem", ZipBin}} -> - ok = rebar_file_utils:rm_rf(TempDir), - %% Archive was successfully created. Prefix that binary with our - %% header and write to "rebar" file. - %% Without -noshell -noinput escript consumes all input that would - %% otherwise go to the shell for the next command. - Script = <<"#!/usr/bin/env escript\n%%! -noshell -noinput\n", - ZipBin/binary>>, - case file:write_file("rebar", Script) of - ok -> - ok; - {error, WriteError} -> - io:format("Failed to write rebar script: ~p\n", - [WriteError]), - halt(1) - end; - {error, ZipError} -> - ok = rebar_file_utils:rm_rf(TempDir), - io:format("Failed to construct rebar script archive: ~p\n", - [ZipError]), - halt(1) - end, + %% Run rebar compile to do proper .app validation etc. + %% and rebar escriptize to create the rebar script + rebar:main(["compile", "escriptize"] ++ Args), %% Finally, update executable perms for our script on *nix, %% or write out script files on win32. @@ -104,37 +77,6 @@ main(Args) -> "Place this script anywhere in your path\n" "and you can use rebar to build OTP-compliant apps.\n"). -make_temp_dir() -> - case temp_name("rebar.") of - {ok, TempDir} -> - case file:make_dir(TempDir) of - ok -> - TempDir; - Error -> - io:format("Failed to create temporary directory: ~p~n", - [Error]), - halt(1), - Error - end; - Error -> - io:format("Failed to create temporary directory: ~p~n", - [Error]), - halt(1) - end. - -temp_name(Prefix) -> - temp_name(Prefix, 5). - -temp_name(_Prefix, 0) -> - {error, eexist}; -temp_name(Prefix, N) -> - Hash = erlang:phash2(make_ref()), - Name = Prefix ++ integer_to_list(Hash), - case filelib:is_file(Name) of - false -> {ok, Name}; - true -> temp_name(Prefix, N-1) - end. - rm(Path) -> NativePath = filename:nativename(Path), Cmd = case os:type() of @@ -149,26 +91,6 @@ build_time() -> lists:flatten(io_lib:format("~4..0w~2..0w~2..0w_~2..0w~2..0w~2..0w", [Y, M, D, H, Min, S])). -copy_files(Temp) -> - BaseEbinDir = filename:join("rebar", "ebin"), - BaseTemplatesDir = filename:join("priv", "templates"), - EbinDir = filename:join(Temp, BaseEbinDir), - TemplatesDir = filename:join(Temp, BaseTemplatesDir), - - %% prepare directory structure - lists:foreach( - fun(Dir) -> - ok = filelib:ensure_dir(filename:join(Dir, "dummy")) - end, [EbinDir, TemplatesDir]), - - %% copy content of ebin - EbinSrc = filename:join(["ebin", "*"]), - ok = rebar_file_utils:cp_r([EbinSrc], EbinDir), - - %% copy content of priv/templates - TemplatesSrc = filename:join(BaseTemplatesDir, "*"), - ok = rebar_file_utils:cp_r([TemplatesSrc], TemplatesDir). - vcs_info([]) -> "No VCS info available."; vcs_info([{Id, Dir, Cmd} | Rest]) -> |