Skip to content

Commit 000ac53

Browse files
authored
Merge pull request #2309 from pablocostass/2307_local_commands_delete_applications
Extract rebar3 libs in a version dependent directory when using local commands
2 parents 8876d0c + 385c94a commit 000ac53

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

src/rebar_prv_local_install.erl

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,11 @@ format_error({non_writeable, Dir}) ->
6161
format_error(Reason) ->
6262
io_lib:format("~p", [Reason]).
6363

64-
bin_contents(OutputDir) ->
65-
{ok, Vsn} = application:get_key(rebar, vsn),
64+
bin_contents(OutputDir, Vsn) ->
6665
<<"#!/usr/bin/env sh
6766
## Rebar3 ", (iolist_to_binary(Vsn))/binary, "
68-
erl -pz ", (rebar_utils:to_binary(OutputDir))/binary,"/*/ebin +sbtu +A1 -noshell -boot start_clean -s rebar3 main $REBAR3_ERL_ARGS -extra \"$@\"
67+
VSN=${VSN:-", (iolist_to_binary(Vsn))/binary, "}
68+
erl -pz ", (rebar_utils:to_binary(OutputDir))/binary,"/${VSN}/lib/*/ebin +sbtu +A1 -noshell -boot start_clean -s rebar3 main $REBAR3_ERL_ARGS -extra \"$@\"
6969
">>.
7070

7171
extract_escript(State, ScriptPath) ->
@@ -75,8 +75,10 @@ extract_escript(State, ScriptPath) ->
7575
%% Extract contents of Archive to ~/.cache/rebar3/lib
7676
%% And add a rebar3 bin script to ~/.cache/rebar3/bin
7777
Opts = rebar_state:opts(State),
78-
OutputDir = filename:join(rebar_dir:global_cache_dir(Opts), "lib"),
79-
case filelib:ensure_dir(filename:join(OutputDir, "empty")) of
78+
{ok, Vsn} = application:get_key(rebar, vsn),
79+
VersionsDir = filename:join(rebar_dir:global_cache_dir(Opts), "vsns"),
80+
OutputDir = filename:join([VersionsDir, Vsn, "lib"]),
81+
case filelib:ensure_dir(filename:join([OutputDir, "empty"])) of
8082
ok ->
8183
ok;
8284
{error, Posix} when Posix == eaccess; Posix == enoent ->
@@ -91,7 +93,7 @@ extract_escript(State, ScriptPath) ->
9193
filelib:ensure_dir(BinFile),
9294

9395
?INFO("Writing rebar3 run script ~ts...", [BinFile]),
94-
file:write_file(BinFile, bin_contents(OutputDir)),
96+
file:write_file(BinFile, bin_contents(VersionsDir, Vsn)),
9597
ok = file:write_file_info(BinFile, #file_info{mode=33277}),
9698

9799
?INFO("Add to $PATH for use: export PATH=~ts:$PATH", [BinDir]),

0 commit comments

Comments
 (0)