ok-1
This commit is contained in:
73
cmd/root.go
Normal file
73
cmd/root.go
Normal file
@@ -0,0 +1,73 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
initcmd "sunhpc/cmd/init"
|
||||
"sunhpc/cmd/soft"
|
||||
"sunhpc/internal/log"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
|
||||
var (
|
||||
cfgFile string
|
||||
verbose bool
|
||||
noColor bool
|
||||
)
|
||||
|
||||
var rootCmd = &cobra.Command{
|
||||
Use: "sunhpc",
|
||||
Short: "SunHPC - HPC集群一体化运维工具",
|
||||
PersistentPreRun: func(cmd *cobra.Command, args []string) {
|
||||
// 初始化日志
|
||||
log.Init(verbose)
|
||||
|
||||
// 是否禁用颜色
|
||||
if noColor {
|
||||
log.EnableColor(false)
|
||||
}
|
||||
|
||||
log.Debugf("命令: %s", cmd.Name())
|
||||
log.Debugf("详细模式: %v", verbose)
|
||||
},
|
||||
PersistentPostRun: func(cmd *cobra.Command, args []string) {
|
||||
// 同步日志
|
||||
log.Sync()
|
||||
log.Close()
|
||||
},
|
||||
}
|
||||
|
||||
func Execute() error {
|
||||
return rootCmd.Execute()
|
||||
}
|
||||
|
||||
func init() {
|
||||
cobra.OnInitialize(initConfig)
|
||||
|
||||
rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "配置文件路径 (默认为 /etc/sunhpc/sunhpc.yaml)")
|
||||
rootCmd.PersistentFlags().BoolVarP(&verbose, "verbose", "v", false, "启用详细日志输出")
|
||||
rootCmd.PersistentFlags().BoolVar(&noColor, "no-color", false, "禁用彩色输出")
|
||||
|
||||
// 注册一级子命令
|
||||
rootCmd.AddCommand(initcmd.Cmd)
|
||||
rootCmd.AddCommand(soft.Cmd)
|
||||
rootCmd.AddCommand(nodeCmd)
|
||||
}
|
||||
|
||||
func initConfig() {
|
||||
if cfgFile != "" {
|
||||
viper.SetConfigFile(cfgFile)
|
||||
} else {
|
||||
viper.AddConfigPath("/etc/sunhpc")
|
||||
viper.SetConfigType("yaml")
|
||||
viper.SetConfigName("sunhpc")
|
||||
}
|
||||
|
||||
viper.AutomaticEnv()
|
||||
|
||||
if err := viper.ReadInConfig(); err == nil {
|
||||
log.Infof("使用配置文件: %s", viper.ConfigFileUsed())
|
||||
} else {
|
||||
log.Debugf("未找到配置文件: %v", err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user