installerbuilder/cmd/cli/main.go

89 lines
2.6 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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)
}
}