Fix upgrade command

This commit is contained in:
Craig Everett 2019-12-20 22:21:03 +09:00
parent da29af2d40
commit 4139b4f3c0
53 changed files with 97 additions and 75 deletions

View File

@ -1 +1 @@
0.3.0
0.3.7

View File

@ -1,6 +1,6 @@
{application,zx,
[{description,[]},
{vsn,"0.3.0"},
{vsn,"0.3.7"},
{applications,[stdlib,kernel]},
{modules,[zx,zx_auth,zx_conn,zx_conn_sup,zx_daemon,zx_key,
zx_lib,zx_local,zx_net,zx_peer,zx_peer_man,

View File

@ -24,7 +24,7 @@
%%% @end
-module(zx).
-vsn("0.3.0").
-vsn("0.3.7").
-behavior(application).
-author("Craig Everett <zxq9@zxq9.com>").
-copyright("Craig Everett <zxq9@zxq9.com>").
@ -742,19 +742,20 @@ upgrade() ->
{ok, Meta} = zx_lib:read_project_meta(ZxDir),
PackageID = {Realm, Name, Current} = maps:get(package_id, Meta),
{ok, PackageString} = zx_lib:package_string(PackageID),
ok = tell("Current version: ~s~n", [PackageString]),
ok = tell("Current version: ~s", [PackageString]),
{ok, ID} = zx_daemon:latest({Realm, Name}),
case zx_daemon:wait_result(ID) of
{ok, Current} ->
tell("Running latest version.~n");
tell("Running latest version.");
{ok, Latest} when Latest > Current ->
NewID = {Realm, Name, Latest},
ok = acquire([NewID], [NewID]),
{ok, LatestString} = zx_lib:version_to_string(Latest),
ok = tell(info, "Acquiring upgrade: ~s", [LatestString]),
VersionTxt = filename:join(zx_lib:path(etc), "version.txt"),
ok = file:write_file(VersionTxt, LatestString),
{ok, NewString} = zx_lib:package_string(NewID),
tell("Upgraded to ~s~n.", [NewString]);
tell("Upgraded to ~s.", [NewString]);
{ok, Available} when Available < Current ->
{ok, AvailableString} = zx_lib:version_to_string(Available),
Message = "Local version is newer than ~s. Nothing to do.~n",

View File

@ -9,7 +9,7 @@
%%% @end
-module(zx_auth).
-vsn("0.3.0").
-vsn("0.3.7").
-author("Craig Everett <zxq9@zxq9.com>").
-copyright("Craig Everett <zxq9@zxq9.com>").
-license("GPL-3.0").

View File

@ -7,7 +7,7 @@
%%% @end
-module(zx_conn).
-vsn("0.3.0").
-vsn("0.3.7").
-author("Craig Everett <zxq9@zxq9.com>").
-copyright("Craig Everett <zxq9@zxq9.com>").
-license("GPL-3.0").
@ -339,7 +339,7 @@ pong(Socket) ->
fetch(Socket, ID, PackageID) ->
PIDB = term_to_binary(PackageID),
Message = <<0:1, 9:7, PIDB/binary>>,
Message = <<0:1, 12:7, PIDB/binary>>,
ok = gen_tcp:send(Socket, Message),
case wait_hops(Socket, ID, PIDB) of
ok ->

View File

@ -5,7 +5,7 @@
%%% @end
-module(zx_conn_sup).
-vsn("0.3.0").
-vsn("0.3.7").
-behavior(supervisor).
-author("Craig Everett <zxq9@zxq9.com>").
-copyright("Craig Everett <zxq9@zxq9.com>").

View File

@ -138,7 +138,7 @@
%%% @end
-module(zx_daemon).
-vsn("0.3.0").
-vsn("0.3.7").
-behavior(gen_server).
-author("Craig Everett <zxq9@zxq9.com>").
-copyright("Craig Everett <zxq9@zxq9.com>").
@ -1228,7 +1228,9 @@ handle_fetch_result(ID, {done, Bin}, {Requestor, {fetch, R, N, V}}, Requests, MX
Result =
case do_import_package(Bin) of
ok ->
ok = file:write_file(zx_lib:zsp_path({R, N, V}), Bin),
Path = zx_lib:zsp_path({R, N, V}),
ok = filelib:ensure_dir(Path),
ok = file:write_file(Path, Bin),
done;
Error ->
Error

View File

@ -8,7 +8,7 @@
%%% @end
-module(zx_key).
-vsn("0.3.0").
-vsn("0.3.7").
-author("Craig Everett <zxq9@zxq9.com>").
-copyright("Craig Everett <zxq9@zxq9.com>").
-license("GPL-3.0").

View File

@ -10,7 +10,7 @@
%%% @end
-module(zx_lib).
-vsn("0.3.0").
-vsn("0.3.7").
-author("Craig Everett <zxq9@zxq9.com>").
-copyright("Craig Everett <zxq9@zxq9.com>").
-license("GPL-3.0").
@ -206,7 +206,8 @@ get_prime(Realm) ->
-spec read_project_meta() -> Result
when Result :: {ok, zx_zsp:meta()}
| {error, file:posix()}.
| {error, file:posix()}
| {error, file:posix(), non_neg_integer()}.
%% @private
%% @equiv read_meta(".")

View File

@ -6,7 +6,7 @@
%%% @end
-module(zx_local).
-vsn("0.3.0").
-vsn("0.3.7").
-author("Craig Everett <zxq9@zxq9.com>").
-copyright("Craig Everett <zxq9@zxq9.com>").
-license("GPL-3.0").
@ -1089,15 +1089,20 @@ version_up(patch, {Realm, Name, OldVersion = {Major, Minor, Patch}}, OldMeta) ->
package(TargetDir) ->
ok = tell("Packaging ~ts", [TargetDir]),
{ok, Meta} = zx_lib:read_project_meta(TargetDir),
case zx_lib:read_project_meta(TargetDir) of
{ok, Meta} -> package2(TargetDir, Meta);
Error -> Error
end.
package2(TargetDir, Meta) ->
{Realm, _, _} = maps:get(package_id, Meta),
UserName = select_user(Realm),
case select_private_key({Realm, UserName}) of
{ok, Key} -> package2(TargetDir, Key);
{ok, Key} -> package3(TargetDir, Key);
error -> {error, "User has no private keys on the local system.", 1}
end.
package2(TargetDir, Key) ->
package3(TargetDir, Key) ->
case zx_zsp:pack(TargetDir, Key) of
{ok, Path} -> tell("Wrote archive ~ts", [Path]);
{error, eexists} -> {error, "Package file already exists. Aborting", 17};

View File

@ -5,7 +5,7 @@
%%% @end
-module(zx_net).
-vsn("0.3.0").
-vsn("0.3.7").
-author("Craig Everett <zxq9@zxq9.com>").
-copyright("Craig Everett <zxq9@zxq9.com>").
-license("GPL-3.0").

View File

@ -8,7 +8,7 @@
%%% @end
-module(zx_peer).
-vsn("0.3.0").
-vsn("0.3.7").
-author("Craig Everett <zxq9@zxq9.com>").
-copyright("Craig Everett <zxq9@zxq9.com>").
-license("GPL-3.0").
@ -158,26 +158,30 @@ handle_message(<<Command:8, Bin/binary>>) ->
1 -> zx_daemon:subscribe(Payload);
2 -> zx_daemon:unsubscribe(Payload);
3 -> deferred(fun list/1, Payload);
4 -> deferred(fun zx_daemon:latest/1, Payload);
5 -> deferred(fun provides/1, Payload);
6 -> deferred(fun zx_daemon:list_deps/1, Payload);
7 -> deferred(fun zx_daemon:list_sysops/1, Payload);
8 -> deferred(fun zx_daemon:fetch/1, Payload);
9 -> zx_daemon:install(Payload);
10 -> zx_daemon:build(Payload);
11 -> zx_daemon:list_mirrors();
12 -> zx_daemon:add_mirror(Payload);
13 -> zx_daemon:drop_mirror(Payload);
14 -> register_key(Payload);
15 -> get_key(Payload);
16 -> keybin(Payload);
17 -> zx_daemon:find_keypair(Payload);
18 -> have_key(Payload);
19 -> list_keys(Payload);
20 -> zx_daemon:takeover(Payload);
21 -> zx_daemon:abdicate(Payload);
22 -> zx_daemon:drop_realm(Payload);
23 -> deferred(fun zx_daemon:keychain/1, Payload)
4 -> deferred(fun list/1, Payload);
5 -> deferred(fun zx_daemon:latest/1, Payload);
6 -> deferred(fun zx_daemon:describe/1, Payload);
7 -> deferred(fun zx_daemon:tags/1, Payload);
8 -> deferred(fun provides/1, Payload);
9 -> deferred(fun zx_daemon:search/1, Payload);
10 -> deferred(fun zx_daemon:list_deps/1, Payload);
11 -> deferred(fun zx_daemon:list_sysops/1, Payload);
12 -> zx_daemon:fetch(Payload);
13 -> zx_daemon:keychain(Payload);
14 -> zx_daemon:install(Payload);
15 -> zx_daemon:build(Payload);
16 -> zx_daemon:list_mirrors();
17 -> zx_daemon:add_mirror(Payload);
18 -> zx_daemon:drop_mirror(Payload);
19 -> register_key(Payload);
20 -> get_key(Payload);
21 -> keybin(Payload);
22 -> zx_daemon:find_keypair(Payload);
23 -> have_key(Payload);
24 -> list_keys(Payload);
25 -> zx_daemon:takeover(Payload);
26 -> zx_daemon:abdicate(Payload);
27 -> zx_daemon:drop_realm(Payload)
end,
pack(Result).

View File

@ -9,7 +9,7 @@
%%% @end
-module(zx_peer_man).
-vsn("0.3.0").
-vsn("0.3.7").
-behavior(gen_server).
-author("Craig Everett <zxq9@zxq9.com>").
-copyright("Craig Everett <zxq9@zxq9.com>").

View File

@ -6,7 +6,7 @@
%%% @end
-module(zx_peer_sup).
-vsn("0.3.0").
-vsn("0.3.7").
-behaviour(supervisor).
-author("Craig Everett <zxq9@zxq9.com>").
-copyright("Craig Everett <zxq9@zxq9.com>").

View File

@ -10,7 +10,7 @@
%%% @end
-module(zx_peers).
-vsn("0.3.0").
-vsn("0.3.7").
-behavior(supervisor).
-author("Craig Everett <zxq9@zxq9.com>").
-copyright("Craig Everett <zxq9@zxq9.com>").

View File

@ -5,7 +5,7 @@
%%% @end
-module(zx_proxy).
-vsn("0.3.0").
-vsn("0.3.7").
-author("Craig Everett <zxq9@zxq9.com>").
-copyright("Craig Everett <zxq9@zxq9.com>").
-license("GPL-3.0").
@ -137,31 +137,36 @@ loop(Parent, Debug, State = #s{socket = Socket}) ->
dispatch(Socket, Action) ->
case Action of
{list, R} -> make_query(Socket, 3, R);
{list, R, N} -> make_query(Socket, 3, {R, N});
{list, R, N, V} -> make_query(Socket, 3, {R, N, V});
{latest, R, N} -> make_query(Socket, 4, {R, N});
{latest, R, N, V} -> make_query(Socket, 4, {R, N, V});
{provides, R, M} -> make_query(Socket, 5, {R, M});
{list_deps, R, N, V} -> make_query(Socket, 6, {R, N, V});
{list_sysops, R} -> make_query(Socket, 7, R);
{list, R} -> make_query(Socket, 3, R);
{list, R, N} -> make_query(Socket, 4, {R, N});
{list, R, N, V} -> make_query(Socket, 4, {R, N, V});
{latest, R, N} -> make_query(Socket, 5, {R, N});
{latest, R, N, V} -> make_query(Socket, 5, {R, N, V});
{describe, R, N} -> make_query(Socket, 6, {R, N});
{describe, R, N, V} -> make_query(Socket, 6, {R, N, V});
{tags, R, N} -> make_query(Socket, 7, {R, N});
{tags, R, N, V} -> make_query(Socket, 7, {R, N, V});
{provides, R, M} -> make_query(Socket, 8, {R, M});
{search, R, String} -> make_query(Socket, 9, {R, String});
{list_deps, R, N, V} -> make_query(Socket, 10, {R, N, V});
{list_sysops, R} -> make_query(Socket, 11, R);
% {fetch, R, N, V} -> fetch(Socket, {R, N, V});
{fetch, R, N, V} -> make_query(Socket, 8, {R, N, V});
{install, R, N, V} -> make_query(Socket, 9, {R, N, V});
{build, R, N, V} -> make_query(Socket, 10, {R, N, V});
{list_mirrors} -> make_query(Socket, 11, none);
{add_mirror, Host} -> make_query(Socket, 12, Host);
{drop_mirror, Host} -> make_query(Socket, 13, Host);
{register_key, Data} -> make_query(Socket, 14, Data);
{get_key, KeyID} -> make_query(Socket, 15, KeyID);
{keybin, KeyID} -> make_query(Socket, 16, KeyID);
{find_keypair, KeyID} -> make_query(Socket, 17, KeyID);
{have_key, Type, KID} -> make_query(Socket, 18, {Type, KID});
{list_keys, R} -> make_query(Socket, 19, R);
{takeover, R} -> make_query(Socket, 20, R);
{abdicate, R} -> make_query(Socket, 21, R);
{drop_realm, R} -> make_query(Socket, 22, R);
{keychain, R, K} -> make_query(Socket, 23, {R, K});
{fetch, R, N, V} -> make_query(Socket, 12, {R, N, V});
{keychain, R, K} -> make_query(Socket, 13, {R, K});
{install, R, N, V} -> make_query(Socket, 14, {R, N, V});
{build, R, N, V} -> make_query(Socket, 15, {R, N, V});
{list_mirrors} -> make_query(Socket, 16, none);
{add_mirror, Host} -> make_query(Socket, 17, Host);
{drop_mirror, Host} -> make_query(Socket, 18, Host);
{register_key, Data} -> make_query(Socket, 19, Data);
{get_key, KeyID} -> make_query(Socket, 20, KeyID);
{keybin, KeyID} -> make_query(Socket, 21, KeyID);
{find_keypair, KeyID} -> make_query(Socket, 22, KeyID);
{have_key, Type, KID} -> make_query(Socket, 23, {Type, KID});
{list_keys, R} -> make_query(Socket, 24, R);
{takeover, R} -> make_query(Socket, 25, R);
{abdicate, R} -> make_query(Socket, 26, R);
{drop_realm, R} -> make_query(Socket, 27, R);
Unexpected ->
Message = "Received unexpected request action. Action: ~200tp",
ok = log(warning, Message, [Unexpected]),

View File

@ -5,7 +5,7 @@
%%% @end
-module(zx_sup).
-vsn("0.3.0").
-vsn("0.3.7").
-behavior(supervisor).
-author("Craig Everett <zxq9@zxq9.com>").
-copyright("Craig Everett <zxq9@zxq9.com>").

View File

@ -6,7 +6,7 @@
%%% @end
-module(zx_tty).
-vsn("0.3.0").
-vsn("0.3.7").
-author("Craig Everett <zxq9@zxq9.com>").
-copyright("Craig Everett <zxq9@zxq9.com>").
-license("GPL-3.0").

View File

@ -5,7 +5,7 @@
%%% @end
-module(zx_userconf).
-vsn("0.3.0").
-vsn("0.3.7").
-author("Craig Everett <zxq9@zxq9.com>").
-copyright("Craig Everett <zxq9@zxq9.com>").
-license("GPL-3.0").

View File

@ -7,7 +7,7 @@
%%% @end
-module(zx_zsp).
-vsn("0.3.0").
-vsn("0.3.7").
-author("Craig Everett <zxq9@zxq9.com>").
-copyright("Craig Everett <zxq9@zxq9.com>").
-license("GPL-3.0").
@ -181,7 +181,11 @@ blithely_extract(ZspBin, lib) ->
install(<<SS:24, _:SS/binary, MS:24, _:MS/binary, TarGZ/binary>>, Path) ->
ok = filelib:ensure_dir(Path),
ok = zx_lib:rm_rf(Path),
ok = file:make_dir(Path),
ok =
case filelib:is_dir(Path) of
true -> ok;
false -> file:make_dir(Path)
end,
erl_tar:extract({binary, TarGZ}, [{cwd, Path}, compressed]).

View File

@ -8,7 +8,7 @@
{license,[]}.
{modules,[]}.
{name,[]}.
{package_id,{"otpr","zx",{0,3,0}}}.
{package_id,{"otpr","zx",{0,3,7}}}.
{prefix,"zx_"}.
{repo_url,[]}.
{tags,[]}.