diff --git a/zomp/etc/version.txt b/zomp/etc/version.txt index 88b6cf3..a803cc2 100644 --- a/zomp/etc/version.txt +++ b/zomp/etc/version.txt @@ -1 +1 @@ -0.13.12 +0.14.0 diff --git a/zomp/lib/otpr/zx/0.13.12/Emakefile b/zomp/lib/otpr/zx/0.14.0/Emakefile similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/Emakefile rename to zomp/lib/otpr/zx/0.14.0/Emakefile diff --git a/zomp/lib/otpr/zx/0.13.12/LICENSE b/zomp/lib/otpr/zx/0.14.0/LICENSE similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/LICENSE rename to zomp/lib/otpr/zx/0.14.0/LICENSE diff --git a/zomp/lib/otpr/zx/0.13.12/ebin/zx.app b/zomp/lib/otpr/zx/0.14.0/ebin/zx.app similarity index 95% rename from zomp/lib/otpr/zx/0.13.12/ebin/zx.app rename to zomp/lib/otpr/zx/0.14.0/ebin/zx.app index 8c6e8e8..3a40196 100644 --- a/zomp/lib/otpr/zx/0.13.12/ebin/zx.app +++ b/zomp/lib/otpr/zx/0.14.0/ebin/zx.app @@ -1,6 +1,6 @@ {application,zx, [{description,"An Erlang development tool and Zomp user client"}, - {vsn,"0.13.12"}, + {vsn,"0.14.0"}, {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, diff --git a/zomp/lib/otpr/zx/0.13.12/include/zx_logger.hrl b/zomp/lib/otpr/zx/0.14.0/include/zx_logger.hrl similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/include/zx_logger.hrl rename to zomp/lib/otpr/zx/0.14.0/include/zx_logger.hrl diff --git a/zomp/lib/otpr/zx/0.13.12/launcher.png b/zomp/lib/otpr/zx/0.14.0/launcher.png similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/launcher.png rename to zomp/lib/otpr/zx/0.14.0/launcher.png diff --git a/zomp/lib/otpr/zx/0.13.12/make_zx b/zomp/lib/otpr/zx/0.14.0/make_zx similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/make_zx rename to zomp/lib/otpr/zx/0.14.0/make_zx diff --git a/zomp/lib/otpr/zx/0.13.12/src/zx.erl b/zomp/lib/otpr/zx/0.14.0/src/zx.erl similarity index 99% rename from zomp/lib/otpr/zx/0.13.12/src/zx.erl rename to zomp/lib/otpr/zx/0.14.0/src/zx.erl index 80b35d9..4a8de89 100644 --- a/zomp/lib/otpr/zx/0.13.12/src/zx.erl +++ b/zomp/lib/otpr/zx/0.14.0/src/zx.erl @@ -24,7 +24,7 @@ %%% @end -module(zx). --vsn("0.13.12"). +-vsn("0.14.0"). -behavior(application). -author("Craig Everett "). -copyright("Craig Everett "). @@ -1224,13 +1224,21 @@ upgrade() -> fetch(PackageID) -> {ok, PackageName} = zx_lib:package_string(PackageID), ok = tell("Fetching ~ts", [PackageName]), - {ok, ID} = zx_daemon:fetch(PackageID), + {ok, ID} = zx_daemon:fetch(PackageID, [self()]), fetch2(ID). fetch2(ID) -> receive {result, ID, done} -> ok; + {rx, Size, Received} -> + ok = zx_tty:dl(Size, Received), + fetch2(ID); + {rx, done} -> + ok = zx_tty:dl(1, 1), + fetch2(ID); + {rx, overflow} -> + {error, overflow}; {result, ID, {hops, Count}} -> ok = tell("Inbound; ~w hops away.", [Count]), fetch2(ID); diff --git a/zomp/lib/otpr/zx/0.13.12/src/zx_auth.erl b/zomp/lib/otpr/zx/0.14.0/src/zx_auth.erl similarity index 99% rename from zomp/lib/otpr/zx/0.13.12/src/zx_auth.erl rename to zomp/lib/otpr/zx/0.14.0/src/zx_auth.erl index 6802fd4..37f5358 100644 --- a/zomp/lib/otpr/zx/0.13.12/src/zx_auth.erl +++ b/zomp/lib/otpr/zx/0.14.0/src/zx_auth.erl @@ -9,7 +9,7 @@ %%% @end -module(zx_auth). --vsn("0.13.12"). +-vsn("0.14.0"). -author("Craig Everett "). -copyright("Craig Everett "). -license("GPL-3.0"). diff --git a/zomp/lib/otpr/zx/0.13.12/src/zx_conn.erl b/zomp/lib/otpr/zx/0.14.0/src/zx_conn.erl similarity index 89% rename from zomp/lib/otpr/zx/0.13.12/src/zx_conn.erl rename to zomp/lib/otpr/zx/0.14.0/src/zx_conn.erl index 6232627..3be8676 100644 --- a/zomp/lib/otpr/zx/0.13.12/src/zx_conn.erl +++ b/zomp/lib/otpr/zx/0.14.0/src/zx_conn.erl @@ -7,7 +7,7 @@ %%% @end -module(zx_conn). --vsn("0.13.12"). +-vsn("0.14.0"). -author("Craig Everett "). -copyright("Craig Everett "). -license("GPL-3.0"). @@ -280,22 +280,22 @@ wait_ok(Socket) -> dispatch(Socket, ID, Action) -> case Action of - {list, R} -> send_query(Socket, 3, R); - {list, R, N} -> send_query(Socket, 4, {R, N}); - {list, R, N, V} -> send_query(Socket, 4, {R, N, V}); - {latest, R, N} -> send_query(Socket, 5, {R, N}); - {latest, R, N, V} -> send_query(Socket, 5, {R, N, V}); - {describe, R, N, V} -> send_query(Socket, 6, {R, N, V}); - {tags, R, N} -> send_query(Socket, 7, {R, N}); - {tags, R, N, V} -> send_query(Socket, 7, {R, N, V}); - {provides, R, M} -> send_query(Socket, 8, {R, M}); - {search, R, String} -> send_query(Socket, 9, {R, String}); - {list_deps, R, N, V} -> send_query(Socket, 10, {R, N, V}); - {list_sysops, R} -> send_query(Socket, 11, R); - {fetch, R, N, V} -> fetch(Socket, ID, {R, N, V}); - {keychain, R, K} -> send_query(Socket, 13, {R, K}); - {list_type, R, T} -> send_query(Socket, 14, {R, T}); - Unexpected -> + {list, R} -> send_query(Socket, 3, R); + {list, R, N} -> send_query(Socket, 4, {R, N}); + {list, R, N, V} -> send_query(Socket, 4, {R, N, V}); + {latest, R, N} -> send_query(Socket, 5, {R, N}); + {latest, R, N, V} -> send_query(Socket, 5, {R, N, V}); + {describe, R, N, V} -> send_query(Socket, 6, {R, N, V}); + {tags, R, N} -> send_query(Socket, 7, {R, N}); + {tags, R, N, V} -> send_query(Socket, 7, {R, N, V}); + {provides, R, M} -> send_query(Socket, 8, {R, M}); + {search, R, String} -> send_query(Socket, 9, {R, String}); + {list_deps, R, N, V} -> send_query(Socket, 10, {R, N, V}); + {list_sysops, R} -> send_query(Socket, 11, R); + {fetch, R, N, V, W} -> fetch(Socket, ID, W, {R, N, V}); + {keychain, R, K} -> send_query(Socket, 13, {R, K}); + {list_type, R, T} -> send_query(Socket, 14, {R, T}); + Unexpected -> Message = "Received unexpected request action. ID: ~tp, Action: ~200tp", log(warning, Message, [ID, Unexpected]) end. @@ -328,22 +328,23 @@ pong(Socket) -> gen_tcp:send(Socket, <<1:1, 0:7>>). --spec fetch(Socket, ID, PackageID) -> Result +-spec fetch(Socket, ID, Watchers, PackageID) -> Result when Socket :: gen_tcp:socket(), ID :: zx_daemon:id(), + Watchers :: [pid()], PackageID :: zx:package_id(), Result :: {done, binary()} | {error, Reason :: term()}. %% @private %% Download a package to the local cache. -fetch(Socket, ID, PackageID) -> +fetch(Socket, ID, Watchers, PackageID) -> PIDB = term_to_binary(PackageID), Message = <<0:1, 12:7, PIDB/binary>>, ok = gen_tcp:send(Socket, Message), case wait_hops(Socket, ID, PIDB) of ok -> - {ok, Bin} = zx_net:rx(Socket), + {ok, Bin} = zx_net:rx(Socket, 5000, Watchers), {done, Bin}; Error -> Error diff --git a/zomp/lib/otpr/zx/0.13.12/src/zx_conn_sup.erl b/zomp/lib/otpr/zx/0.14.0/src/zx_conn_sup.erl similarity index 99% rename from zomp/lib/otpr/zx/0.13.12/src/zx_conn_sup.erl rename to zomp/lib/otpr/zx/0.14.0/src/zx_conn_sup.erl index ea0e28d..56992cb 100644 --- a/zomp/lib/otpr/zx/0.13.12/src/zx_conn_sup.erl +++ b/zomp/lib/otpr/zx/0.14.0/src/zx_conn_sup.erl @@ -5,7 +5,7 @@ %%% @end -module(zx_conn_sup). --vsn("0.13.12"). +-vsn("0.14.0"). -behavior(supervisor). -author("Craig Everett "). -copyright("Craig Everett "). diff --git a/zomp/lib/otpr/zx/0.13.12/src/zx_daemon.erl b/zomp/lib/otpr/zx/0.14.0/src/zx_daemon.erl similarity index 98% rename from zomp/lib/otpr/zx/0.13.12/src/zx_daemon.erl rename to zomp/lib/otpr/zx/0.14.0/src/zx_daemon.erl index 4e5401b..33cfc9a 100644 --- a/zomp/lib/otpr/zx/0.13.12/src/zx_daemon.erl +++ b/zomp/lib/otpr/zx/0.14.0/src/zx_daemon.erl @@ -138,7 +138,7 @@ %%% @end -module(zx_daemon). --vsn("0.13.12"). +-vsn("0.14.0"). -behavior(gen_server). -author("Craig Everett "). -copyright("Craig Everett "). @@ -152,7 +152,7 @@ list/0, list/1, list/2, list/3, list_type/1, latest/1, describe/1, provides/2, list_deps/1, search/1, list_sysops/1, - fetch/1, install/1, build/1, + fetch/1, fetch/2, install/1, build/1, wait_result/1, wait_results/1]). -export([register_key/2, get_key/2, get_keybin/2, have_key/2, list_keys/2]). @@ -269,7 +269,7 @@ | {list_sysops, zx:realm()} | {pending, zx:realm(), zx:name()} | {approved, zx:realm()} - | {fetch, zx:realm(), zx:name(), zx:version()} + | {fetch, zx:realm(), zx:name(), zx:version(), [pid()]} | {keychain, zx:realm(), zx:key_name()}. % Outgoing Result Messages @@ -558,13 +558,28 @@ list_sysops(Realm) -> request({list_sysops, Realm}). --spec fetch(zx:package_id()) -> {ok, id()}. +-spec fetch(PackageID) -> Result + when PackageID :: zx:package_id(), + Result :: {ok, JobID :: id()}. +%% @doc +%% Install the specified package. This returns an id() that will be referenced +%% in a later response message. +%% @equiv fetch(PackageID, []). + +fetch(PackageID) -> + fetch(PackageID, []). + + +-spec fetch(PackageID, Watchers) -> Result + when PackageID :: zx:package_id(), + Watchers :: [pid()], + Result :: {ok, JobID :: id()}. %% @doc %% Install the specified package. This returns an id() that will be referenced %% in a later response message. -fetch(PackageID) -> - gen_server:call(?MODULE, {fetch, PackageID}). +fetch(PackageID, Watchers) -> + gen_server:call(?MODULE, {fetch, PackageID, Watchers}). -spec install(Path :: file:filename()) -> zx:outcome(). @@ -861,11 +876,11 @@ handle_call({request, Action}, From, State = #s{id = ID}) -> NextState = do_request(Requestor, Action, State#s{id = NewID}), NewState = eval_queue(NextState), {noreply, NewState}; -handle_call({fetch, PackageID}, From, State = #s{id = ID}) -> +handle_call({fetch, PackageID, Watchers}, From, State = #s{id = ID}) -> NewID = ID + 1, - _ = gen_server:reply(From, {ok, NewID}), + ok = gen_server:reply(From, {ok, NewID}), Requestor = element(1, From), - NextState = do_fetch(PackageID, Requestor, State#s{id = NewID}), + NextState = do_fetch(PackageID, Watchers, Requestor, State#s{id = NewID}), NewState = eval_queue(NextState), {noreply, NewState}; handle_call({install, Path}, _, State) -> @@ -1318,7 +1333,7 @@ do_result(ID, Result, State = #s{requests = Requests, dropped = Dropped, mx = MX State#s{requests = NewRequests, dropped = NewDropped, mx = NewMX}. -handle_fetch_result(ID, {done, Bin}, {Requestor, {fetch, R, N, V}}, Requests, MX) -> +handle_fetch_result(ID, {done, Bin}, {Requestor, {fetch, R, N, V, _}}, Requests, MX) -> Result = case do_import_package(Bin) of ok -> @@ -1418,7 +1433,7 @@ eval_queue(Actions, State) -> local_dispatch([], State) -> State; -local_dispatch([{request, Pid, ID, {fetch, R, N, V}} | Rest], State) -> +local_dispatch([{request, Pid, ID, {fetch, R, N, V, _}} | Rest], State) -> Result = case zomp_realm_man:lookup(R) of {ok, RealmPID} -> local_fetch(RealmPID, {R, N, V}); @@ -1667,15 +1682,16 @@ drop_requests(ReqIDs, Dropped, Requests) -> lists:foldl(Partition, {Dropped, Requests}, ReqIDs). --spec do_fetch(PackageID, Requestor, State) -> NewState +-spec do_fetch(PackageID, Watchers, Requestor, State) -> NewState when PackageID :: zx:package_id(), + Watchers :: [pid()], Requestor :: pid(), State :: state(), NewState :: state(). %% @private %% Provide a chance to bypass if the package is in cache. -do_fetch(PackageID, Requestor, State = #s{id = ID}) -> +do_fetch(PackageID, Watchers, Requestor, State = #s{id = ID}) -> {ok, PackageString} = zx_lib:package_string(PackageID), ok = log(info, "Fetching ~ts", [PackageString]), Path = zx_lib:zsp_path(PackageID), @@ -1685,7 +1701,7 @@ do_fetch(PackageID, Requestor, State = #s{id = ID}) -> State; {error, enoent} -> {Realm, Name, Version} = PackageID, - Action = {fetch, Realm, Name, Version}, + Action = {fetch, Realm, Name, Version, Watchers}, do_request(Requestor, Action, State); Error -> Requestor ! {result, ID, Error}, diff --git a/zomp/lib/otpr/zx/0.13.12/src/zx_key.erl b/zomp/lib/otpr/zx/0.14.0/src/zx_key.erl similarity index 99% rename from zomp/lib/otpr/zx/0.13.12/src/zx_key.erl rename to zomp/lib/otpr/zx/0.14.0/src/zx_key.erl index 9f7ed59..f4969b7 100644 --- a/zomp/lib/otpr/zx/0.13.12/src/zx_key.erl +++ b/zomp/lib/otpr/zx/0.14.0/src/zx_key.erl @@ -8,7 +8,7 @@ %%% @end -module(zx_key). --vsn("0.13.12"). +-vsn("0.14.0"). -author("Craig Everett "). -copyright("Craig Everett "). -license("GPL-3.0"). diff --git a/zomp/lib/otpr/zx/0.13.12/src/zx_lib.erl b/zomp/lib/otpr/zx/0.14.0/src/zx_lib.erl similarity index 99% rename from zomp/lib/otpr/zx/0.13.12/src/zx_lib.erl rename to zomp/lib/otpr/zx/0.14.0/src/zx_lib.erl index 2132917..c5961e7 100644 --- a/zomp/lib/otpr/zx/0.13.12/src/zx_lib.erl +++ b/zomp/lib/otpr/zx/0.14.0/src/zx_lib.erl @@ -10,7 +10,7 @@ %%% @end -module(zx_lib). --vsn("0.13.12"). +-vsn("0.14.0"). -author("Craig Everett "). -copyright("Craig Everett "). -license("GPL-3.0"). diff --git a/zomp/lib/otpr/zx/0.13.12/src/zx_local.erl b/zomp/lib/otpr/zx/0.14.0/src/zx_local.erl similarity index 99% rename from zomp/lib/otpr/zx/0.13.12/src/zx_local.erl rename to zomp/lib/otpr/zx/0.14.0/src/zx_local.erl index 7cce3c7..b174ab9 100644 --- a/zomp/lib/otpr/zx/0.13.12/src/zx_local.erl +++ b/zomp/lib/otpr/zx/0.14.0/src/zx_local.erl @@ -6,7 +6,7 @@ %%% @end -module(zx_local). --vsn("0.13.12"). +-vsn("0.14.0"). -author("Craig Everett "). -copyright("Craig Everett "). -license("GPL-3.0"). diff --git a/zomp/lib/otpr/zx/0.13.12/src/zx_net.erl b/zomp/lib/otpr/zx/0.14.0/src/zx_net.erl similarity index 92% rename from zomp/lib/otpr/zx/0.13.12/src/zx_net.erl rename to zomp/lib/otpr/zx/0.14.0/src/zx_net.erl index 3e6f523..bfc59cf 100644 --- a/zomp/lib/otpr/zx/0.13.12/src/zx_net.erl +++ b/zomp/lib/otpr/zx/0.14.0/src/zx_net.erl @@ -5,7 +5,7 @@ %%% @end -module(zx_net). --vsn("0.13.12"). +-vsn("0.14.0"). -author("Craig Everett "). -copyright("Craig Everett "). -license("GPL-3.0"). @@ -179,34 +179,33 @@ rx(Socket, Timeout, Watchers) -> ok = gen_tcp:send(Socket, <<1:32, 0:8>>), receive {tcp, Socket, <>} -> - ok = broadcast({rx, Socket, start, Size}, Watchers), - Left = Size - byte_size(Bin), - rx(Socket, Watchers, Left, Bin, Timeout); + Received = byte_size(Bin), + rx(Socket, Watchers, Size, Received, Bin, Timeout); {tcp_closed, Socket} -> {error, tcp_closed} after Timeout -> {error, timeout} end. -rx(Socket, Watchers, 0, Bin, _) -> - ok = inet:setopts(Socket, [{packet, 4}]), - ok = gen_tcp:send(Socket, <<0:8>>), - ok = broadcast({rx, Socket, done}, Watchers), - {ok, Bin}; -rx(Socket, Watchers, Left, Buffer, Timeout) when Left > 0 -> - ok = broadcast({rx, Socket, pending, Left}, Watchers), +rx(Socket, Watchers, Size, Received, Buffer, Timeout) when Size > Received -> + ok = broadcast({rx, Size, Received}, Watchers), ok = inet:setopts(Socket, [{active, once}]), receive {tcp, Socket, Bin} -> - NewLeft = Left - byte_size(Bin), - rx(Socket, Watchers, NewLeft, <>, Timeout); + NewReceived = Received + byte_size(Bin), + rx(Socket, Watchers, Size, NewReceived, <>, Timeout); {tcp_closed, Socket} -> {error, tcp_closed} after Timeout -> {error, timeout} end; -rx(Socket, Watchers, Left, _, _) when Left < 0 -> - ok = broadcast({rx, Socket, overflow}, Watchers), +rx(Socket, Watchers, Size, Size, Bin, _) -> + ok = inet:setopts(Socket, [{packet, 4}]), + ok = gen_tcp:send(Socket, <<0:8>>), + ok = broadcast({rx, done}, Watchers), + {ok, Bin}; +rx(_, Watchers, Size, Received, _, _) when Size < Received -> + ok = broadcast({rx, overflow}, Watchers), {error, bad_message}. diff --git a/zomp/lib/otpr/zx/0.13.12/src/zx_peer.erl b/zomp/lib/otpr/zx/0.14.0/src/zx_peer.erl similarity index 99% rename from zomp/lib/otpr/zx/0.13.12/src/zx_peer.erl rename to zomp/lib/otpr/zx/0.14.0/src/zx_peer.erl index 7a21448..26a6f7f 100644 --- a/zomp/lib/otpr/zx/0.13.12/src/zx_peer.erl +++ b/zomp/lib/otpr/zx/0.14.0/src/zx_peer.erl @@ -8,7 +8,7 @@ %%% @end -module(zx_peer). --vsn("0.13.12"). +-vsn("0.14.0"). -author("Craig Everett "). -copyright("Craig Everett "). -license("GPL-3.0"). diff --git a/zomp/lib/otpr/zx/0.13.12/src/zx_peer_man.erl b/zomp/lib/otpr/zx/0.14.0/src/zx_peer_man.erl similarity index 99% rename from zomp/lib/otpr/zx/0.13.12/src/zx_peer_man.erl rename to zomp/lib/otpr/zx/0.14.0/src/zx_peer_man.erl index 22f9912..afacc6c 100644 --- a/zomp/lib/otpr/zx/0.13.12/src/zx_peer_man.erl +++ b/zomp/lib/otpr/zx/0.14.0/src/zx_peer_man.erl @@ -9,7 +9,7 @@ %%% @end -module(zx_peer_man). --vsn("0.13.12"). +-vsn("0.14.0"). -behavior(gen_server). -author("Craig Everett "). -copyright("Craig Everett "). diff --git a/zomp/lib/otpr/zx/0.13.12/src/zx_peer_sup.erl b/zomp/lib/otpr/zx/0.14.0/src/zx_peer_sup.erl similarity index 99% rename from zomp/lib/otpr/zx/0.13.12/src/zx_peer_sup.erl rename to zomp/lib/otpr/zx/0.14.0/src/zx_peer_sup.erl index 8cf7c20..c3779d6 100644 --- a/zomp/lib/otpr/zx/0.13.12/src/zx_peer_sup.erl +++ b/zomp/lib/otpr/zx/0.14.0/src/zx_peer_sup.erl @@ -6,7 +6,7 @@ %%% @end -module(zx_peer_sup). --vsn("0.13.12"). +-vsn("0.14.0"). -behaviour(supervisor). -author("Craig Everett "). -copyright("Craig Everett "). diff --git a/zomp/lib/otpr/zx/0.13.12/src/zx_peers.erl b/zomp/lib/otpr/zx/0.14.0/src/zx_peers.erl similarity index 98% rename from zomp/lib/otpr/zx/0.13.12/src/zx_peers.erl rename to zomp/lib/otpr/zx/0.14.0/src/zx_peers.erl index e08296f..3ad9ebe 100644 --- a/zomp/lib/otpr/zx/0.13.12/src/zx_peers.erl +++ b/zomp/lib/otpr/zx/0.14.0/src/zx_peers.erl @@ -10,7 +10,7 @@ %%% @end -module(zx_peers). --vsn("0.13.12"). +-vsn("0.14.0"). -behavior(supervisor). -author("Craig Everett "). -copyright("Craig Everett "). diff --git a/zomp/lib/otpr/zx/0.13.12/src/zx_proxy.erl b/zomp/lib/otpr/zx/0.14.0/src/zx_proxy.erl similarity index 92% rename from zomp/lib/otpr/zx/0.13.12/src/zx_proxy.erl rename to zomp/lib/otpr/zx/0.14.0/src/zx_proxy.erl index 8411857..d35a12b 100644 --- a/zomp/lib/otpr/zx/0.13.12/src/zx_proxy.erl +++ b/zomp/lib/otpr/zx/0.14.0/src/zx_proxy.erl @@ -5,7 +5,7 @@ %%% @end -module(zx_proxy). --vsn("0.13.12"). +-vsn("0.14.0"). -author("Craig Everett "). -copyright("Craig Everett "). -license("GPL-3.0"). @@ -49,6 +49,12 @@ unsubscribe(Package) -> request(Action) -> Proxy = whereis(?MODULE), Mon = monitor(process, Proxy), + request(Proxy, Mon, Action). + +request(Proxy, Mon, {fetch, R, N, V, Watchers}) -> + Proxy ! {request, self(), Mon, {fetch, R, N, V}}, + progress(Proxy, Mon, Watchers); +request(Proxy, Mon, Action) -> Proxy ! {request, self(), Mon, Action}, receive {result, Mon, Result} -> @@ -60,6 +66,21 @@ request(Action) -> {error, timeout} end. +progress(Proxy, Mon, Watchers) -> + receive + Report when element(1, Report) =:= rx -> + Notify = fun(Watcher) -> Watcher ! Report end, + ok = lists:foreach(Notify, Watchers), + progress(Proxy, Mon, Watchers); + {result, Mon, Result} -> + true = demonitor(Mon), + Result; + {'DOWN', Mon, process, Proxy, Info} -> + {error, Info} + after 5000 -> + {error, timeout} + end. + -spec connect(Port) -> Result when Port :: inet:port_number(), diff --git a/zomp/lib/otpr/zx/0.13.12/src/zx_sup.erl b/zomp/lib/otpr/zx/0.14.0/src/zx_sup.erl similarity index 99% rename from zomp/lib/otpr/zx/0.13.12/src/zx_sup.erl rename to zomp/lib/otpr/zx/0.14.0/src/zx_sup.erl index a131a0e..6f91563 100644 --- a/zomp/lib/otpr/zx/0.13.12/src/zx_sup.erl +++ b/zomp/lib/otpr/zx/0.14.0/src/zx_sup.erl @@ -5,7 +5,7 @@ %%% @end -module(zx_sup). --vsn("0.13.12"). +-vsn("0.14.0"). -behavior(supervisor). -author("Craig Everett "). -copyright("Craig Everett "). diff --git a/zomp/lib/otpr/zx/0.13.12/src/zx_tty.erl b/zomp/lib/otpr/zx/0.14.0/src/zx_tty.erl similarity index 93% rename from zomp/lib/otpr/zx/0.13.12/src/zx_tty.erl rename to zomp/lib/otpr/zx/0.14.0/src/zx_tty.erl index a96d7c4..a41618d 100644 --- a/zomp/lib/otpr/zx/0.13.12/src/zx_tty.erl +++ b/zomp/lib/otpr/zx/0.14.0/src/zx_tty.erl @@ -6,7 +6,7 @@ %%% @end -module(zx_tty). --vsn("0.13.12"). +-vsn("0.14.0"). -author("Craig Everett "). -copyright("Craig Everett "). -license("GPL-3.0"). @@ -14,6 +14,7 @@ -export([get_input/0, get_input/1, get_input/2, get_input/3, get_lower0_9/1, get_lower0_9/2, get_lower0_9/3, select/1, select_string/1, + dl/0, dl/2, derp/0]). @@ -170,6 +171,20 @@ pick({I, _}, Max) when 0 < I, I =< Max -> I; pick(_, _) -> error. +-spec dl(Size, Received) -> ok + when Size :: pos_integer(), + Received :: non_neg_integer(). + +dl() -> + io:format("~n[ 0.00%]"). + +dl(Size, Size) -> + io:format("\r[~6.2f%]~n", [100.0]); +dl(Size, Received) -> + P = (Received * 100) / Size, + io:format("\r[~6.2f%]", [P]). + + -spec hurr() -> ok. %% @private %% Present an appropriate response when the user derps on selection. diff --git a/zomp/lib/otpr/zx/0.13.12/src/zx_userconf.erl b/zomp/lib/otpr/zx/0.14.0/src/zx_userconf.erl similarity index 99% rename from zomp/lib/otpr/zx/0.13.12/src/zx_userconf.erl rename to zomp/lib/otpr/zx/0.14.0/src/zx_userconf.erl index 43c3a8c..d0fdeaf 100644 --- a/zomp/lib/otpr/zx/0.13.12/src/zx_userconf.erl +++ b/zomp/lib/otpr/zx/0.14.0/src/zx_userconf.erl @@ -5,7 +5,7 @@ %%% @end -module(zx_userconf). --vsn("0.13.12"). +-vsn("0.14.0"). -author("Craig Everett "). -copyright("Craig Everett "). -license("GPL-3.0"). diff --git a/zomp/lib/otpr/zx/0.13.12/src/zx_zsp.erl b/zomp/lib/otpr/zx/0.14.0/src/zx_zsp.erl similarity index 99% rename from zomp/lib/otpr/zx/0.13.12/src/zx_zsp.erl rename to zomp/lib/otpr/zx/0.14.0/src/zx_zsp.erl index b164557..fb9c790 100644 --- a/zomp/lib/otpr/zx/0.13.12/src/zx_zsp.erl +++ b/zomp/lib/otpr/zx/0.14.0/src/zx_zsp.erl @@ -7,7 +7,7 @@ %%% @end -module(zx_zsp). --vsn("0.13.12"). +-vsn("0.14.0"). -author("Craig Everett "). -copyright("Craig Everett "). -license("GPL-3.0"). diff --git a/zomp/lib/otpr/zx/0.13.12/templates/Emakefile b/zomp/lib/otpr/zx/0.14.0/templates/Emakefile similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/Emakefile rename to zomp/lib/otpr/zx/0.14.0/templates/Emakefile diff --git a/zomp/lib/otpr/zx/0.13.12/templates/boringlib/funfile.erl b/zomp/lib/otpr/zx/0.14.0/templates/boringlib/funfile.erl similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/boringlib/funfile.erl rename to zomp/lib/otpr/zx/0.14.0/templates/boringlib/funfile.erl diff --git a/zomp/lib/otpr/zx/0.13.12/templates/cowboy_example/appmod.erl b/zomp/lib/otpr/zx/0.14.0/templates/cowboy_example/appmod.erl similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/cowboy_example/appmod.erl rename to zomp/lib/otpr/zx/0.14.0/templates/cowboy_example/appmod.erl diff --git a/zomp/lib/otpr/zx/0.13.12/templates/cowboy_example/src/_state.erl b/zomp/lib/otpr/zx/0.14.0/templates/cowboy_example/src/_state.erl similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/cowboy_example/src/_state.erl rename to zomp/lib/otpr/zx/0.14.0/templates/cowboy_example/src/_state.erl diff --git a/zomp/lib/otpr/zx/0.13.12/templates/cowboy_example/src/_sup.erl b/zomp/lib/otpr/zx/0.14.0/templates/cowboy_example/src/_sup.erl similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/cowboy_example/src/_sup.erl rename to zomp/lib/otpr/zx/0.14.0/templates/cowboy_example/src/_sup.erl diff --git a/zomp/lib/otpr/zx/0.13.12/templates/cowboy_example/src/_top.erl b/zomp/lib/otpr/zx/0.14.0/templates/cowboy_example/src/_top.erl similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/cowboy_example/src/_top.erl rename to zomp/lib/otpr/zx/0.14.0/templates/cowboy_example/src/_top.erl diff --git a/zomp/lib/otpr/zx/0.13.12/templates/escript b/zomp/lib/otpr/zx/0.14.0/templates/escript similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/escript rename to zomp/lib/otpr/zx/0.14.0/templates/escript diff --git a/zomp/lib/otpr/zx/0.13.12/templates/example_server/appmod.erl b/zomp/lib/otpr/zx/0.14.0/templates/example_server/appmod.erl similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/example_server/appmod.erl rename to zomp/lib/otpr/zx/0.14.0/templates/example_server/appmod.erl diff --git a/zomp/lib/otpr/zx/0.13.12/templates/example_server/src/_client.erl b/zomp/lib/otpr/zx/0.14.0/templates/example_server/src/_client.erl similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/example_server/src/_client.erl rename to zomp/lib/otpr/zx/0.14.0/templates/example_server/src/_client.erl diff --git a/zomp/lib/otpr/zx/0.13.12/templates/example_server/src/_client_man.erl b/zomp/lib/otpr/zx/0.14.0/templates/example_server/src/_client_man.erl similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/example_server/src/_client_man.erl rename to zomp/lib/otpr/zx/0.14.0/templates/example_server/src/_client_man.erl diff --git a/zomp/lib/otpr/zx/0.13.12/templates/example_server/src/_client_sup.erl b/zomp/lib/otpr/zx/0.14.0/templates/example_server/src/_client_sup.erl similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/example_server/src/_client_sup.erl rename to zomp/lib/otpr/zx/0.14.0/templates/example_server/src/_client_sup.erl diff --git a/zomp/lib/otpr/zx/0.13.12/templates/example_server/src/_clients.erl b/zomp/lib/otpr/zx/0.14.0/templates/example_server/src/_clients.erl similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/example_server/src/_clients.erl rename to zomp/lib/otpr/zx/0.14.0/templates/example_server/src/_clients.erl diff --git a/zomp/lib/otpr/zx/0.13.12/templates/example_server/src/_sup.erl b/zomp/lib/otpr/zx/0.14.0/templates/example_server/src/_sup.erl similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/example_server/src/_sup.erl rename to zomp/lib/otpr/zx/0.14.0/templates/example_server/src/_sup.erl diff --git a/zomp/lib/otpr/zx/0.13.12/templates/gitignore b/zomp/lib/otpr/zx/0.14.0/templates/gitignore similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/gitignore rename to zomp/lib/otpr/zx/0.14.0/templates/gitignore diff --git a/zomp/lib/otpr/zx/0.13.12/templates/hellowx/appmod.erl b/zomp/lib/otpr/zx/0.14.0/templates/hellowx/appmod.erl similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/hellowx/appmod.erl rename to zomp/lib/otpr/zx/0.14.0/templates/hellowx/appmod.erl diff --git a/zomp/lib/otpr/zx/0.13.12/templates/hellowx/src/_con.erl b/zomp/lib/otpr/zx/0.14.0/templates/hellowx/src/_con.erl similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/hellowx/src/_con.erl rename to zomp/lib/otpr/zx/0.14.0/templates/hellowx/src/_con.erl diff --git a/zomp/lib/otpr/zx/0.13.12/templates/hellowx/src/_gui.erl b/zomp/lib/otpr/zx/0.14.0/templates/hellowx/src/_gui.erl similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/hellowx/src/_gui.erl rename to zomp/lib/otpr/zx/0.14.0/templates/hellowx/src/_gui.erl diff --git a/zomp/lib/otpr/zx/0.13.12/templates/hellowx/src/_sup.erl b/zomp/lib/otpr/zx/0.14.0/templates/hellowx/src/_sup.erl similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/hellowx/src/_sup.erl rename to zomp/lib/otpr/zx/0.14.0/templates/hellowx/src/_sup.erl diff --git a/zomp/lib/otpr/zx/0.13.12/templates/licenses/apache2.txt b/zomp/lib/otpr/zx/0.14.0/templates/licenses/apache2.txt similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/licenses/apache2.txt rename to zomp/lib/otpr/zx/0.14.0/templates/licenses/apache2.txt diff --git a/zomp/lib/otpr/zx/0.13.12/templates/licenses/bsd2.txt b/zomp/lib/otpr/zx/0.14.0/templates/licenses/bsd2.txt similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/licenses/bsd2.txt rename to zomp/lib/otpr/zx/0.14.0/templates/licenses/bsd2.txt diff --git a/zomp/lib/otpr/zx/0.13.12/templates/licenses/bsd3.txt b/zomp/lib/otpr/zx/0.14.0/templates/licenses/bsd3.txt similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/licenses/bsd3.txt rename to zomp/lib/otpr/zx/0.14.0/templates/licenses/bsd3.txt diff --git a/zomp/lib/otpr/zx/0.13.12/templates/licenses/cc0.txt b/zomp/lib/otpr/zx/0.14.0/templates/licenses/cc0.txt similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/licenses/cc0.txt rename to zomp/lib/otpr/zx/0.14.0/templates/licenses/cc0.txt diff --git a/zomp/lib/otpr/zx/0.13.12/templates/licenses/gpl3.txt b/zomp/lib/otpr/zx/0.14.0/templates/licenses/gpl3.txt similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/licenses/gpl3.txt rename to zomp/lib/otpr/zx/0.14.0/templates/licenses/gpl3.txt diff --git a/zomp/lib/otpr/zx/0.13.12/templates/licenses/isc.txt b/zomp/lib/otpr/zx/0.14.0/templates/licenses/isc.txt similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/licenses/isc.txt rename to zomp/lib/otpr/zx/0.14.0/templates/licenses/isc.txt diff --git a/zomp/lib/otpr/zx/0.13.12/templates/licenses/lgpl3.txt b/zomp/lib/otpr/zx/0.14.0/templates/licenses/lgpl3.txt similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/licenses/lgpl3.txt rename to zomp/lib/otpr/zx/0.14.0/templates/licenses/lgpl3.txt diff --git a/zomp/lib/otpr/zx/0.13.12/templates/licenses/mit.txt b/zomp/lib/otpr/zx/0.14.0/templates/licenses/mit.txt similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/licenses/mit.txt rename to zomp/lib/otpr/zx/0.14.0/templates/licenses/mit.txt diff --git a/zomp/lib/otpr/zx/0.13.12/templates/licenses/mpl2.txt b/zomp/lib/otpr/zx/0.14.0/templates/licenses/mpl2.txt similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/licenses/mpl2.txt rename to zomp/lib/otpr/zx/0.14.0/templates/licenses/mpl2.txt diff --git a/zomp/lib/otpr/zx/0.13.12/templates/simplecli.erl b/zomp/lib/otpr/zx/0.14.0/templates/simplecli.erl similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/simplecli.erl rename to zomp/lib/otpr/zx/0.14.0/templates/simplecli.erl diff --git a/zomp/lib/otpr/zx/0.13.12/templates/swp/worker.erl b/zomp/lib/otpr/zx/0.14.0/templates/swp/worker.erl similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/swp/worker.erl rename to zomp/lib/otpr/zx/0.14.0/templates/swp/worker.erl diff --git a/zomp/lib/otpr/zx/0.13.12/templates/swp/worker_man.erl b/zomp/lib/otpr/zx/0.14.0/templates/swp/worker_man.erl similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/swp/worker_man.erl rename to zomp/lib/otpr/zx/0.14.0/templates/swp/worker_man.erl diff --git a/zomp/lib/otpr/zx/0.13.12/templates/swp/worker_sup.erl b/zomp/lib/otpr/zx/0.14.0/templates/swp/worker_sup.erl similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/swp/worker_sup.erl rename to zomp/lib/otpr/zx/0.14.0/templates/swp/worker_sup.erl diff --git a/zomp/lib/otpr/zx/0.13.12/templates/swp/workers.erl b/zomp/lib/otpr/zx/0.14.0/templates/swp/workers.erl similarity index 100% rename from zomp/lib/otpr/zx/0.13.12/templates/swp/workers.erl rename to zomp/lib/otpr/zx/0.14.0/templates/swp/workers.erl diff --git a/zomp/lib/otpr/zx/0.13.12/zomp.meta b/zomp/lib/otpr/zx/0.14.0/zomp.meta similarity index 91% rename from zomp/lib/otpr/zx/0.13.12/zomp.meta rename to zomp/lib/otpr/zx/0.14.0/zomp.meta index 63b7a4d..7306572 100644 --- a/zomp/lib/otpr/zx/0.13.12/zomp.meta +++ b/zomp/lib/otpr/zx/0.14.0/zomp.meta @@ -4,7 +4,7 @@ {prefix,"zx_"}. {author,"Craig Everett"}. {desc,"An Erlang development tool and Zomp user client"}. -{package_id,{"otpr","zx",{0,13,12}}}. +{package_id,{"otpr","zx",{0,14,0}}}. {deps,[]}. {key_name,none}. {a_email,"zxq9@zxq9.com"}.