func main()

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)
	}
}