// Package main 是Installer Builder的命令行入口点 package main import ( "fmt" "os" "git.kingecg.top/kingecg/installerbuilder/internal/version" "github.com/spf13/cobra" ) var rootCmd = &cobra.Command{ Use: "installer-builder", Short: "Installer Builder - 一个跨平台的安装包构建工具", Long: `Installer Builder 是一个强大的跨平台安装包构建工具。 它支持Windows和Linux平台,可以生成MSI、DEB、RPM和压缩包格式的安装包。 通过简单的配置文件,您可以定义安装包的内容、安装脚本和依赖项。`, Version: version.Version, Run: func(cmd *cobra.Command, args []string) { // 如果没有子命令,显示帮助信息 cmd.Help() }, } var versionCmd = &cobra.Command{ Use: "version", Short: "显示版本信息", Run: func(cmd *cobra.Command, args []string) { fmt.Println(version.Info()) }, } var buildCmd = &cobra.Command{ Use: "build", Short: "构建安装包", Long: `根据配置文件构建安装包。`, Run: func(cmd *cobra.Command, args []string) { fmt.Println("构建功能尚未实现") }, } var validateCmd = &cobra.Command{ Use: "validate", Short: "验证配置文件", Long: `验证配置文件的格式和内容是否正确。`, Run: func(cmd *cobra.Command, args []string) { fmt.Println("验证功能尚未实现") }, } var initCmd = &cobra.Command{ Use: "init", Short: "初始化配置文件模板", Long: `创建一个基本的配置文件模板。`, Run: func(cmd *cobra.Command, args []string) { fmt.Println("初始化功能尚未实现") }, } func init() { // 添加子命令 rootCmd.AddCommand(versionCmd) rootCmd.AddCommand(buildCmd) rootCmd.AddCommand(validateCmd) rootCmd.AddCommand(initCmd) // 添加全局标志 rootCmd.PersistentFlags().BoolP("verbose", "v", false, "启用详细日志输出") rootCmd.PersistentFlags().BoolP("quiet", "q", false, "只显示错误信息") rootCmd.PersistentFlags().StringP("config", "c", "", "指定配置文件路径") // 添加构建命令的标志 buildCmd.Flags().StringP("target", "t", "", "只构建指定平台的安装包") buildCmd.Flags().StringP("arch", "a", "", "只构建指定架构的安装包") buildCmd.Flags().StringP("output", "o", "", "指定输出目录") buildCmd.Flags().Bool("clean", false, "构建前清理输出目录") buildCmd.Flags().IntP("parallel", "p", 0, "并行构建的数量") // 添加验证命令的标志 validateCmd.Flags().Bool("strict", false, "启用严格验证模式") } func main() { if err := rootCmd.Execute(); err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } }