func runCLNew(env *cmdline.Env, args []string) error { if got, want := len(args), 1; got != want { return env.UsageErrorf("unexpected number of arguments: got %v, want %v", got, want) } ctx := tool.NewContextFromEnv(env) return newCL(ctx, args) }
func runCLCleanup(env *cmdline.Env, args []string) error { if len(args) == 0 { return env.UsageErrorf("cleanup requires at least one argument") } ctx := tool.NewContextFromEnv(env) return cleanupCL(ctx, args) }
func runSnapshotCreate(env *cmdline.Env, args []string) error { if len(args) != 1 { return env.UsageErrorf("unexpected number of arguments") } label := args[0] ctx := tool.NewContextFromEnv(env) if err := checkSnapshotDir(ctx); err != nil { return err } snapshotDir, err := getSnapshotDir() if err != nil { return err } snapshotFile := filepath.Join(snapshotDir, "labels", label, time.Now().Format(timeFormatFlag)) // Either atomically create a new snapshot that captures the project // state and push the changes to the remote repository (if // applicable), or fail with no effect. createFn := func() error { revision, err := ctx.Git().CurrentRevision() if err != nil { return err } if err := createSnapshot(ctx, snapshotDir, snapshotFile, label); err != nil { // Clean up on all errors. ctx.Git().Reset(revision) ctx.Git().RemoveUntrackedFiles() return err } return nil } // Execute the above function in the snapshot directory. p := project.Project{ Path: snapshotDir, Protocol: "git", Revision: "HEAD", } if err := project.ApplyToLocalMaster(ctx, project.Projects{p.Name: p}, createFn); err != nil { return err } return nil }
// runCLMail is a wrapper that sets up and runs a review instance. func runCLMail(env *cmdline.Env, _ []string) error { ctx := tool.NewContextFromEnv(env) // Sanity checks for the <presubmitFlag> flag. if !checkPresubmitFlag() { return env.UsageErrorf("invalid value for the -presubmit flag. Valid values: %s.", strings.Join(gerrit.PresubmitTestTypes(), ",")) } host := hostFlag if host == "" { var err error if host, err = project.GerritHost(ctx); err != nil { return err } } // Create and run the review. review, err := newReview(ctx, gerrit.CLOpts{ Autosubmit: autosubmitFlag, Ccs: parseEmails(ccsFlag), Draft: draftFlag, Edit: editFlag, Host: host, Presubmit: gerrit.PresubmitTestType(presubmitFlag), RemoteBranch: remoteBranchFlag, Reviewers: parseEmails(reviewersFlag), Verify: verifyFlag, }) if err != nil { return err } if confirmed, err := review.confirmFlagChanges(); err != nil { return err } else if !confirmed { return nil } return review.run() }