cmd/gomote: implements GRPC rm command
This change adds the implementation for GRPC rm command to the gomote client.
Updates golang/go#48737
For golang/go#47521
Change-Id: Iaf1ed08d155cbad11c7aa2b74a9535f4b32233ca
Reviewed-on: https://go-review.googlesource.com/c/build/+/405515
Reviewed-by: Heschi Kreinick <heschi@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Alex Rakoczy <alex@golang.org>
diff --git a/cmd/gomote/gomote.go b/cmd/gomote/gomote.go
index 4df0288..1bdbb52 100644
--- a/cmd/gomote/gomote.go
+++ b/cmd/gomote/gomote.go
@@ -160,7 +160,7 @@
registerCommand("put14", "put Go 1.4 in place", put14)
registerCommand("puttar", "extract a tar.gz to a buildlet", putTar)
registerCommand("rdp", "RDP (Remote Desktop Protocol) to a Windows buildlet", rdp)
- registerCommand("rm", "delete files or directories", rm)
+ registerCommand("rm", "delete files or directories", legacyRm)
registerCommand("run", "run a command on a buildlet", legacyRun)
registerCommand("ssh", "ssh to a buildlet", legacySSH)
registerCommand("v2", "version 2 of the gomote commands", version2)
@@ -223,6 +223,7 @@
"run": run,
"ping": ping,
"ssh": ssh,
+ "rm": rm,
}
if len(args) == 0 {
usage()
diff --git a/cmd/gomote/rm.go b/cmd/gomote/rm.go
index 7350f9a..9b427df 100644
--- a/cmd/gomote/rm.go
+++ b/cmd/gomote/rm.go
@@ -9,9 +9,11 @@
"flag"
"fmt"
"os"
+
+ "golang.org/x/build/internal/gomote/protos"
)
-func rm(args []string) error {
+func legacyRm(args []string) error {
fs := flag.NewFlagSet("rm", flag.ContinueOnError)
fs.Usage = func() {
fmt.Fprintln(os.Stderr, "rm usage: gomote rm <instance> <file-or-dir>+")
@@ -33,3 +35,29 @@
ctx := context.Background()
return bc.RemoveAll(ctx, args...)
}
+
+func rm(args []string) error {
+ fs := flag.NewFlagSet("rm", flag.ContinueOnError)
+ fs.Usage = func() {
+ fmt.Fprintln(os.Stderr, "rm usage: gomote rm <instance> <file-or-dir>+")
+ fmt.Fprintln(os.Stderr, " gomote rm <instance> . (to delete everything)")
+ fs.PrintDefaults()
+ os.Exit(1)
+ }
+ fs.Parse(args)
+
+ if fs.NArg() < 2 {
+ fs.Usage()
+ }
+ name := fs.Arg(0)
+ args = fs.Args()[1:]
+ ctx := context.Background()
+ client := gomoteServerClient(ctx)
+ if _, err := client.RemoveFiles(ctx, &protos.RemoveFilesRequest{
+ GomoteId: name,
+ Paths: args,
+ }); err != nil {
+ return fmt.Errorf("unable to remove files: %s", statusFromError(err))
+ }
+ return nil
+}