|
@ -26,7 +26,8 @@ |
|
|
%% ------------------------------------------------------------------- |
|
|
%% ------------------------------------------------------------------- |
|
|
-module(rebar_escripter). |
|
|
-module(rebar_escripter). |
|
|
|
|
|
|
|
|
-export([escriptize/2]). |
|
|
|
|
|
|
|
|
-export([escriptize/2, |
|
|
|
|
|
clean/2]). |
|
|
|
|
|
|
|
|
-include("rebar.hrl"). |
|
|
-include("rebar.hrl"). |
|
|
|
|
|
|
|
@ -35,10 +36,14 @@ |
|
|
%% =================================================================== |
|
|
%% =================================================================== |
|
|
|
|
|
|
|
|
escriptize(Config, AppFile) -> |
|
|
escriptize(Config, AppFile) -> |
|
|
%% Extract the application name from the archive -- this will be be what |
|
|
|
|
|
%% we call the output script |
|
|
|
|
|
|
|
|
%% Extract the application name from the archive -- this is the default |
|
|
|
|
|
%% name of the generated script |
|
|
AppName = rebar_app_utils:app_name(AppFile), |
|
|
AppName = rebar_app_utils:app_name(AppFile), |
|
|
|
|
|
|
|
|
|
|
|
%% Get the output filename for the escript -- this may include dirs |
|
|
|
|
|
Filename = rebar_config:get_local(Config, escript_name, AppName), |
|
|
|
|
|
filelib:ensure_dir(Filename), |
|
|
|
|
|
|
|
|
%% Look for a list of other applications (dependencies) to include |
|
|
%% Look for a list of other applications (dependencies) to include |
|
|
%% in the output file. We then use the .app files for each of these |
|
|
%% in the output file. We then use the .app files for each of these |
|
|
%% to pull in all the .beam files. |
|
|
%% to pull in all the .beam files. |
|
@ -52,7 +57,7 @@ escriptize(Config, AppFile) -> |
|
|
%% Archive was successfully created. Prefix that binary with our |
|
|
%% Archive was successfully created. Prefix that binary with our |
|
|
%% header and write to our escript file |
|
|
%% header and write to our escript file |
|
|
Script = <<"#!/usr/bin/env escript\n", ZipBin/binary>>, |
|
|
Script = <<"#!/usr/bin/env escript\n", ZipBin/binary>>, |
|
|
case file:write_file(AppName, Script) of |
|
|
|
|
|
|
|
|
case file:write_file(Filename, Script) of |
|
|
ok -> |
|
|
ok -> |
|
|
ok; |
|
|
ok; |
|
|
{error, WriteError} -> |
|
|
{error, WriteError} -> |
|
@ -65,9 +70,17 @@ escriptize(Config, AppFile) -> |
|
|
end, |
|
|
end, |
|
|
|
|
|
|
|
|
%% Finally, update executable perms for our script |
|
|
%% Finally, update executable perms for our script |
|
|
[] = os:cmd(?FMT("chmod u+x ~p", [AppName])), |
|
|
|
|
|
|
|
|
[] = os:cmd(?FMT("chmod u+x ~p", [Filename])), |
|
|
ok. |
|
|
ok. |
|
|
|
|
|
|
|
|
|
|
|
clean(Config, AppFile) -> |
|
|
|
|
|
%% Extract the application name from the archive -- this is the default |
|
|
|
|
|
%% name of the generated script |
|
|
|
|
|
AppName = rebar_app_utils:app_name(AppFile), |
|
|
|
|
|
|
|
|
|
|
|
%% Get the output filename for the escript -- this may include dirs |
|
|
|
|
|
Filename = rebar_config:get_local(Config, escript_name, AppName), |
|
|
|
|
|
rebar_file_utils:delete_each([Filename]). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
%% =================================================================== |
|
|
%% =================================================================== |
|
|