Files
gitea-tea/cmd/pulls/stack/reorder.go
T
2026-09-24 23:31:32 -07:00

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
}