mirror of
https://github.com/acepanel/panel.git
synced 2026-02-04 03:07:20 +08:00
feat: 补全命令行翻译
This commit is contained in:
@@ -1,17 +1,20 @@
|
||||
package route
|
||||
|
||||
import (
|
||||
"github.com/leonelquinteros/gotext"
|
||||
"github.com/urfave/cli/v3"
|
||||
|
||||
"github.com/tnb-labs/panel/internal/service"
|
||||
)
|
||||
|
||||
type Cli struct {
|
||||
t *gotext.Locale
|
||||
cli *service.CliService
|
||||
}
|
||||
|
||||
func NewCli(cli *service.CliService) *Cli {
|
||||
func NewCli(t *gotext.Locale, cli *service.CliService) *Cli {
|
||||
return &Cli{
|
||||
t: t,
|
||||
cli: cli,
|
||||
}
|
||||
}
|
||||
@@ -20,147 +23,147 @@ func (route *Cli) Commands() []*cli.Command {
|
||||
return []*cli.Command{
|
||||
{
|
||||
Name: "restart",
|
||||
Usage: "重启面板服务",
|
||||
Usage: route.t.Get("Restart panel service"),
|
||||
Action: route.cli.Restart,
|
||||
},
|
||||
{
|
||||
Name: "stop",
|
||||
Usage: "停止面板服务",
|
||||
Usage: route.t.Get("Stop panel service"),
|
||||
Action: route.cli.Stop,
|
||||
},
|
||||
{
|
||||
Name: "start",
|
||||
Usage: "启动面板服务",
|
||||
Usage: route.t.Get("Start panel service"),
|
||||
Action: route.cli.Start,
|
||||
},
|
||||
{
|
||||
Name: "update",
|
||||
Usage: "更新面板",
|
||||
Usage: route.t.Get("Update panel"),
|
||||
Action: route.cli.Update,
|
||||
},
|
||||
{
|
||||
Name: "sync",
|
||||
Usage: "同步数据",
|
||||
Usage: route.t.Get("Sync panel data"),
|
||||
Action: route.cli.Sync,
|
||||
},
|
||||
{
|
||||
Name: "fix",
|
||||
Usage: "修复面板",
|
||||
Usage: route.t.Get("Fix panel"),
|
||||
Action: route.cli.Fix,
|
||||
},
|
||||
{
|
||||
Name: "info",
|
||||
Usage: "输出面板基本信息",
|
||||
Usage: route.t.Get("Output panel basic information and generate new password"),
|
||||
Action: route.cli.Info,
|
||||
},
|
||||
{
|
||||
Name: "user",
|
||||
Usage: "操作面板用户",
|
||||
Usage: route.t.Get("Operate panel users"),
|
||||
Commands: []*cli.Command{
|
||||
{
|
||||
Name: "list",
|
||||
Usage: "列出所有用户",
|
||||
Usage: route.t.Get("List all users"),
|
||||
Action: route.cli.UserList,
|
||||
},
|
||||
{
|
||||
Name: "username",
|
||||
Usage: "修改用户名",
|
||||
Usage: route.t.Get("Change username"),
|
||||
Action: route.cli.UserName,
|
||||
},
|
||||
{
|
||||
Name: "password",
|
||||
Usage: "修改用户密码",
|
||||
Usage: route.t.Get("Change user password"),
|
||||
Action: route.cli.UserPassword,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "https",
|
||||
Usage: "操作面板HTTPS",
|
||||
Usage: route.t.Get("Operate panel HTTPS"),
|
||||
Commands: []*cli.Command{
|
||||
{
|
||||
Name: "on",
|
||||
Usage: "开启HTTPS",
|
||||
Usage: route.t.Get("Enable HTTPS"),
|
||||
Action: route.cli.HTTPSOn,
|
||||
},
|
||||
{
|
||||
Name: "off",
|
||||
Usage: "关闭HTTPS",
|
||||
Usage: route.t.Get("Disable HTTPS"),
|
||||
Action: route.cli.HTTPSOff,
|
||||
},
|
||||
{
|
||||
Name: "generate",
|
||||
Usage: "生成HTTPS证书",
|
||||
Usage: route.t.Get("Generate HTTPS certificate"),
|
||||
Action: route.cli.HTTPSGenerate,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "entrance",
|
||||
Usage: "操作面板访问入口",
|
||||
Usage: route.t.Get("Operate panel access entrance"),
|
||||
Commands: []*cli.Command{
|
||||
{
|
||||
Name: "on",
|
||||
Usage: "开启访问入口",
|
||||
Usage: route.t.Get("Enable access entrance"),
|
||||
Action: route.cli.EntranceOn,
|
||||
},
|
||||
{
|
||||
Name: "off",
|
||||
Usage: "关闭访问入口",
|
||||
Usage: route.t.Get("Disable access entrance"),
|
||||
Action: route.cli.EntranceOff,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "port",
|
||||
Usage: "修改面板端口",
|
||||
Usage: route.t.Get("Change panel port"),
|
||||
Action: route.cli.Port,
|
||||
},
|
||||
{
|
||||
Name: "website",
|
||||
Usage: "网站管理",
|
||||
Usage: route.t.Get("Website management"),
|
||||
Commands: []*cli.Command{
|
||||
{
|
||||
Name: "create",
|
||||
Usage: "创建新网站",
|
||||
Usage: route.t.Get("Create new website"),
|
||||
Action: route.cli.WebsiteCreate,
|
||||
Flags: []cli.Flag{
|
||||
&cli.StringFlag{
|
||||
Name: "name",
|
||||
Usage: "网站名称",
|
||||
Usage: route.t.Get("Website name"),
|
||||
Aliases: []string{"n"},
|
||||
Required: true,
|
||||
},
|
||||
&cli.StringSliceFlag{
|
||||
Name: "domains",
|
||||
Usage: "与网站关联的域名列表",
|
||||
Usage: route.t.Get("List of domains associated with the website"),
|
||||
Aliases: []string{"d"},
|
||||
Required: true,
|
||||
},
|
||||
&cli.StringSliceFlag{
|
||||
Name: "listens",
|
||||
Usage: "与网站关联的监听地址列表",
|
||||
Usage: route.t.Get("List of listening addresses associated with the website"),
|
||||
Aliases: []string{"l"},
|
||||
Required: true,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "path",
|
||||
Usage: "网站托管的路径(不填则默认路径)",
|
||||
Usage: route.t.Get("Path where the website is hosted (default path if not filled)"),
|
||||
},
|
||||
&cli.IntFlag{
|
||||
Name: "php",
|
||||
Usage: "网站使用的 PHP 版本(不填不使用)",
|
||||
Usage: route.t.Get("PHP version used by the website (not used if not filled)"),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "remove",
|
||||
Usage: "移除网站",
|
||||
Usage: route.t.Get("Remove website"),
|
||||
Action: route.cli.WebsiteRemove,
|
||||
Flags: []cli.Flag{
|
||||
&cli.StringFlag{
|
||||
Name: "name",
|
||||
Usage: "网站名称",
|
||||
Usage: route.t.Get("Website name"),
|
||||
Aliases: []string{"n"},
|
||||
Required: true,
|
||||
},
|
||||
@@ -168,12 +171,12 @@ func (route *Cli) Commands() []*cli.Command {
|
||||
},
|
||||
{
|
||||
Name: "delete",
|
||||
Usage: "删除网站(包括网站目录、同名数据库)",
|
||||
Usage: route.t.Get("Delete website (including website directory, database with the same name)"),
|
||||
Action: route.cli.WebsiteDelete,
|
||||
Flags: []cli.Flag{
|
||||
&cli.StringFlag{
|
||||
Name: "name",
|
||||
Usage: "网站名称",
|
||||
Usage: route.t.Get("Website name"),
|
||||
Aliases: []string{"n"},
|
||||
Required: true,
|
||||
},
|
||||
@@ -181,7 +184,7 @@ func (route *Cli) Commands() []*cli.Command {
|
||||
},
|
||||
{
|
||||
Name: "write",
|
||||
Usage: "写入网站数据(仅限指导下使用)",
|
||||
Usage: route.t.Get("Write website data (use only under guidance)"),
|
||||
Hidden: true,
|
||||
Action: route.cli.WebsiteWrite,
|
||||
},
|
||||
@@ -189,55 +192,55 @@ func (route *Cli) Commands() []*cli.Command {
|
||||
},
|
||||
{
|
||||
Name: "database",
|
||||
Usage: "数据库管理",
|
||||
Usage: route.t.Get("Database management"),
|
||||
Commands: []*cli.Command{
|
||||
{
|
||||
Name: "add-server",
|
||||
Usage: "添加数据库服务器",
|
||||
Usage: route.t.Get("Add database server"),
|
||||
Action: route.cli.DatabaseAddServer,
|
||||
Flags: []cli.Flag{
|
||||
&cli.StringFlag{
|
||||
Name: "type",
|
||||
Usage: "服务器类型",
|
||||
Usage: route.t.Get("Server type"),
|
||||
Required: true,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "name",
|
||||
Usage: "服务器名称",
|
||||
Usage: route.t.Get("Server name"),
|
||||
Required: true,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "host",
|
||||
Usage: "服务器地址",
|
||||
Usage: route.t.Get("Server address"),
|
||||
Required: true,
|
||||
},
|
||||
&cli.UintFlag{
|
||||
Name: "port",
|
||||
Usage: "服务器端口",
|
||||
Usage: route.t.Get("Server port"),
|
||||
Required: true,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "username",
|
||||
Usage: "服务器用户名",
|
||||
Usage: route.t.Get("Server username"),
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "password",
|
||||
Usage: "服务器密码",
|
||||
Usage: route.t.Get("Server password"),
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "remark",
|
||||
Usage: "服务器备注",
|
||||
Usage: route.t.Get("Server remark"),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "delete-server",
|
||||
Usage: "删除数据库服务器",
|
||||
Usage: route.t.Get("Delete database server"),
|
||||
Action: route.cli.DatabaseDeleteServer,
|
||||
Flags: []cli.Flag{
|
||||
&cli.StringFlag{
|
||||
Name: "name",
|
||||
Usage: "服务器名称",
|
||||
Usage: route.t.Get("Server name"),
|
||||
Aliases: []string{"n"},
|
||||
Required: true,
|
||||
},
|
||||
@@ -247,89 +250,89 @@ func (route *Cli) Commands() []*cli.Command {
|
||||
},
|
||||
{
|
||||
Name: "backup",
|
||||
Usage: "数据备份",
|
||||
Usage: route.t.Get("Data backup"),
|
||||
Commands: []*cli.Command{
|
||||
{
|
||||
Name: "website",
|
||||
Usage: "备份网站",
|
||||
Usage: route.t.Get("Backup website"),
|
||||
Action: route.cli.BackupWebsite,
|
||||
Flags: []cli.Flag{
|
||||
&cli.StringFlag{
|
||||
Name: "name",
|
||||
Aliases: []string{"n"},
|
||||
Usage: "网站名称",
|
||||
Usage: route.t.Get("Website name"),
|
||||
Required: true,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "path",
|
||||
Aliases: []string{"p"},
|
||||
Usage: "保存目录(不填则默认路径)",
|
||||
Usage: route.t.Get("Save directory (default path if not filled)"),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "database",
|
||||
Usage: "备份数据库",
|
||||
Usage: route.t.Get("Backup database"),
|
||||
Action: route.cli.BackupDatabase,
|
||||
Flags: []cli.Flag{
|
||||
&cli.StringFlag{
|
||||
Name: "type",
|
||||
Aliases: []string{"t"},
|
||||
Usage: "数据库类型",
|
||||
Usage: route.t.Get("Database type"),
|
||||
Required: true,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "name",
|
||||
Aliases: []string{"n"},
|
||||
Usage: "数据库名称",
|
||||
Usage: route.t.Get("Database name"),
|
||||
Required: true,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "path",
|
||||
Aliases: []string{"p"},
|
||||
Usage: "保存目录(不填则默认路径)",
|
||||
Usage: route.t.Get("Save directory (default path if not filled)"),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "panel",
|
||||
Usage: "备份面板",
|
||||
Usage: route.t.Get("Backup panel"),
|
||||
Action: route.cli.BackupPanel,
|
||||
Flags: []cli.Flag{
|
||||
&cli.StringFlag{
|
||||
Name: "path",
|
||||
Aliases: []string{"p"},
|
||||
Usage: "保存目录(不填则默认路径)",
|
||||
Usage: route.t.Get("Save directory (default path if not filled)"),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "clear",
|
||||
Usage: "清理备份",
|
||||
Usage: route.t.Get("Clear backups"),
|
||||
Action: route.cli.BackupClear,
|
||||
Flags: []cli.Flag{
|
||||
&cli.StringFlag{
|
||||
Name: "type",
|
||||
Aliases: []string{"t"},
|
||||
Usage: "备份类型",
|
||||
Usage: route.t.Get("Backup type"),
|
||||
Required: true,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "file",
|
||||
Aliases: []string{"f"},
|
||||
Usage: "备份文件",
|
||||
Usage: route.t.Get("Backup file"),
|
||||
Required: true,
|
||||
},
|
||||
&cli.IntFlag{
|
||||
Name: "save",
|
||||
Aliases: []string{"s"},
|
||||
Usage: "保存份数",
|
||||
Usage: route.t.Get("Number of backups to keep"),
|
||||
Required: true,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "path",
|
||||
Aliases: []string{"p"},
|
||||
Usage: "备份目录(不填则默认路径)",
|
||||
Usage: route.t.Get("Backup directory (default path if not filled)"),
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -337,54 +340,54 @@ func (route *Cli) Commands() []*cli.Command {
|
||||
},
|
||||
{
|
||||
Name: "cutoff",
|
||||
Usage: "日志切割",
|
||||
Usage: route.t.Get("Log rotation"),
|
||||
Commands: []*cli.Command{
|
||||
{
|
||||
Name: "website",
|
||||
Usage: "网站",
|
||||
Usage: route.t.Get("Website"),
|
||||
Action: route.cli.CutoffWebsite,
|
||||
Flags: []cli.Flag{
|
||||
&cli.StringFlag{
|
||||
Name: "name",
|
||||
Aliases: []string{"n"},
|
||||
Usage: "网站名称",
|
||||
Usage: route.t.Get("Website name"),
|
||||
Required: true,
|
||||
},
|
||||
|
||||
&cli.StringFlag{
|
||||
Name: "path",
|
||||
Aliases: []string{"p"},
|
||||
Usage: "保存目录(不填则默认路径)",
|
||||
Usage: route.t.Get("Save directory (default path if not filled)"),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "clear",
|
||||
Usage: "清理切割的日志",
|
||||
Usage: route.t.Get("Clear rotated logs"),
|
||||
Action: route.cli.CutoffClear,
|
||||
Flags: []cli.Flag{
|
||||
&cli.StringFlag{
|
||||
Name: "type",
|
||||
Aliases: []string{"t"},
|
||||
Usage: "切割类型",
|
||||
Usage: route.t.Get("Rotation type"),
|
||||
Required: true,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "file",
|
||||
Aliases: []string{"f"},
|
||||
Usage: "切割文件",
|
||||
Usage: route.t.Get("Rotation file"),
|
||||
Required: true,
|
||||
},
|
||||
&cli.IntFlag{
|
||||
Name: "save",
|
||||
Aliases: []string{"s"},
|
||||
Usage: "保存份数",
|
||||
Usage: route.t.Get("Number of logs to keep"),
|
||||
Required: true,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "path",
|
||||
Aliases: []string{"p"},
|
||||
Usage: "切割目录(不填则默认路径)",
|
||||
Usage: route.t.Get("Rotation directory (default path if not filled)"),
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -392,32 +395,32 @@ func (route *Cli) Commands() []*cli.Command {
|
||||
},
|
||||
{
|
||||
Name: "app",
|
||||
Usage: "应用管理",
|
||||
Usage: route.t.Get("Application management"),
|
||||
Commands: []*cli.Command{
|
||||
{
|
||||
Name: "install",
|
||||
Usage: "安装应用",
|
||||
Usage: route.t.Get("Install application"),
|
||||
Action: route.cli.AppInstall,
|
||||
},
|
||||
{
|
||||
Name: "uninstall",
|
||||
Usage: "卸载应用",
|
||||
Usage: route.t.Get("Uninstall application"),
|
||||
Action: route.cli.AppUnInstall,
|
||||
},
|
||||
{
|
||||
Name: "update",
|
||||
Usage: "更新应用",
|
||||
Usage: route.t.Get("Update application"),
|
||||
Action: route.cli.AppUpdate,
|
||||
},
|
||||
{
|
||||
Name: "write",
|
||||
Usage: "添加面板应用标记(仅限指导下使用)",
|
||||
Usage: route.t.Get("Add panel application mark (use only under guidance)"),
|
||||
Hidden: true,
|
||||
Action: route.cli.AppWrite,
|
||||
},
|
||||
{
|
||||
Name: "remove",
|
||||
Usage: "移除面板应用标记(仅限指导下使用)",
|
||||
Usage: route.t.Get("Remove panel application mark (use only under guidance)"),
|
||||
Hidden: true,
|
||||
Action: route.cli.AppRemove,
|
||||
},
|
||||
@@ -425,24 +428,24 @@ func (route *Cli) Commands() []*cli.Command {
|
||||
},
|
||||
{
|
||||
Name: "setting",
|
||||
Usage: "设置管理",
|
||||
Usage: route.t.Get("Setting management"),
|
||||
Hidden: true,
|
||||
Commands: []*cli.Command{
|
||||
{
|
||||
Name: "get",
|
||||
Usage: "获取面板设置(仅限指导下使用)",
|
||||
Usage: route.t.Get("Get panel setting (use only under guidance)"),
|
||||
Hidden: true,
|
||||
Action: route.cli.GetSetting,
|
||||
},
|
||||
{
|
||||
Name: "write",
|
||||
Usage: "写入面板设置(仅限指导下使用)",
|
||||
Usage: route.t.Get("Write panel setting (use only under guidance)"),
|
||||
Hidden: true,
|
||||
Action: route.cli.WriteSetting,
|
||||
},
|
||||
{
|
||||
Name: "remove",
|
||||
Usage: "移除面板设置(仅限指导下使用)",
|
||||
Usage: route.t.Get("Remove panel setting (use only under guidance)"),
|
||||
Hidden: true,
|
||||
Action: route.cli.RemoveSetting,
|
||||
},
|
||||
@@ -450,18 +453,18 @@ func (route *Cli) Commands() []*cli.Command {
|
||||
},
|
||||
{
|
||||
Name: "sync-time",
|
||||
Usage: "同步系统时间",
|
||||
Usage: route.t.Get("Sync system time"),
|
||||
Action: route.cli.SyncTime,
|
||||
},
|
||||
{
|
||||
Name: "clear-task",
|
||||
Usage: "清理面板任务队列(仅限指导下使用)",
|
||||
Usage: route.t.Get("Clear panel task queue (use only under guidance)"),
|
||||
Hidden: true,
|
||||
Action: route.cli.ClearTask,
|
||||
},
|
||||
{
|
||||
Name: "init",
|
||||
Usage: "初始化面板(仅限指导下使用)",
|
||||
Usage: route.t.Get("Initialize panel (use only under guidance)"),
|
||||
Hidden: true,
|
||||
Action: route.cli.Init,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user