Skip to content

Commit 047c69b

Browse files
authored
Improve CLI code and descriptions (#28482)
* Close #28444 * Actually, it doesn't need to use that trick because it looks like it is not necessary, no user really needs it * Remove the hidden (legacy) "doctor" subcommand and update documents * Fix "actions" usage ![image](https://github.com/go-gitea/gitea/assets/2114189/3c2b34a7-4f92-4a6c-96fd-9505e413d4ec)
1 parent 3849fd2 commit 047c69b

File tree

12 files changed

+27
-37
lines changed

12 files changed

+27
-37
lines changed

cmd/actions.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,8 @@ import (
1515
var (
1616
// CmdActions represents the available actions sub-commands.
1717
CmdActions = &cli.Command{
18-
Name: "actions",
19-
Usage: "",
20-
Description: "Commands for managing Gitea Actions",
18+
Name: "actions",
19+
Usage: "Manage Gitea Actions",
2120
Subcommands: []*cli.Command{
2221
subcmdActionsGenRunnerToken,
2322
},

cmd/admin.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ var (
2121
// CmdAdmin represents the available admin sub-command.
2222
CmdAdmin = &cli.Command{
2323
Name: "admin",
24-
Usage: "Command line interface to perform common administrative operations",
24+
Usage: "Perform common administrative operations",
2525
Subcommands: []*cli.Command{
2626
subcmdUser,
2727
subcmdRepoSyncReleases,

cmd/doctor.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import (
2626
// CmdDoctor represents the available doctor sub-command.
2727
var CmdDoctor = &cli.Command{
2828
Name: "doctor",
29-
Usage: "Diagnose and optionally fix problems",
29+
Usage: "Diagnose and optionally fix problems, convert or re-create database tables",
3030
Description: "A command to diagnose problems with the current Gitea instance according to the given configuration. Some problems can optionally be fixed by modifying the database or data storage.",
3131

3232
Subcommands: []*cli.Command{

cmd/generate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ var (
1818
// CmdGenerate represents the available generate sub-command.
1919
CmdGenerate = &cli.Command{
2020
Name: "generate",
21-
Usage: "Command line interface for running generators",
21+
Usage: "Generate Gitea's secrets/keys/tokens",
2222
Subcommands: []*cli.Command{
2323
subcmdSecret,
2424
},

cmd/hook.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ var (
3131
// CmdHook represents the available hooks sub-command.
3232
CmdHook = &cli.Command{
3333
Name: "hook",
34-
Usage: "Delegate commands to corresponding Git hooks",
35-
Description: "This should only be called by Git",
34+
Usage: "(internal) Should only be called by Git",
35+
Description: "Delegate commands to corresponding Git hooks",
3636
Before: PrepareConsoleLoggerLevel(log.FATAL),
3737
Subcommands: []*cli.Command{
3838
subcmdHookPreReceive,

cmd/keys.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,11 @@ import (
1616

1717
// CmdKeys represents the available keys sub-command
1818
var CmdKeys = &cli.Command{
19-
Name: "keys",
20-
Usage: "This command queries the Gitea database to get the authorized command for a given ssh key fingerprint",
21-
Before: PrepareConsoleLoggerLevel(log.FATAL),
22-
Action: runKeys,
19+
Name: "keys",
20+
Usage: "(internal) Should only be called by SSH server",
21+
Description: "Queries the Gitea database to get the authorized command for a given ssh key fingerprint",
22+
Before: PrepareConsoleLoggerLevel(log.FATAL),
23+
Action: runKeys,
2324
Flags: []cli.Flag{
2425
&cli.StringFlag{
2526
Name: "expected",

cmd/main.go

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@ import (
1010

1111
"code.gitea.io/gitea/modules/log"
1212
"code.gitea.io/gitea/modules/setting"
13-
"code.gitea.io/gitea/modules/util"
1413

1514
"github.com/urfave/cli/v2"
1615
)
1716

1817
// cmdHelp is our own help subcommand with more information
18+
// Keep in mind that the "./gitea help"(subcommand) is different from "./gitea --help"(flag), the flag doesn't parse the config or output "DEFAULT CONFIGURATION:" information
1919
func cmdHelp() *cli.Command {
2020
c := &cli.Command{
2121
Name: "help",
@@ -47,16 +47,10 @@ DEFAULT CONFIGURATION:
4747
return c
4848
}
4949

50-
var helpFlag = cli.HelpFlag
51-
52-
func init() {
53-
// cli.HelpFlag = nil TODO: after https://github.com/urfave/cli/issues/1794 we can use this
54-
}
55-
5650
func appGlobalFlags() []cli.Flag {
5751
return []cli.Flag{
5852
// make the builtin flags at the top
59-
helpFlag,
53+
cli.HelpFlag,
6054

6155
// shared configuration flags, they are for global and for each sub-command at the same time
6256
// eg: such command is valid: "./gitea --config /tmp/app.ini web --config /tmp/app.ini", while it's discouraged indeed
@@ -121,34 +115,31 @@ func prepareWorkPathAndCustomConf(action cli.ActionFunc) func(ctx *cli.Context)
121115
func NewMainApp(version, versionExtra string) *cli.App {
122116
app := cli.NewApp()
123117
app.Name = "Gitea"
118+
app.HelpName = "gitea"
124119
app.Usage = "A painless self-hosted Git service"
125-
app.Description = `By default, Gitea will start serving using the web-server with no argument, which can alternatively be run by running the subcommand "web".`
120+
app.Description = `Gitea program contains "web" and other subcommands. If no subcommand is given, it starts the web server by default. Use "web" subcommand for more web server arguments, use other subcommands for other purposes.`
126121
app.Version = version + versionExtra
127122
app.EnableBashCompletion = true
128123

129124
// these sub-commands need to use config file
130125
subCmdWithConfig := []*cli.Command{
126+
cmdHelp(), // the "help" sub-command was used to show the more information for "work path" and "custom config"
131127
CmdWeb,
132128
CmdServ,
133129
CmdHook,
130+
CmdKeys,
134131
CmdDump,
135132
CmdAdmin,
136133
CmdMigrate,
137-
CmdKeys,
138134
CmdDoctor,
139135
CmdManager,
140136
CmdEmbedded,
141137
CmdMigrateStorage,
142138
CmdDumpRepository,
143139
CmdRestoreRepository,
144140
CmdActions,
145-
cmdHelp(), // the "help" sub-command was used to show the more information for "work path" and "custom config"
146141
}
147142

148-
cmdConvert := util.ToPointer(*cmdDoctorConvert)
149-
cmdConvert.Hidden = true // still support the legacy "./gitea doctor" by the hidden sub-command, remove it in next release
150-
subCmdWithConfig = append(subCmdWithConfig, cmdConvert)
151-
152143
// these sub-commands do not need the config file, and they do not depend on any path or environment variable.
153144
subCmdStandalone := []*cli.Command{
154145
CmdCert,

cmd/serv.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ const (
4242
// CmdServ represents the available serv sub-command.
4343
var CmdServ = &cli.Command{
4444
Name: "serv",
45-
Usage: "This command should only be called by SSH shell",
45+
Usage: "(internal) Should only be called by SSH shell",
4646
Description: "Serv provides access auth for repositories",
4747
Before: PrepareConsoleLoggerLevel(log.FATAL),
4848
Action: runServ,

docs/content/help/faq.en-us.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,7 @@ If you are receiving errors on upgrade of Gitea using MySQL that read:
362362

363363
> `ORM engine initialization failed: migrate: do migrate: Error: 1118: Row size too large...`
364364
365-
Please run `gitea convert` or run `ALTER TABLE table_name ROW_FORMAT=dynamic;` for each table in the database.
365+
Please run `gitea doctor convert` or run `ALTER TABLE table_name ROW_FORMAT=dynamic;` for each table in the database.
366366

367367
The underlying problem is that the space allocated for indices by the default row format
368368
is too small. Gitea requires that the `ROWFORMAT` for its tables is `DYNAMIC`.
@@ -385,7 +385,7 @@ Unfortunately MySQL's `utf8` charset does not completely allow all possible UTF-
385385
They created a new charset and collation called `utf8mb4` that allows for emoji to be stored but tables which use
386386
the `utf8` charset, and connections which use the `utf8` charset will not use this.
387387

388-
Please run `gitea convert`, or run `ALTER DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;`
388+
Please run `gitea doctor convert`, or run `ALTER DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;`
389389
for the database_name and run `ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;`
390390
for each table in the database.
391391

docs/content/help/faq.zh-cn.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@ Gitea 提供了一个子命令`gitea migrate`来初始化数据库,然后您
366366

367367
> `ORM engine initialization failed: migrate: do migrate: Error: 1118: Row size too large...`
368368
369-
请运行`gitea convert`或对数据库中的每个表运行`ALTER TABLE table_name ROW_FORMAT=dynamic;`
369+
请运行 `gitea doctor convert` 或对数据库中的每个表运行 `ALTER TABLE table_name ROW_FORMAT=dynamic;`
370370

371371
潜在问题是默认行格式分配给每个表的索引空间
372372
太小。Gitea 要求其表的`ROWFORMAT``DYNAMIC`
@@ -389,9 +389,8 @@ SET GLOBAL innodb_large_prefix=1;
389389
他们创建了一个名为 `utf8mb4`的字符集和校对规则,允许存储 Emoji,但使用
390390
utf8 字符集的表和连接将不会使用它。
391391

392-
请运行 `gitea convert` 或对数据库运行`ALTER DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;`
393-
并对每个表运行
394-
`ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;`
392+
请运行 `gitea doctor convert` 或对数据库运行 `ALTER DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;`
393+
并对每个表运行 `ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;`
395394

396395
您还需要将`app.ini`文件中的数据库字符集设置为`CHARSET=utf8mb4`
397396

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ require (
9999
github.com/syndtr/goleveldb v1.0.0
100100
github.com/tstranex/u2f v1.0.0
101101
github.com/ulikunitz/xz v0.5.11
102-
github.com/urfave/cli/v2 v2.25.7
102+
github.com/urfave/cli/v2 v2.26.0
103103
github.com/xanzy/go-gitlab v0.93.1
104104
github.com/xeipuuv/gojsonschema v1.2.0
105105
github.com/yohcop/openid-go v1.0.1

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1023,8 +1023,8 @@ github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0o
10231023
github.com/unknwon/com v0.0.0-20190804042917-757f69c95f3e/go.mod h1:tOOxU81rwgoCLoOVVPHb6T/wt8HZygqH5id+GNnlCXM=
10241024
github.com/unknwon/com v1.0.1 h1:3d1LTxD+Lnf3soQiD4Cp/0BRB+Rsa/+RTvz8GMMzIXs=
10251025
github.com/unknwon/com v1.0.1/go.mod h1:tOOxU81rwgoCLoOVVPHb6T/wt8HZygqH5id+GNnlCXM=
1026-
github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs=
1027-
github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ=
1026+
github.com/urfave/cli/v2 v2.26.0 h1:3f3AMg3HpThFNT4I++TKOejZO8yU55t3JnnSr4S4QEI=
1027+
github.com/urfave/cli/v2 v2.26.0/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ=
10281028
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
10291029
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
10301030
github.com/valyala/fasthttp v1.37.1-0.20220607072126-8a320890c08d/go.mod h1:t/G+3rLek+CyY9bnIE+YlMRddxVAAGjhxndDB4i4C0I=

0 commit comments

Comments
 (0)