From a2e8b47c573b77cf2254b3aa16d56e4657b16164 Mon Sep 17 00:00:00 2001 From: Martin Reboredo Date: Thu, 17 Dec 2020 06:47:12 +0800 Subject: [PATCH] Implement PR closing and reopening (#304) Implement pull request closing/reopening Signed-off-by: Martin Reboredo Correct year and `pull` description Apply changes from #291 Return fmt.Errorf instead of log.Fatal if no pull index was supplied Co-authored-by: Martin Reboredo Reviewed-on: https://gitea.com/gitea/tea/pulls/304 Reviewed-by: Norwin Reviewed-by: appleboy Co-Authored-By: Martin Reboredo Co-Committed-By: Martin Reboredo --- cmd/pulls.go | 6 ++++-- cmd/pulls/close.go | 25 +++++++++++++++++++++++++ cmd/pulls/edit.go | 38 ++++++++++++++++++++++++++++++++++++++ cmd/pulls/reopen.go | 26 ++++++++++++++++++++++++++ 4 files changed, 93 insertions(+), 2 deletions(-) create mode 100644 cmd/pulls/close.go create mode 100644 cmd/pulls/edit.go create mode 100644 cmd/pulls/reopen.go diff --git a/cmd/pulls.go b/cmd/pulls.go index 515b8c7..6b1ab61 100644 --- a/cmd/pulls.go +++ b/cmd/pulls.go @@ -21,8 +21,8 @@ import ( var CmdPulls = cli.Command{ Name: "pulls", Aliases: []string{"pull", "pr"}, - Usage: "List, create, checkout and clean pull requests", - Description: `List, create, checkout and clean pull requests`, + Usage: "Manage and checkout pull requests", + Description: `Manage and checkout pull requests`, ArgsUsage: "[]", Action: runPulls, Flags: flags.IssuePRFlags, @@ -31,6 +31,8 @@ var CmdPulls = cli.Command{ &pulls.CmdPullsCheckout, &pulls.CmdPullsClean, &pulls.CmdPullsCreate, + &pulls.CmdPullsClose, + &pulls.CmdPullsReopen, }, } diff --git a/cmd/pulls/close.go b/cmd/pulls/close.go new file mode 100644 index 0000000..9a08c69 --- /dev/null +++ b/cmd/pulls/close.go @@ -0,0 +1,25 @@ +// Copyright 2020 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package pulls + +import ( + "code.gitea.io/tea/cmd/flags" + + "code.gitea.io/sdk/gitea" + "github.com/urfave/cli/v2" +) + +// CmdPullsClose closes a given open pull request +var CmdPullsClose = cli.Command{ + Name: "close", + Usage: "Change state of a pull request to 'closed'", + Description: `Change state of a pull request to 'closed'`, + ArgsUsage: "", + Action: func(ctx *cli.Context) error { + var s = gitea.StateClosed + return editPullState(ctx, gitea.EditPullRequestOption{State: &s}) + }, + Flags: flags.AllDefaultFlags, +} diff --git a/cmd/pulls/edit.go b/cmd/pulls/edit.go new file mode 100644 index 0000000..3c0e46e --- /dev/null +++ b/cmd/pulls/edit.go @@ -0,0 +1,38 @@ +// Copyright 2020 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package pulls + +import ( + "fmt" + + "code.gitea.io/tea/modules/context" + "code.gitea.io/tea/modules/print" + "code.gitea.io/tea/modules/utils" + + "code.gitea.io/sdk/gitea" + "github.com/urfave/cli/v2" +) + +// editPullState abstracts the arg parsing to edit the given pull request +func editPullState(cmd *cli.Context, opts gitea.EditPullRequestOption) error { + ctx := context.InitCommand(cmd) + ctx.Ensure(context.CtxRequirement{RemoteRepo: true}) + if ctx.Args().Len() == 0 { + return fmt.Errorf("Please provide a Pull Request index") + } + + index, err := utils.ArgToIndex(ctx.Args().First()) + if err != nil { + return err + } + + pr, _, err := ctx.Login.Client().EditPullRequest(ctx.Owner, ctx.Repo, index, opts) + if err != nil { + return err + } + + print.PullDetails(pr, nil, nil) + return nil +} diff --git a/cmd/pulls/reopen.go b/cmd/pulls/reopen.go new file mode 100644 index 0000000..8cd4c84 --- /dev/null +++ b/cmd/pulls/reopen.go @@ -0,0 +1,26 @@ +// Copyright 2020 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package pulls + +import ( + "code.gitea.io/tea/cmd/flags" + + "code.gitea.io/sdk/gitea" + "github.com/urfave/cli/v2" +) + +// CmdPullsReopen reopens a given closed pull request +var CmdPullsReopen = cli.Command{ + Name: "reopen", + Aliases: []string{"open"}, + Usage: "Change state of a pull request to 'open'", + Description: `Change state of a pull request to 'open'`, + ArgsUsage: "", + Action: func(ctx *cli.Context) error { + var s = gitea.StateOpen + return editPullState(ctx, gitea.EditPullRequestOption{State: &s}) + }, + Flags: flags.AllDefaultFlags, +}