mirror of
https://gitea.com/gitea/tea.git
synced 2026-10-26 11:01:25 +01:00
Mutations end with a.jsonResult or a.created instead of hand-rolled --json branches, the two identical jsonResult/writeMutationJSON helpers become one, and writeBatchJSON checks --json itself so batch commands share one tail. Signed-off-by: bircni <bircni@icloud.com>
59 lines
2.1 KiB
Go
59 lines
2.1 KiB
Go
// Copyright 2026 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package app
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"gitea.dev/tea/internal/clierr"
|
|
"gitea.dev/tea/internal/services"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
func (a *application) pullReviewRequestCommand(add bool) *cobra.Command {
|
|
use, short, verb := "cancel-request [<number> | <url> | <branch>]", "Withdraw review requests", "Withdrew review request from"
|
|
if add {
|
|
use, short, verb = "request [<number> | <url> | <branch>]", "Request reviews from users or teams", "Requested review from"
|
|
}
|
|
var input services.ReviewRequestInput
|
|
cmd := &cobra.Command{Use: use, Short: short, Annotations: pullArgumentsAnnotation(nil), Args: usageArgs(cobra.MaximumNArgs(1)), RunE: func(cmd *cobra.Command, args []string) error {
|
|
trimNames(input.Users, input.Teams)
|
|
changes := services.ReviewRequestChanges{}
|
|
if add {
|
|
changes.Add = input
|
|
} else {
|
|
changes.Remove = input
|
|
}
|
|
if err := changes.Validate(); err != nil {
|
|
return clierr.Wrap(clierr.Usage, err)
|
|
}
|
|
t, n, err := a.pullSelector(cmd, args)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
t.expandMeAll(input.Users)
|
|
item, err := (services.Reviews{Client: t.client, Repository: t.Repo}).ChangeRequests(cmd.Context(), n, changes)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
names := append([]string{}, input.Users...)
|
|
for _, team := range input.Teams {
|
|
names = append(names, "team "+team)
|
|
}
|
|
a.done(cmd, "%s %s on %s", verb, strings.Join(names, ", "), refLabel(t.Repo, item.Number, item.Title))
|
|
return a.jsonResult(cmd, item)
|
|
}}
|
|
cmd.Flags().StringSliceVarP(&input.Users, "reviewer", "r", nil, "Reviewer usernames or email addresses; @me for yourself")
|
|
cmd.Flags().StringSliceVar(&input.Teams, "team", nil, "Teams of the repository's organization")
|
|
_ = cmd.RegisterFlagCompletionFunc("reviewer", a.completeUsers())
|
|
cmd.ValidArgsFunction = a.completePulls("open")
|
|
if add {
|
|
cmd.Example = `$ tea pr review request 13 --reviewer carol,dave
|
|
$ tea pr review request --team developers`
|
|
} else {
|
|
cmd.Example = "$ tea pr review cancel-request 13 --reviewer carol"
|
|
}
|
|
return cmd
|
|
}
|