Files
2026-01-07 18:55:22 +08:00

291 lines
7.1 KiB
Go

package makecmd
import (
"fmt"
"path/filepath"
"time"
"github.com/spf13/cobra"
"yizhisec.com/hsv2/forge/internal/controller/maker"
"yizhisec.com/hsv2/forge/internal/opt"
"yizhisec.com/hsv2/forge/pkg/model"
)
func App() *cobra.Command {
_cmd := &cobra.Command{
Use: "app",
Short: "Make Apps(user, client, gateway, mie, nginx, etc...)",
}
_cmd.AddCommand(
appUser(),
appClient(),
appGateway(),
appMie(),
appOEM(),
appFront(),
appNginx(),
appHelper(),
)
return _cmd
}
func Apps() *cobra.Command {
var (
_pkg bool
_replica int
_vendor string
_version string
)
_cmd := &cobra.Command{
Use: "apps",
Short: "Make Apps(user, client, gateway, mie, nginx, etc...)",
PreRunE: func(cmd *cobra.Command, args []string) error {
if model.GetVendor(_vendor) == nil {
return fmt.Errorf("invalid vendor: %s", _vendor)
}
return nil
},
RunE: func(cmd *cobra.Command, args []string) error {
var (
err error
mk = maker.NewMaker(opt.Cfg.Make.Dir)
)
if err = mk.AppUser(cmd.Context(), _version, _replica); err != nil {
return err
}
if err = mk.AppClient(cmd.Context(), _version, _replica); err != nil {
return err
}
if err = mk.AppGateway(cmd.Context(), _version, _replica); err != nil {
return err
}
if err = mk.AppMie(cmd.Context(), _version, _replica); err != nil {
return err
}
if err = mk.AppFront(cmd.Context(), _version, _vendor, _replica); err != nil {
return err
}
if err = mk.AppNginx(cmd.Context(), _version, _vendor, _replica, false); err != nil {
return err
}
if err = mk.AppOEM(cmd.Context(), _version, _vendor, _replica); err != nil {
return err
}
if err = mk.AppHelper(cmd.Context(), _version, _vendor, _replica); err != nil {
return err
}
if _pkg {
var (
dir = filepath.Join(opt.Cfg.Make.Dir, "app")
_cmd = "7za a -pRrPt7Uo9WM1dkXOJmHps56T8BZY2qA4g -mhe=on apps.pkg *"
)
if err = mk.RunCommand(cmd.Context(), dir, _cmd); err != nil {
return err
}
}
return nil
},
}
_cmd.Flags().BoolVar(&_pkg, "pkg", false, "Make upgrade pkg")
_cmd.Flags().IntVar(&_replica, "replica-count", 2, "Replica count")
_cmd.Flags().StringVar(&_vendor, "vendor", "standard", "Vendor name")
_cmd.Flags().StringVar(&_version, "version", fmt.Sprintf("v2.2.0-%d", time.Now().Unix()), "Apps version, default: v2.2.0-<timestamp>")
return _cmd
}
func appUser() *cobra.Command {
var (
replica int
_version string
)
_cmd := &cobra.Command{
Use: "user",
Short: "Make User App",
RunE: func(cmd *cobra.Command, args []string) error {
mk := maker.NewMaker(opt.Cfg.Make.Dir)
return mk.AppUser(cmd.Context(), _version, replica)
},
}
_cmd.Flags().IntVar(&replica, "replica-count", 2, "Replica count")
_cmd.Flags().StringVar(&_version, "version", fmt.Sprintf("v2.2.0-%d", time.Now().Unix()), "App user version, default: v2.2.0-<timestamp>")
return _cmd
}
func appClient() *cobra.Command {
var (
replica int
_version string
)
_cmd := &cobra.Command{
Use: "client",
Short: "Make Client App",
RunE: func(cmd *cobra.Command, args []string) error {
mk := maker.NewMaker(opt.Cfg.Make.Dir)
return mk.AppClient(cmd.Context(), _version, replica)
},
}
_cmd.Flags().IntVar(&replica, "replica-count", 2, "Replica count")
_cmd.Flags().StringVar(&_version, "version", fmt.Sprintf("v2.2.0-%d", time.Now().Unix()), "App client version, default: v2.2.0-<timestamp>")
return _cmd
}
func appGateway() *cobra.Command {
var (
replica int
_version string
)
_cmd := &cobra.Command{
Use: "gateway",
Short: "Make Gateway App",
RunE: func(cmd *cobra.Command, args []string) error {
mk := maker.NewMaker(opt.Cfg.Make.Dir)
return mk.AppGateway(cmd.Context(), _version, replica)
},
}
_cmd.Flags().IntVar(&replica, "replica-count", 2, "Replica count")
_cmd.Flags().StringVar(&_version, "version", fmt.Sprintf("v2.2.0-%d", time.Now().Unix()), "App gateway version, default: v2.2.0-<timestamp>")
return _cmd
}
func appMie() *cobra.Command {
var (
replica int
_version string
)
_cmd := &cobra.Command{
Use: "mie",
Short: "Make Mie App",
RunE: func(cmd *cobra.Command, args []string) error {
mk := maker.NewMaker(opt.Cfg.Make.Dir)
return mk.AppMie(cmd.Context(), _version, replica)
},
}
_cmd.Flags().IntVar(&replica, "replica-count", 2, "Replica count")
_cmd.Flags().StringVar(&_version, "version", fmt.Sprintf("v2.2.0-%d", time.Now().Unix()), "App mie version, default: v2.2.0-<timestamp>")
return _cmd
}
func appOEM() *cobra.Command {
var (
replica int
vendor string
_version string
)
_cmd := &cobra.Command{
Use: "oem",
Short: "Make OEM App",
RunE: func(cmd *cobra.Command, args []string) error {
mk := maker.NewMaker(opt.Cfg.Make.Dir)
return mk.AppOEM(cmd.Context(), _version, vendor, replica)
},
}
_cmd.Flags().IntVar(&replica, "replica-count", 2, "Replica count")
_cmd.Flags().StringVar(&vendor, "vendor", "standard", "Vendor name")
_cmd.Flags().StringVar(&_version, "version", fmt.Sprintf("v2.2.0-%d", time.Now().Unix()), "App oem version, default: v2.2.0-<timestamp>")
return _cmd
}
func appFront() *cobra.Command {
var (
replica int
vendor string
_version string
)
_cmd := &cobra.Command{
Use: "front",
Short: "Make Front App",
RunE: func(cmd *cobra.Command, args []string) error {
mk := maker.NewMaker(opt.Cfg.Make.Dir)
return mk.AppFront(cmd.Context(), _version, vendor, replica)
},
}
_cmd.Flags().IntVar(&replica, "replica-count", 2, "Replica count")
_cmd.Flags().StringVar(&vendor, "vendor", "standard", "Vendor name")
_cmd.Flags().StringVar(&_version, "version", fmt.Sprintf("v2.2.0-%d", time.Now().Unix()), "App front version, default: v2.2.0-<timestamp>")
return _cmd
}
func appNginx() *cobra.Command {
var (
replica int
vendor string
_version string
_include_image bool
)
_cmd := &cobra.Command{
Use: "nginx",
Short: "Make Nginx App",
RunE: func(cmd *cobra.Command, args []string) error {
mk := maker.NewMaker(opt.Cfg.Make.Dir)
return mk.AppNginx(cmd.Context(), _version, vendor, replica, _include_image)
},
}
_cmd.Flags().IntVar(&replica, "replica-count", 2, "Replica count")
_cmd.Flags().StringVar(&vendor, "vendor", "standard", "Vendor name")
_cmd.Flags().StringVar(&_version, "version", fmt.Sprintf("v2.2.0-%d", time.Now().Unix()), "App nginx version, default: v2.2.0-<timestamp>")
_cmd.Flags().BoolVar(&_include_image, "include-image", false, "Include image")
return _cmd
}
func appHelper() *cobra.Command {
var (
_replica int
_vendor string
_version string
)
_cmd := &cobra.Command{
Use: "helper",
Short: "Make Helper App",
RunE: func(cmd *cobra.Command, args []string) error {
mk := maker.NewMaker(opt.Cfg.Make.Dir)
return mk.AppHelper(cmd.Context(), _version, _vendor, _replica)
},
}
_cmd.Flags().IntVar(&_replica, "replica-count", 2, "Replica count")
_cmd.Flags().StringVar(&_vendor, "vendor", "standard", "Vendor name")
_cmd.Flags().StringVar(&_version, "version", fmt.Sprintf("v2.2.0-%d", time.Now().Unix()), "App helper version, default: v2.2.0-<timestamp>")
return _cmd
}