mirror of
https://github.com/hanzoai/cd.git
synced 2026-10-30 14:56:45 +00:00
Renames local identifiers (argoClientSet/argoDB/argoappv1 etc.) and comments to our own voice. Also fixes real bugs the old wording was masking: update-manifests.sh's image detection still compared against quay.io/argoproj/argocd so it never matched our ghcr.io/hanzoai/cd image; the codegen scripts pointed GOPATH at the upstream import path; start-redis-with-password.sh grepped a manifest filename that no longer exists; generate-actions-list.sh linked generated docs at our own repo now instead of upstream's file layout.
132 lines
3.7 KiB
Go
132 lines
3.7 KiB
Go
package commands
|
|
|
|
import (
|
|
"context"
|
|
"log"
|
|
|
|
"github.com/spf13/cobra"
|
|
|
|
generator "github.com/hanzoai/cd/hack/gen-resources/generators"
|
|
"github.com/hanzoai/cd/util/db"
|
|
"github.com/hanzoai/cd/util/settings"
|
|
|
|
cmdutil "github.com/hanzoai/cd/cmd/util"
|
|
"github.com/hanzoai/cd/hack/gen-resources/util"
|
|
"github.com/hanzoai/cd/util/cli"
|
|
)
|
|
|
|
const (
|
|
cliName = "cd-generator"
|
|
)
|
|
|
|
func init() {
|
|
cobra.OnInitialize(initConfig)
|
|
}
|
|
|
|
func initConfig() {
|
|
cli.SetLogFormat(cmdutil.LogFormat)
|
|
cli.SetLogLevel(cmdutil.LogLevel)
|
|
}
|
|
|
|
// NewCommand returns a new instance of an cd command
|
|
func NewCommand() *cobra.Command {
|
|
var generateOpts util.GenerateOpts
|
|
|
|
command := &cobra.Command{
|
|
Use: cliName,
|
|
Short: "Generator for cd resources",
|
|
Run: func(c *cobra.Command, args []string) {
|
|
c.HelpFunc()(c, args)
|
|
},
|
|
DisableAutoGenTag: true,
|
|
}
|
|
|
|
command.AddCommand(NewGenerateCommand(&generateOpts))
|
|
command.AddCommand(NewCleanCommand(&generateOpts))
|
|
|
|
return command
|
|
}
|
|
|
|
func NewGenerateCommand(opts *util.GenerateOpts) *cobra.Command {
|
|
var file string
|
|
command := &cobra.Command{
|
|
Use: "generate [-f file]",
|
|
Short: "Generate entities",
|
|
Long: "Generate entities",
|
|
Run: func(_ *cobra.Command, _ []string) {
|
|
log.Printf("Retrieve configuration from %s", file)
|
|
err := util.Parse(opts, file)
|
|
if err != nil {
|
|
log.Fatalf("Failed to retrieve configuration, %v", err.Error())
|
|
}
|
|
appClientSet := util.ConnectToK8sAppClientSet()
|
|
clientSet := util.ConnectToK8sClientSet()
|
|
|
|
settingsMgr := settings.NewSettingsManager(context.TODO(), clientSet, opts.Namespace)
|
|
appDB := db.NewDB(opts.Namespace, settingsMgr, clientSet)
|
|
|
|
pg := generator.NewProjectGenerator(appClientSet)
|
|
ag := generator.NewApplicationGenerator(appClientSet, clientSet)
|
|
rg := generator.NewRepoGenerator(util.ConnectToK8sClientSet())
|
|
cg := generator.NewClusterGenerator(appDB, util.ConnectToK8sClientSet(), util.ConnectToK8sConfig())
|
|
|
|
err = pg.Generate(opts)
|
|
if err != nil {
|
|
log.Fatalf("Failed to generate projects, %v", err.Error())
|
|
}
|
|
err = rg.Generate(opts)
|
|
if err != nil {
|
|
log.Fatalf("Failed to generate repositories, %v", err.Error())
|
|
}
|
|
err = cg.Generate(opts)
|
|
if err != nil {
|
|
log.Fatalf("Failed to generate clusters, %v", err.Error())
|
|
}
|
|
err = ag.Generate(opts)
|
|
if err != nil {
|
|
log.Fatalf("Failed to generate applications, %v", err.Error())
|
|
}
|
|
},
|
|
}
|
|
command.Flags().StringVarP(&file, "file", "f", "", "")
|
|
return command
|
|
}
|
|
|
|
func NewCleanCommand(opts *util.GenerateOpts) *cobra.Command {
|
|
command := &cobra.Command{
|
|
Use: "clean",
|
|
Short: "Clean entities",
|
|
Long: "Clean entities",
|
|
Run: func(_ *cobra.Command, _ []string) {
|
|
appClientSet := util.ConnectToK8sAppClientSet()
|
|
clientSet := util.ConnectToK8sClientSet()
|
|
settingsMgr := settings.NewSettingsManager(context.TODO(), clientSet, opts.Namespace)
|
|
appDB := db.NewDB(opts.Namespace, settingsMgr, clientSet)
|
|
|
|
pg := generator.NewProjectGenerator(appClientSet)
|
|
ag := generator.NewApplicationGenerator(appClientSet, clientSet)
|
|
cg := generator.NewClusterGenerator(appDB, clientSet, util.ConnectToK8sConfig())
|
|
rg := generator.NewRepoGenerator(clientSet)
|
|
|
|
err := pg.Clean(opts)
|
|
if err != nil {
|
|
log.Fatalf("Failed to clean projects, %v", err.Error())
|
|
}
|
|
err = ag.Clean(opts)
|
|
if err != nil {
|
|
log.Fatalf("Failed to clean applications, %v", err.Error())
|
|
}
|
|
err = cg.Clean(opts)
|
|
if err != nil {
|
|
log.Fatalf("Failed to clean clusters, %v", err.Error())
|
|
}
|
|
err = rg.Clean(opts)
|
|
if err != nil {
|
|
log.Fatalf("Failed to clean repositores, %v", err.Error())
|
|
}
|
|
},
|
|
}
|
|
command.PersistentFlags().StringVar(&opts.Namespace, "kube-namespace", "cd", "Name of the namespace where cd is running [$KUBE_NAMESPACE]")
|
|
return command
|
|
}
|