50 lines
1.3 KiB
Go
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, "启用详细日志输出")
|
|
}
|