mirror of
https://gitea.com/gitea/tea.git
synced 2026-10-05 21:38:13 +02:00
feat(pulls): support branch-validated stack reordering
Assisted-by: Codet:GPT-5-Codex
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
// 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
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
// Copyright 2026 The Gitea Authors. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package stack
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestStackReorderRequiresCompleteOrder(t *testing.T) {
|
||||
cmd := CmdStackReorder
|
||||
err := cmd.Run(context.Background(), []string{"reorder", "5", "2"})
|
||||
assert.ErrorContains(t, err, "at least two pull numbers")
|
||||
}
|
||||
Reference in New Issue
Block a user