mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-10-07 08:06:37 +08:00
fix(cmd): register all app modes as subcommands in cobra
Resolve unknown command error when launching all/api/worker/scheduler modes due to Cobra strict subcommand validation triggered by reset-passwd. Subcommands now run database migrations via dynamic PreRun hooks.
This commit is contained in:
+14
-17
@@ -47,23 +47,7 @@ var rootCmd = &cobra.Command{
|
|||||||
},
|
},
|
||||||
Run: func(_ *cobra.Command, args []string) {
|
Run: func(_ *cobra.Command, args []string) {
|
||||||
// 无参数时默认以融合模式启动所有服务
|
// 无参数时默认以融合模式启动所有服务
|
||||||
if len(args) == 0 {
|
allCmd.Run(allCmd, args)
|
||||||
allCmd.Run(allCmd, args)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
appMode := args[0]
|
|
||||||
switch appMode {
|
|
||||||
case "api":
|
|
||||||
apiCmd.Run(apiCmd, args)
|
|
||||||
case "scheduler":
|
|
||||||
schedulerCmd.Run(schedulerCmd, args)
|
|
||||||
case "worker":
|
|
||||||
workerCmd.Run(workerCmd, args)
|
|
||||||
case "all":
|
|
||||||
allCmd.Run(allCmd, args)
|
|
||||||
default:
|
|
||||||
log.Fatal("[CMD] unknown app mode\n")
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -76,6 +60,19 @@ func shutdownTraceProvider() {
|
|||||||
func init() {
|
func init() {
|
||||||
rootCmd.Version = buildinfo.Version
|
rootCmd.Version = buildinfo.Version
|
||||||
rootCmd.CompletionOptions.DisableDefaultCmd = true
|
rootCmd.CompletionOptions.DisableDefaultCmd = true
|
||||||
|
|
||||||
|
// 1. 为需要迁移的子命令动态绑定原先 rootCmd.PreRun 拥有的数据库迁移行为
|
||||||
|
migratePreRun := func(_ *cobra.Command, _ []string) {
|
||||||
|
migrator.Migrate()
|
||||||
|
migrator.MigrateClickHouse()
|
||||||
|
}
|
||||||
|
allCmd.PreRun = migratePreRun
|
||||||
|
apiCmd.PreRun = migratePreRun
|
||||||
|
workerCmd.PreRun = migratePreRun
|
||||||
|
schedulerCmd.PreRun = migratePreRun
|
||||||
|
|
||||||
|
// 2. 集中将这些命令注册为真正的子命令,以解决 Cobra 的 unknown command 校验限制
|
||||||
|
rootCmd.AddCommand(allCmd, apiCmd, workerCmd, schedulerCmd)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Execute 执行根命令
|
// Execute 执行根命令
|
||||||
|
|||||||
Reference in New Issue
Block a user