Files
zeekay bcbea6fbf4 hack: drop Argo wording, fix stale upstream-fork paths it left behind
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.
2026-09-05 01:11:22 -07:00

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
}