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, +}