mirror of
https://gitea.com/gitea/tea.git
synced 2026-10-05 21:38:13 +02:00
54 lines
1.4 KiB
Go
54 lines
1.4 KiB
Go
// Copyright 2026 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package stack
|
|
|
|
import (
|
|
stdctx "context"
|
|
"fmt"
|
|
|
|
"gitea.dev/tea/cmd/flags"
|
|
"gitea.dev/tea/modules/context"
|
|
"gitea.dev/tea/modules/task"
|
|
"gitea.dev/tea/modules/utils"
|
|
|
|
"github.com/urfave/cli/v3"
|
|
)
|
|
|
|
// CmdStackReorder stores a validated, already-linked PR branch order.
|
|
var CmdStackReorder = cli.Command{
|
|
Name: "reorder", Usage: "Reorder PRs after their branches have been rebased",
|
|
ArgsUsage: "<stack id> <pull index> <pull index> [more pull indices]",
|
|
Flags: flags.AllDefaultFlags, Action: RunStackReorder,
|
|
}
|
|
|
|
func RunStackReorder(requestCtx stdctx.Context, cmd *cli.Command) error {
|
|
if cmd.Args().Len() < 3 {
|
|
return fmt.Errorf("stack id and at least two pull numbers are required")
|
|
}
|
|
stackID, err := utils.ArgToIndex(cmd.Args().Get(0))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
indices := make([]int64, 0, cmd.Args().Len()-1)
|
|
for i := 1; i < cmd.Args().Len(); i++ {
|
|
index, err := utils.ArgToIndex(cmd.Args().Get(i))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
indices = append(indices, index)
|
|
}
|
|
ctx, err := context.InitCommand(cmd)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if err := ctx.Ensure(context.CtxRequirement{RemoteRepo: true}); err != nil {
|
|
return err
|
|
}
|
|
if _, err := task.ReorderPullStack(requestCtx, ctx.Login, ctx.Owner, ctx.Repo, stackID, indices); err != nil {
|
|
return err
|
|
}
|
|
fmt.Fprintf(ctx.Writer, "reordered stack #%d\n", stackID)
|
|
return nil
|
|
}
|