// 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: " [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 }