gitea.tea/cmd/repos.go
Ross Golder 42a85f603e
feat(repos): add 'repos settings' subcommand for feature toggles and merge policy
Adds a new 'repos settings' (alias: config) subcommand that complements
the existing 'repos edit' command:

- 'repos edit'   - basic properties (name, description, website,
                   private/template/archived, default-branch)
- 'repos settings' - feature toggles (issues, wiki, pulls, projects,
                     releases, packages, actions) and merge policy
                     (default style, allowed merge strategies)

The split keeps each command focused and avoids duplicating flags
already present on 'repos edit' (PR #928). Trying to set both
--enable-X and --disable-X in the same invocation will fail at the
Gitea API layer; the command emits a clear error if no changes are
requested.
2026-09-05 09:53:44 +07:00

67 lines
1.6 KiB
Go

// Copyright 2019 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package cmd
import (
stdctx "context"
gitea "gitea.dev/sdk"
"gitea.dev/tea/cmd/repos"
"gitea.dev/tea/modules/context"
"gitea.dev/tea/modules/print"
"gitea.dev/tea/modules/utils"
"github.com/urfave/cli/v3"
)
// CmdRepos represents the command to manage repositories.
var CmdRepos = cli.Command{
Name: "repos",
Aliases: []string{"repo"},
Category: catEntities,
Usage: "Manage repositories",
Description: "Manage repositories",
ArgsUsage: "[<repo owner>/<repo name>]",
Action: runRepos,
Commands: []*cli.Command{
&repos.CmdReposList,
&repos.CmdReposSearch,
&repos.CmdRepoCreate,
&repos.CmdRepoCreateFromTemplate,
&repos.CmdRepoFork,
&repos.CmdRepoMigrate,
&repos.CmdRepoRm,
&repos.CmdRepoEdit,
&repos.CmdReposSettings,
},
Flags: repos.CmdReposListFlags,
}
func runRepos(ctx stdctx.Context, cmd *cli.Command) error {
if cmd.Args().Len() == 1 {
return runRepoDetail(ctx, cmd, cmd.Args().First())
}
return repos.RunReposList(ctx, cmd)
}
func runRepoDetail(requestCtx stdctx.Context, cmd *cli.Command, path string) error {
ctx, err := context.InitCommand(cmd)
if err != nil {
return err
}
client := ctx.Login.Client()
repoOwner, repoName := utils.GetOwnerAndRepo(path, ctx.Owner)
repo, _, err := client.Repositories.GetRepo(requestCtx, repoOwner, repoName)
if err != nil {
return err
}
topics, _, err := client.Repositories.ListRepoTopics(requestCtx, repoOwner, repoName, gitea.ListRepoTopicsOptions{})
if err != nil {
return err
}
print.RepoDetails(repo, topics)
return nil
}