diff options
| author | ruki <[email protected]> | 2023-09-14 23:14:27 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2023-09-14 23:14:27 +0800 |
| commit | f64eee5a26043980a341dc97851e4f5285a0939b (patch) | |
| tree | 64b724e3eee3450829a15717a63ae806bc6e6d24 | |
| parent | 92ab5604f06172d13ef8cde8fc880e202ceba61c (diff) | |
clean all for remote service
5 files changed, 12 insertions, 4 deletions
diff --git a/xmake/actions/service/xmake.lua b/xmake/actions/service/xmake.lua index 57d352a7c..2473c186b 100644 --- a/xmake/actions/service/xmake.lua +++ b/xmake/actions/service/xmake.lua @@ -53,6 +53,9 @@ task("service") " - xmake service --pull build outputdir", " - xmake service --pull 'build/**' outputdir" }, {nil, "clean", "k", nil, "Clean current project files in the remote daemon service." }, + {nil, "all", "k", nil, "Clean all project files in the remote daemon service.", + "e.g.", + " - xmake service --clean --all" }, {nil, "add-user", "kv", nil, "Add user in the server.", "e.g.", " - xmake service --add-user=root" }, diff --git a/xmake/modules/private/service/message.lua b/xmake/modules/private/service/message.lua index 820dce2cd..8edcd2789 100644 --- a/xmake/modules/private/service/message.lua +++ b/xmake/modules/private/service/message.lua @@ -218,7 +218,8 @@ function new_clean(session_id, opt) return _new({ code = message.CODE_CLEAN, session_id = session_id, - token = opt.token + token = opt.token, + all = opt.all }) end diff --git a/xmake/modules/private/service/remote_build/client.lua b/xmake/modules/private/service/remote_build/client.lua index 05dc142c4..aaacb2bd1 100644 --- a/xmake/modules/private/service/remote_build/client.lua +++ b/xmake/modules/private/service/remote_build/client.lua @@ -302,7 +302,7 @@ function remote_build_client:clean() local ok = false cprint("${dim}%s: clean files in %s:%d ..", self, addr, port) local stream = socket_stream(sock, {send_timeout = self:send_timeout(), recv_timeout = self:recv_timeout()}) - if stream:send_msg(message.new_clean(session_id, {token = self:token()})) and stream:flush() then + if stream:send_msg(message.new_clean(session_id, {token = self:token(), all = option.get("all")})) and stream:flush() then local msg = stream:recv_msg({timeout = -1}) if msg then vprint(msg:body()) diff --git a/xmake/modules/private/service/remote_build/server.lua b/xmake/modules/private/service/remote_build/server.lua index c890e1158..6522fffb5 100644 --- a/xmake/modules/private/service/remote_build/server.lua +++ b/xmake/modules/private/service/remote_build/server.lua @@ -96,7 +96,7 @@ function remote_build_server:_on_handle(stream, msg) elseif msg:is_pull() then session:pull(respmsg) elseif msg:is_clean() then - session:clean() + session:clean(respmsg) elseif msg:is_runcmd() then session:runcmd(respmsg) end diff --git a/xmake/modules/private/service/remote_build/server_session.lua b/xmake/modules/private/service/remote_build/server_session.lua index 654a700f9..1f3f9dc36 100644 --- a/xmake/modules/private/service/remote_build/server_session.lua +++ b/xmake/modules/private/service/remote_build/server_session.lua @@ -223,10 +223,14 @@ function server_session:pull(respmsg) end -- clean files -function server_session:clean() +function server_session:clean(respmsg) + local body = respmsg:body() vprint("%s: clean files in %s ..", self, self:workdir()) os.tryrm(self:sourcedir()) os.tryrm(self:xmake_sourcedir()) + if body.all then + os.tryrm(self:server():workdir()) + end vprint("%s: clean files ok", self) end |
