summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFred Hebert <mononcqc@ferd.ca>2017-02-24 12:42:18 -0500
committerFred Hebert <mononcqc@ferd.ca>2017-02-24 13:14:43 -0500
commite82ef746a626f767dae4bd592caf7e0f643ffd3c (patch)
treec4fa4065ce593ed3d095709282a2078f33a9eb81 /src
parent4725d363c5b5583c9910f078da38c5b3a1d97aab (diff)
Windows escripts get cmd autogenerated
This also patches up a problem for hooks when dealing with directories with spaces in them, and reduces complexity of bootstrap file.
Diffstat (limited to 'src')
-rw-r--r--src/rebar_prv_escriptize.erl20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/rebar_prv_escriptize.erl b/src/rebar_prv_escriptize.erl
index 7ee20c2..5c0c989 100644
--- a/src/rebar_prv_escriptize.erl
+++ b/src/rebar_prv_escriptize.erl
@@ -130,9 +130,15 @@ escriptize(State0, App) ->
throw(?PRV_ERROR({escript_creation_failed, AppName, EscriptError}))
end,
- %% Finally, update executable perms for our script
- {ok, #file_info{mode = Mode}} = file:read_file_info(Filename),
- ok = file:change_mode(Filename, Mode bor 8#00111),
+ %% Finally, update executable perms for our script on *nix or write out
+ %% script files on win32
+ case os:type() of
+ {unix, _} ->
+ {ok, #file_info{mode = Mode}} = file:read_file_info(Filename),
+ ok = file:change_mode(Filename, Mode bor 8#00111);
+ {win32, _} ->
+ write_windows_script(Filename)
+ end,
{ok, State}.
-spec format_error(any()) -> iolist().
@@ -258,3 +264,11 @@ def(Rm, State, Key, Default) ->
rm_newline(String) ->
[C || C <- String, C =/= $\n].
+
+write_windows_script(Target) ->
+ CmdScript=
+ "@echo off\r\n"
+ "setlocal\r\n"
+ "set rebarscript=%~f0\r\n"
+ "escript.exe \"%rebarscript:.cmd=%\" %*\r\n",
+ ok = file:write_file(Target ++ ".cmd", CmdScript).