Files
sunhpc-go/cmd/init/system.go
2026-02-14 05:36:00 +08:00

50 lines
1.3 KiB
Go

package initcmd
import (
"fmt"
"sunhpc/internal/auth"
"sunhpc/internal/config"
"sunhpc/internal/system"
"github.com/spf13/cobra"
)
var (
dryRun bool // --dry-run -n: 仅模拟执行,不实际应用
verbose bool // --verbose -v: 启用详细日志输出
)
var systemCmd = &cobra.Command{
Use: "system [flags]",
Short: "根据配置文件初始化系统",
Long: `读取 /etc/sunhpc/sunhpc.yaml 中的系统配置项并应用到当前节点。
示例:
sunhpc init system # 应用所有配置项
sunhpc init system --dry-run # 仅模拟执行,不实际应用
sunhpc init system --verbose # 启用详细日志输出
`,
RunE: func(cmd *cobra.Command, args []string) error {
// 权限检查:必须以 root 或 sudo 运行
if err := auth.RequireRoot(); err != nil {
return err
}
// 加载主配置
cfg, err := config.LoadSunHPC()
if err != nil {
return fmt.Errorf("加载 sunhpc.yaml 失败: %v", err)
}
// 统一应用所有配置
return system.ApplyAll(cfg)
},
}
// init 初始化 systemCmd 的标志,添加长参数和段参数.
func init() {
// 注册长参数, 布尔参数
systemCmd.Flags().BoolVarP(&dryRun, "dry-run", "n", false, "仅模拟执行,不实际应用")
systemCmd.Flags().BoolVarP(&verbose, "verbose", "v", false, "启用详细日志输出")
}