summaryrefslogtreecommitdiff
path: root/src/rebar_escripter.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/rebar_escripter.erl')
-rw-r--r--src/rebar_escripter.erl21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/rebar_escripter.erl b/src/rebar_escripter.erl
index f2870d3..8b23263 100644
--- a/src/rebar_escripter.erl
+++ b/src/rebar_escripter.erl
@@ -1,4 +1,4 @@
-%% -*- tab-width: 4;erlang-indent-level: 4;indent-tabs-mode: nil -*-
+%% -*- erlang-indent-level: 4;indent-tabs-mode: nil -*-
%% ex: ts=4 sw=4 et
%% -------------------------------------------------------------------
%%
@@ -30,6 +30,7 @@
clean/2]).
-include("rebar.hrl").
+-include_lib("kernel/include/file.hrl").
%% ===================================================================
%% Public API
@@ -47,7 +48,8 @@ escriptize(Config, AppFile) ->
%% Look for a list of other applications (dependencies) to include
%% in the output file. We then use the .app files for each of these
%% to pull in all the .beam files.
- InclBeams = get_app_beams(rebar_config:get_local(Config, escript_incl_apps, []), []),
+ InclBeams = get_app_beams(
+ rebar_config:get_local(Config, escript_incl_apps, []), []),
%% Construct the archive of everything in ebin/ dir -- put it on the
%% top-level of the zip file so that code loading works properly.
@@ -61,16 +63,19 @@ escriptize(Config, AppFile) ->
ok ->
ok;
{error, WriteError} ->
- ?ERROR("Failed to write ~p script: ~p\n", [AppName, WriteError]),
+ ?ERROR("Failed to write ~p script: ~p\n",
+ [AppName, WriteError]),
?FAIL
end;
{error, ZipError} ->
- ?ERROR("Failed to construct ~p escript: ~p\n", [AppName, ZipError]),
+ ?ERROR("Failed to construct ~p escript: ~p\n",
+ [AppName, ZipError]),
?FAIL
end,
%% Finally, update executable perms for our script
- [] = os:cmd(?FMT("chmod u+x ~p", [Filename])),
+ {ok, #file_info{mode = Mode}} = file:read_file_info(Filename),
+ ok = file:change_mode(Filename, Mode bor 8#00100),
ok.
clean(Config, AppFile) ->
@@ -92,9 +97,11 @@ get_app_beams([], Acc) ->
get_app_beams([App | Rest], Acc) ->
case code:lib_dir(App, ebin) of
{error, bad_name} ->
- ?ABORT("Failed to get ebin/ directory for ~p escript_incl_apps.", [App]);
+ ?ABORT("Failed to get ebin/ directory for "
+ "~p escript_incl_apps.", [App]);
Path ->
- Acc2 = [{filename:join([App, ebin, F]), file_contents(filename:join(Path, F))} ||
+ Acc2 = [{filename:join([App, ebin, F]),
+ file_contents(filename:join(Path, F))} ||
F <- filelib:wildcard("*", Path)],
get_app_beams(Rest, Acc2 ++ Acc)
end.