in go/cmd/remotetool/main.go [70:146]
func main() {
flag.Usage = func() {
fmt.Fprintf(flag.CommandLine.Output(), "Usage: %v [-flags] -- --operation <op> arguments ...\n", path.Base(os.Args[0]))
flag.PrintDefaults()
}
flag.Parse()
if *operation == "" {
log.Exitf("--operation must be specified.")
}
if *execAttempts <= 0 {
log.Exitf("--exec_attempts must be >= 1.")
}
ctx := context.Background()
grpcClient, err := rflags.NewClientFromFlags(ctx)
if err != nil {
log.Exitf("error connecting to remote execution client: %v", err)
}
defer grpcClient.Close()
c := &tool.Client{GrpcClient: grpcClient}
switch OpType(*operation) {
case downloadActionResult:
if err := c.DownloadActionResult(ctx, getDigestFlag(), getPathFlag()); err != nil {
log.Exitf("error downloading action result for digest %v: %v", getDigestFlag(), err)
}
case downloadBlob:
res, err := c.DownloadBlob(ctx, getDigestFlag(), getPathFlag())
if err != nil {
log.Exitf("error downloading blob for digest %v: %v", getDigestFlag(), err)
}
os.Stdout.Write([]byte(res))
case downloadDir:
if err := c.DownloadDirectory(ctx, getDigestFlag(), getPathFlag()); err != nil {
log.Exitf("error downloading directory for digest %v: %v", getDigestFlag(), err)
}
case showAction:
res, err := c.ShowAction(ctx, getDigestFlag())
if err != nil {
log.Exitf("error fetching action %v: %v", getDigestFlag(), err)
}
os.Stdout.Write([]byte(res))
case downloadAction:
err := c.DownloadAction(ctx, getDigestFlag(), getPathFlag())
if err != nil {
log.Exitf("error fetching action %v: %v", getDigestFlag(), err)
}
fmt.Printf("Action downloaded to %v\n", getPathFlag())
case executeAction:
if _, err := c.ExecuteAction(ctx, *digest, *actionRoot, getPathFlag(), outerr.SystemOutErr); err != nil {
log.Exitf("error executing action: %v", err)
}
case checkDeterminism:
if err := c.CheckDeterminism(ctx, *digest, *actionRoot, *execAttempts); err != nil {
log.Exitf("error checking determinism: %v", err)
}
case uploadBlob:
if err := c.UploadBlob(ctx, getPathFlag()); err != nil {
log.Exitf("error uploading blob for digest %v: %v", getDigestFlag(), err)
}
case uploadBlobV2:
if err := c.UploadBlobV2(ctx, getPathFlag()); err != nil {
log.Exitf("error uploading blob for digest %v: %v", getDigestFlag(), err)
}
default:
log.Exitf("unsupported operation %v. Supported operations:\n%v", *operation, supportedOps)
}
}