89 lines
2.6 KiB
Go
89 lines
2.6 KiB
Go
// 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)
|
||
}
|
||
}
|