fix: ensure install_upgrace.escript always restore cwd

This commit is contained in:
Zaiming (Stone) Shi 2022-04-04 16:00:02 +02:00
parent d49c8b61e6
commit 8798a5160c
1 changed files with 17 additions and 13 deletions

View File

@ -262,19 +262,23 @@ make_symlink_or_copy(Filename, ReleaseLink) ->
unpack_zipballs(RelNameStr, Version) -> unpack_zipballs(RelNameStr, Version) ->
{ok, Cwd} = file:get_cwd(), {ok, Cwd} = file:get_cwd(),
GzFile = filename:absname(filename:join(["releases", RelNameStr ++ "-" ++ Version ++ ".tar.gz"])), try
ZipFiles = filelib:wildcard(filename:join(["releases", RelNameStr ++ "-*" ++ Version ++ "*.zip"])), GzFile = filename:absname(filename:join(["releases", RelNameStr ++ "-" ++ Version ++ ".tar.gz"])),
?INFO("unzip ~p", [ZipFiles]), ZipFiles = filelib:wildcard(filename:join(["releases", RelNameStr ++ "-*" ++ Version ++ "*.zip"])),
[begin ?INFO("unzip ~p", [ZipFiles]),
TmdTarD="/tmp/emqx_untar_" ++ integer_to_list(erlang:system_time()), [begin
ok = filelib:ensure_dir(filename:join([TmdTarD, "dummy"])), TmdTarD="/tmp/emqx_untar_" ++ integer_to_list(erlang:system_time()),
{ok, _} = file:copy(Zip, filename:join([TmdTarD, "emqx.zip"])), ok = filelib:ensure_dir(filename:join([TmdTarD, "dummy"])),
ok = file:set_cwd(filename:join([TmdTarD])), {ok, _} = file:copy(Zip, filename:join([TmdTarD, "emqx.zip"])),
{ok, _FileList} = zip:unzip("emqx.zip"), ok = file:set_cwd(filename:join([TmdTarD])),
ok = file:set_cwd(filename:join([TmdTarD, "emqx"])), {ok, _FileList} = zip:unzip("emqx.zip"),
ok = erl_tar:create(GzFile, filelib:wildcard("*"), [compressed]) ok = file:set_cwd(filename:join([TmdTarD, "emqx"])),
end || Zip <- ZipFiles], ok = erl_tar:create(GzFile, filelib:wildcard("*"), [compressed])
file:set_cwd(Cwd). end || Zip <- ZipFiles]
after
% restore cwd
file:set_cwd(Cwd)
end.
first_value(_Fun, []) -> no_value; first_value(_Fun, []) -> no_value;
first_value(Fun, [Value | Rest]) -> first_value(Fun, [Value | Rest]) ->