diff --git a/.golangci.yaml b/.golangci.yaml index 5aac2153f3..84377fb56e 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -78,7 +78,7 @@ issues: - EXC0014 - EXC0015 exclude-dirs: - - "src/cmd/tools/helm" # Exclude linting code copied from Helm. + - "src/cmd/helm" # Exclude linting code copied from Helm. - "src/internal/packager" - "src/pkg/packager" # TODO(mkcp): Delete packager rules once refactor is complete - "src/internal/packager2" # TODO(mkcp): Delete packager rules once refactor is complete diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 013fa21c9a..81c1c9e597 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -27,9 +27,9 @@ builds: - -X helm.sh/helm/v3/pkg/chartutil.k8sVersionMinor={{.Env.K8S_MODULES_MINOR_VER}} - -X github.com/derailed/k9s/cmd.version={{.Env.K9S_VERSION}} - -X github.com/google/go-containerregistry/cmd/crane/cmd.Version={{.Env.CRANE_VERSION}} - - -X github.com/zarf-dev/zarf/src/cmd/tools.syftVersion={{.Env.SYFT_VERSION}} - - -X github.com/zarf-dev/zarf/src/cmd/tools.archiverVersion={{.Env.ARCHIVER_VERSION}} - - -X github.com/zarf-dev/zarf/src/cmd/tools.helmVersion={{.Env.HELM_VERSION}} + - -X github.com/zarf-dev/zarf/src/cmd.syftVersion={{.Env.SYFT_VERSION}} + - -X github.com/zarf-dev/zarf/src/cmd.archiverVersion={{.Env.ARCHIVER_VERSION}} + - -X github.com/zarf-dev/zarf/src/cmd.helmVersion={{.Env.HELM_VERSION}} goarch: - amd64 - arm64 diff --git a/Makefile b/Makefile index e7b460b829..305b6ab2c6 100644 --- a/Makefile +++ b/Makefile @@ -48,9 +48,9 @@ BUILD_ARGS += -X helm.sh/helm/v3/pkg/chartutil.k8sVersionMinor=$(K8S_MODULES_MIN BUILD_ARGS += -X k8s.io/component-base/version.gitVersion=v$(K8S_MODULES_MAJOR_VER).$(K8S_MODULES_MINOR_VER).$(K8S_MODULES_PATCH_VER) BUILD_ARGS += -X github.com/derailed/k9s/cmd.version=$(K9S_VERSION) BUILD_ARGS += -X github.com/google/go-containerregistry/cmd/crane/cmd.Version=$(CRANE_VERSION) -BUILD_ARGS += -X github.com/zarf-dev/zarf/src/cmd/tools.syftVersion=$(SYFT_VERSION) -BUILD_ARGS += -X github.com/zarf-dev/zarf/src/cmd/tools.archiverVersion=$(ARCHIVER_VERSION) -BUILD_ARGS += -X github.com/zarf-dev/zarf/src/cmd/tools.helmVersion=$(HELM_VERSION) +BUILD_ARGS += -X github.com/zarf-dev/zarf/src/cmd.syftVersion=$(SYFT_VERSION) +BUILD_ARGS += -X github.com/zarf-dev/zarf/src/cmd.archiverVersion=$(ARCHIVER_VERSION) +BUILD_ARGS += -X github.com/zarf-dev/zarf/src/cmd.helmVersion=$(HELM_VERSION) GIT_SHA := $(if $(shell git rev-parse HEAD),$(shell git rev-parse HEAD),"") BUILD_DATE := $(shell date -u +'%Y-%m-%dT%H:%M:%SZ') diff --git a/site/src/content/docs/commands/zarf.md b/site/src/content/docs/commands/zarf.md index 429ad1a047..efb8a53d41 100644 --- a/site/src/content/docs/commands/zarf.md +++ b/site/src/content/docs/commands/zarf.md @@ -43,6 +43,7 @@ zarf COMMAND [flags] * [zarf dev](/commands/zarf_dev/) - Commands useful for developing packages * [zarf init](/commands/zarf_init/) - Prepares a k8s cluster for the deployment of Zarf packages * [zarf package](/commands/zarf_package/) - Zarf package commands for creating, deploying, and inspecting packages +* [zarf say](/commands/zarf_say/) - Print Zarf logo * [zarf tools](/commands/zarf_tools/) - Collection of additional tools to make airgap easier * [zarf version](/commands/zarf_version/) - Shows the version of the running Zarf binary diff --git a/site/src/content/docs/commands/zarf_say.md b/site/src/content/docs/commands/zarf_say.md new file mode 100644 index 0000000000..7dc9719d4f --- /dev/null +++ b/site/src/content/docs/commands/zarf_say.md @@ -0,0 +1,45 @@ +--- +title: zarf say +description: Zarf CLI command reference for zarf say. +tableOfContents: false +--- + + + +## zarf say + +Print Zarf logo + +### Synopsis + +Print out the adorable Zarf logo + +``` +zarf say [flags] +``` + +### Options + +``` + -h, --help help for say +``` + +### Options inherited from parent commands + +``` + -a, --architecture string Architecture for OCI images and Zarf packages + --insecure-skip-tls-verify Skip checking server's certificate for validity. This flag should only be used if you have a specific reason and accept the reduced security posture. + --log-format string [beta] Select a logging format. Defaults to 'console'. Valid options are: 'console', 'json', 'dev', 'legacy'. The legacy option will be removed in a coming release (default "console") + -l, --log-level string Log level when running Zarf. Valid options are: warn, info, debug, trace (default "info") + --no-color Disable colors in output + --no-log-file Disable log file creation + --no-progress Disable fancy UI progress bars, spinners, logos, etc + --plain-http Force the connections over HTTP instead of HTTPS. This flag should only be used if you have a specific reason and accept the reduced security posture. + --tmpdir string Specify the temporary directory to use for intermediate files + --zarf-cache string Specify the location of the Zarf cache directory (default "~/.zarf-cache") +``` + +### SEE ALSO + +* [zarf](/commands/zarf/) - DevSecOps for Airgap + diff --git a/src/cmd/tools/archiver.go b/src/cmd/archiver.go similarity index 64% rename from src/cmd/tools/archiver.go rename to src/cmd/archiver.go index f7aa1e6e4f..148415aa9c 100644 --- a/src/cmd/tools/archiver.go +++ b/src/cmd/archiver.go @@ -1,8 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: 2021-Present The Zarf Authors -// Package tools contains the CLI commands for Zarf. -package tools +// Package cmd contains the CLI commands for Zarf. +package cmd import ( "fmt" @@ -16,11 +16,10 @@ import ( "github.com/zarf-dev/zarf/src/pkg/layout" ) -// ldflags github.com/zarf-dev/zarf/src/cmd/tools.archiverVersion=x.x.x +// ldflags github.com/zarf-dev/zarf/src/cmd.archiverVersion=x.x.x var archiverVersion string -// NewArchiverCommand creates the `tools archiver` sub-command and its nested children. -func NewArchiverCommand() *cobra.Command { +func newArchiverCommand() *cobra.Command { cmd := &cobra.Command{ Use: "archiver", Aliases: []string{"a"}, @@ -28,33 +27,30 @@ func NewArchiverCommand() *cobra.Command { Version: archiverVersion, } - cmd.AddCommand(NewArchiverCompressCommand()) - cmd.AddCommand(NewArchiverDecompressCommand()) - cmd.AddCommand(newVersionCmd("mholt/archiver", archiverVersion)) + cmd.AddCommand(newArchiverCompressCommand()) + cmd.AddCommand(newArchiverDecompressCommand()) + cmd.AddCommand(newToolsVersionCmd("mholt/archiver", archiverVersion)) return cmd } -// ArchiverCompressOptions holds the command-line options for 'tools archiver compress' sub-command. -type ArchiverCompressOptions struct{} +type archiverCompressOptions struct{} -// NewArchiverCompressCommand creates the `tools archiver compress` sub-command. -func NewArchiverCompressCommand() *cobra.Command { - o := ArchiverCompressOptions{} +func newArchiverCompressCommand() *cobra.Command { + o := archiverCompressOptions{} cmd := &cobra.Command{ Use: "compress SOURCES ARCHIVE", Aliases: []string{"c"}, Short: lang.CmdToolsArchiverCompressShort, Args: cobra.MinimumNArgs(2), - RunE: o.Run, + RunE: o.run, } return cmd } -// Run performs the execution of 'tools archiver compress' sub-command. -func (o *ArchiverCompressOptions) Run(_ *cobra.Command, args []string) error { +func (o *archiverCompressOptions) run(_ *cobra.Command, args []string) error { sourceFiles, destinationArchive := args[:len(args)-1], args[len(args)-1] err := archiver.Archive(sourceFiles, destinationArchive) if err != nil { @@ -63,21 +59,19 @@ func (o *ArchiverCompressOptions) Run(_ *cobra.Command, args []string) error { return err } -// ArchiverDecompressOptions holds the command-line options for 'tools archiver decompress' sub-command. -type ArchiverDecompressOptions struct { +type archiverDecompressOptions struct { unarchiveAll bool } -// NewArchiverDecompressCommand creates the `tools archiver decompress` sub-command. -func NewArchiverDecompressCommand() *cobra.Command { - o := ArchiverDecompressOptions{} +func newArchiverDecompressCommand() *cobra.Command { + o := archiverDecompressOptions{} cmd := &cobra.Command{ Use: "decompress ARCHIVE DESTINATION", Aliases: []string{"d"}, Short: lang.CmdToolsArchiverDecompressShort, Args: cobra.ExactArgs(2), - RunE: o.Run, + RunE: o.run, } cmd.Flags().BoolVar(&o.unarchiveAll, "decompress-all", false, "Decompress all tarballs in the archive") @@ -88,8 +82,7 @@ func NewArchiverDecompressCommand() *cobra.Command { return cmd } -// Run performs the execution of 'tools archiver decompress' sub-command. -func (o *ArchiverDecompressOptions) Run(_ *cobra.Command, args []string) error { +func (o *archiverDecompressOptions) run(_ *cobra.Command, args []string) error { sourceArchive, destinationPath := args[0], args[1] err := archiver.Unarchive(sourceArchive, destinationPath) if err != nil { diff --git a/src/cmd/connect.go b/src/cmd/connect.go index b39c22c90f..57ca3d0479 100644 --- a/src/cmd/connect.go +++ b/src/cmd/connect.go @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: 2021-Present The Zarf Authors -// Package cmd contains the CLI commands for Zarf contains the CLI commands for Zarf. +// Package cmd contains the CLI commands for Zarf. package cmd import ( @@ -16,22 +16,20 @@ import ( "github.com/zarf-dev/zarf/src/pkg/utils/exec" ) -// ConnectOptions holds the command-line options for 'connect' sub-command. -type ConnectOptions struct { +type connectOptions struct { cliOnly bool zt cluster.TunnelInfo } -// NewConnectCommand creates the `connect` sub-command and its nested children. -func NewConnectCommand() *cobra.Command { - o := &ConnectOptions{} +func newConnectCommand() *cobra.Command { + o := &connectOptions{} cmd := &cobra.Command{ Use: "connect { REGISTRY | GIT | connect-name }", Aliases: []string{"c"}, Short: lang.CmdConnectShort, Long: lang.CmdConnectLong, - RunE: o.Run, + RunE: o.run, } cmd.Flags().StringVar(&o.zt.ResourceName, "name", "", lang.CmdConnectFlagName) @@ -42,13 +40,12 @@ func NewConnectCommand() *cobra.Command { cmd.Flags().BoolVar(&o.cliOnly, "cli-only", false, lang.CmdConnectFlagCliOnly) // TODO(soltysh): consider splitting sub-commands into separate files - cmd.AddCommand(NewConnectListCommand()) + cmd.AddCommand(newConnectListCommand()) return cmd } -// Run performs the execution of 'connect' sub command. -func (o *ConnectOptions) Run(cmd *cobra.Command, args []string) error { +func (o *connectOptions) run(cmd *cobra.Command, args []string) error { ctx := cmd.Context() l := logger.From(ctx) target := "" @@ -106,23 +103,22 @@ func (o *ConnectOptions) Run(cmd *cobra.Command, args []string) error { } } -// ConnectListOptions holds the command-line options for 'connect list' sub-command. -type ConnectListOptions struct{} +// connectListOptions holds the command-line options for 'connect list' sub-command. +type connectListOptions struct{} -// NewConnectListCommand creates the `connect list` sub-command. -func NewConnectListCommand() *cobra.Command { - o := &ConnectListOptions{} +// newConnectListCommand creates the `connect list` sub-command. +func newConnectListCommand() *cobra.Command { + o := &connectListOptions{} cmd := &cobra.Command{ Use: "list", Aliases: []string{"l"}, Short: lang.CmdConnectListShort, - RunE: o.Run, + RunE: o.run, } return cmd } -// Run performs the execution of 'connect list' sub-command. -func (o *ConnectListOptions) Run(cmd *cobra.Command, _ []string) error { +func (o *connectListOptions) run(cmd *cobra.Command, _ []string) error { c, err := cluster.NewCluster() if err != nil { return err diff --git a/src/cmd/tools/crane.go b/src/cmd/crane.go similarity index 87% rename from src/cmd/tools/crane.go rename to src/cmd/crane.go index 9c02fd26a0..2c91aa8b9c 100644 --- a/src/cmd/tools/crane.go +++ b/src/cmd/crane.go @@ -1,8 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: 2021-Present The Zarf Authors -// Package tools contains the CLI commands for Zarf. -package tools +// Package cmd contains the CLI commands for Zarf. +package cmd import ( "context" @@ -26,17 +26,15 @@ import ( "github.com/zarf-dev/zarf/src/types" ) -// RegistryOptions holds the command-line options for 'tools registry' sub-command. -type RegistryOptions struct { +type registryOptions struct { verbose bool insecure bool ndlayers bool platform string } -// NewRegistryCommand creates the `tools registry` sub-command and its nested children. -func NewRegistryCommand() *cobra.Command { - o := &RegistryOptions{ +func newRegistryCommand() *cobra.Command { + o := ®istryOptions{ verbose: false, insecure: false, ndlayers: false, @@ -82,10 +80,10 @@ func NewRegistryCommand() *cobra.Command { }, } - cmd.AddCommand(NewRegistryPruneCommand()) - cmd.AddCommand(NewRegistryLoginCommand()) - cmd.AddCommand(NewRegistryCopyCommand()) - cmd.AddCommand(NewRegistryCatalogCommand()) + cmd.AddCommand(newRegistryPruneCommand()) + cmd.AddCommand(newRegistryLoginCommand()) + cmd.AddCommand(newRegistryCopyCommand()) + cmd.AddCommand(newRegistryCatalogCommand()) // TODO(soltysh): consider splitting craneOptions to be per command cmd.AddCommand(zarfCraneInternalWrapper(craneCmd.NewCmdList, &craneOptions, lang.CmdToolsRegistryListExample, 0)) @@ -104,30 +102,26 @@ func NewRegistryCommand() *cobra.Command { return cmd } -// NewRegistryLoginCommand creates the `tools registry login` sub-command. -func NewRegistryLoginCommand() *cobra.Command { +func newRegistryLoginCommand() *cobra.Command { cmd := craneCmd.NewCmdAuthLogin() cmd.Example = "" return cmd } -// NewRegistryCopyCommand creates the `tools registry copy` sub-command. -func NewRegistryCopyCommand() *cobra.Command { +func newRegistryCopyCommand() *cobra.Command { // No package information is available so do not pass in a list of architectures craneOptions := []crane.Option{} cmd := craneCmd.NewCmdCopy(&craneOptions) return cmd } -// RegistryCatalogOptions holds the command-line options for 'tools registry catalog' sub-command. -type RegistryCatalogOptions struct { +type registryCatalogOptions struct { craneOptions []crane.Option originalRunFn func(cmd *cobra.Command, args []string) error } -// NewRegistryCatalogCommand creates the `tools registry catalog` sub-command. -func NewRegistryCatalogCommand() *cobra.Command { - o := RegistryCatalogOptions{ +func newRegistryCatalogCommand() *cobra.Command { + o := registryCatalogOptions{ // No package information is available so do not pass in a list of architectures craneOptions: []crane.Option{}, } @@ -137,13 +131,12 @@ func NewRegistryCatalogCommand() *cobra.Command { cmd.Args = nil o.originalRunFn = cmd.RunE - cmd.RunE = o.Run + cmd.RunE = o.run return cmd } -// Run performs the execution of 'tools registry catalog' sub-command. -func (o *RegistryCatalogOptions) Run(cmd *cobra.Command, args []string) error { +func (o *registryCatalogOptions) run(cmd *cobra.Command, args []string) error { ctx := cmd.Context() l := logger.From(cmd.Context()) if len(args) > 0 { @@ -179,18 +172,16 @@ func (o *RegistryCatalogOptions) Run(cmd *cobra.Command, args []string) error { return o.originalRunFn(cmd, []string{registryEndpoint}) } -// RegistryPruneOptions holds the command-line options for 'tools registry prune' sub-command. -type RegistryPruneOptions struct{} +type registryPruneOptions struct{} -// NewRegistryPruneCommand creates the `tools registry prune` sub-command. -func NewRegistryPruneCommand() *cobra.Command { - o := RegistryPruneOptions{} +func newRegistryPruneCommand() *cobra.Command { + o := registryPruneOptions{} cmd := &cobra.Command{ Use: "prune", Aliases: []string{"p"}, Short: lang.CmdToolsRegistryPruneShort, - RunE: o.Run, + RunE: o.run, } // Always require confirm flag (no viper) @@ -199,8 +190,7 @@ func NewRegistryPruneCommand() *cobra.Command { return cmd } -// Run performs the execution of 'tools registry prune' sub-command. -func (o *RegistryPruneOptions) Run(cmd *cobra.Command, _ []string) error { +func (o *registryPruneOptions) run(cmd *cobra.Command, _ []string) error { // Try to connect to a Zarf initialized cluster c, err := cluster.NewCluster() if err != nil { diff --git a/src/cmd/destroy.go b/src/cmd/destroy.go index 0d0a72996c..0df579e9b3 100644 --- a/src/cmd/destroy.go +++ b/src/cmd/destroy.go @@ -23,21 +23,19 @@ import ( "github.com/spf13/cobra" ) -// DestroyOptions holds the command-line options for 'destroy' sub-command. -type DestroyOptions struct { +type destroyOptions struct { confirmDestroy bool removeComponents bool } -// NewDestroyCommand creates the `destroy` sub-command. -func NewDestroyCommand() *cobra.Command { - o := DestroyOptions{} +func newDestroyCommand() *cobra.Command { + o := destroyOptions{} cmd := &cobra.Command{ Use: "destroy --confirm", Aliases: []string{"d"}, Short: lang.CmdDestroyShort, Long: lang.CmdDestroyLong, - RunE: o.Run, + RunE: o.run, } // Still going to require a flag for destroy confirm, no viper oopsies here @@ -48,8 +46,7 @@ func NewDestroyCommand() *cobra.Command { return cmd } -// Run performs the execution of 'destroy' sub-command. -func (o *DestroyOptions) Run(cmd *cobra.Command, _ []string) error { +func (o *destroyOptions) run(cmd *cobra.Command, _ []string) error { ctx := cmd.Context() l := logger.From(ctx) diff --git a/src/cmd/dev.go b/src/cmd/dev.go index 63039f7f9f..485e4b64b7 100644 --- a/src/cmd/dev.go +++ b/src/cmd/dev.go @@ -19,7 +19,6 @@ import ( "github.com/sergi/go-diff/diffmatchpatch" "github.com/spf13/cobra" "github.com/spf13/viper" - "github.com/zarf-dev/zarf/src/cmd/common" "github.com/zarf-dev/zarf/src/config" "github.com/zarf-dev/zarf/src/config/lang" "github.com/zarf-dev/zarf/src/pkg/lint" @@ -33,46 +32,43 @@ import ( var defaultRegistry = fmt.Sprintf("%s:%d", helpers.IPV4Localhost, types.ZarfInClusterContainerRegistryNodePort) -// NewDevCommand creates the `dev` sub-command and its nested children. -func NewDevCommand() *cobra.Command { +func newDevCommand() *cobra.Command { cmd := &cobra.Command{ Use: "dev", Aliases: []string{"prepare", "prep"}, Short: lang.CmdDevShort, } - v := common.GetViper() + v := getViper() - cmd.AddCommand(NewDevDeployCommand(v)) - cmd.AddCommand(NewDevGenerateCommand()) - cmd.AddCommand(NewDevPatchGitCommand()) - cmd.AddCommand(NewDevSha256SumCommand()) - cmd.AddCommand(NewDevFindImagesCommand(v)) - cmd.AddCommand(NewDevGenerateConfigCommand()) - cmd.AddCommand(NewDevLintCommand(v)) + cmd.AddCommand(newDevDeployCommand(v)) + cmd.AddCommand(newDevGenerateCommand()) + cmd.AddCommand(newDevPatchGitCommand()) + cmd.AddCommand(newDevSha256SumCommand()) + cmd.AddCommand(newDevFindImagesCommand(v)) + cmd.AddCommand(newDevGenerateConfigCommand()) + cmd.AddCommand(newDevLintCommand(v)) return cmd } -// DevDeployOptions holds the command-line options for 'dev deploy' sub-command. -type DevDeployOptions struct{} +type devDeployOptions struct{} -// NewDevDeployCommand creates the `dev deploy` sub-command. -func NewDevDeployCommand(v *viper.Viper) *cobra.Command { - o := &DevDeployOptions{} +func newDevDeployCommand(v *viper.Viper) *cobra.Command { + o := &devDeployOptions{} cmd := &cobra.Command{ Use: "deploy", Args: cobra.MaximumNArgs(1), Short: lang.CmdDevDeployShort, Long: lang.CmdDevDeployLong, - RunE: o.Run, + RunE: o.run, } // TODO(soltysh): get rid of pkgConfig global - cmd.Flags().StringToStringVar(&pkgConfig.CreateOpts.SetVariables, "create-set", v.GetStringMapString(common.VPkgCreateSet), lang.CmdPackageCreateFlagSet) - cmd.Flags().StringToStringVar(&pkgConfig.CreateOpts.RegistryOverrides, "registry-override", v.GetStringMapString(common.VPkgCreateRegistryOverride), lang.CmdPackageCreateFlagRegistryOverride) - cmd.Flags().StringVarP(&pkgConfig.CreateOpts.Flavor, "flavor", "f", v.GetString(common.VPkgCreateFlavor), lang.CmdPackageCreateFlagFlavor) + cmd.Flags().StringToStringVar(&pkgConfig.CreateOpts.SetVariables, "create-set", v.GetStringMapString(VPkgCreateSet), lang.CmdPackageCreateFlagSet) + cmd.Flags().StringToStringVar(&pkgConfig.CreateOpts.RegistryOverrides, "registry-override", v.GetStringMapString(VPkgCreateRegistryOverride), lang.CmdPackageCreateFlagRegistryOverride) + cmd.Flags().StringVarP(&pkgConfig.CreateOpts.Flavor, "flavor", "f", v.GetString(VPkgCreateFlavor), lang.CmdPackageCreateFlagFlavor) cmd.Flags().StringVar(&pkgConfig.DeployOpts.RegistryURL, "registry-url", defaultRegistry, lang.CmdDevFlagRegistry) err := cmd.Flags().MarkHidden("registry-url") @@ -80,31 +76,30 @@ func NewDevDeployCommand(v *viper.Viper) *cobra.Command { logger.Default().Debug("unable to mark dev-deploy flag as hidden", "error", err) } - cmd.Flags().StringToStringVar(&pkgConfig.PkgOpts.SetVariables, "deploy-set", v.GetStringMapString(common.VPkgDeploySet), lang.CmdPackageDeployFlagSet) + cmd.Flags().StringToStringVar(&pkgConfig.PkgOpts.SetVariables, "deploy-set", v.GetStringMapString(VPkgDeploySet), lang.CmdPackageDeployFlagSet) // Always require adopt-existing-resources flag (no viper) cmd.Flags().BoolVar(&pkgConfig.DeployOpts.AdoptExistingResources, "adopt-existing-resources", false, lang.CmdPackageDeployFlagAdoptExistingResources) - cmd.Flags().DurationVar(&pkgConfig.DeployOpts.Timeout, "timeout", v.GetDuration(common.VPkgDeployTimeout), lang.CmdPackageDeployFlagTimeout) + cmd.Flags().DurationVar(&pkgConfig.DeployOpts.Timeout, "timeout", v.GetDuration(VPkgDeployTimeout), lang.CmdPackageDeployFlagTimeout) - cmd.Flags().IntVar(&pkgConfig.PkgOpts.Retries, "retries", v.GetInt(common.VPkgRetries), lang.CmdPackageFlagRetries) - cmd.Flags().StringVar(&pkgConfig.PkgOpts.OptionalComponents, "components", v.GetString(common.VPkgDeployComponents), lang.CmdPackageDeployFlagComponents) + cmd.Flags().IntVar(&pkgConfig.PkgOpts.Retries, "retries", v.GetInt(VPkgRetries), lang.CmdPackageFlagRetries) + cmd.Flags().StringVar(&pkgConfig.PkgOpts.OptionalComponents, "components", v.GetString(VPkgDeployComponents), lang.CmdPackageDeployFlagComponents) - cmd.Flags().BoolVar(&pkgConfig.CreateOpts.NoYOLO, "no-yolo", v.GetBool(common.VDevDeployNoYolo), lang.CmdDevDeployFlagNoYolo) + cmd.Flags().BoolVar(&pkgConfig.CreateOpts.NoYOLO, "no-yolo", v.GetBool(VDevDeployNoYolo), lang.CmdDevDeployFlagNoYolo) return cmd } -// Run performs the execution of 'dev deploy' sub-command. -func (o *DevDeployOptions) Run(cmd *cobra.Command, args []string) error { +func (o *devDeployOptions) run(cmd *cobra.Command, args []string) error { ctx := cmd.Context() pkgConfig.CreateOpts.BaseDir = setBaseDirectory(args) - v := common.GetViper() + v := getViper() pkgConfig.CreateOpts.SetVariables = helpers.TransformAndMergeMap( - v.GetStringMapString(common.VPkgCreateSet), pkgConfig.CreateOpts.SetVariables, strings.ToUpper) + v.GetStringMapString(VPkgCreateSet), pkgConfig.CreateOpts.SetVariables, strings.ToUpper) pkgConfig.PkgOpts.SetVariables = helpers.TransformAndMergeMap( - v.GetStringMapString(common.VPkgDeploySet), pkgConfig.PkgOpts.SetVariables, strings.ToUpper) + v.GetStringMapString(VPkgDeploySet), pkgConfig.PkgOpts.SetVariables, strings.ToUpper) pkgClient, err := packager.New(&pkgConfig, packager.WithContext(ctx)) if err != nil { @@ -115,7 +110,7 @@ func (o *DevDeployOptions) Run(cmd *cobra.Command, args []string) error { err = pkgClient.DevDeploy(ctx) var lintErr *lint.LintError if errors.As(err, &lintErr) { - common.PrintFindings(ctx, lintErr) + PrintFindings(ctx, lintErr) } if err != nil { return fmt.Errorf("failed to dev deploy: %w", err) @@ -124,12 +119,10 @@ func (o *DevDeployOptions) Run(cmd *cobra.Command, args []string) error { return nil } -// DevGenerateOptions holds the command-line options for 'dev generate' sub-command. -type DevGenerateOptions struct{} +type devGenerateOptions struct{} -// NewDevGenerateCommand creates the `dev generate` sub-command. -func NewDevGenerateCommand() *cobra.Command { - o := &DevGenerateOptions{} +func newDevGenerateCommand() *cobra.Command { + o := &devGenerateOptions{} cmd := &cobra.Command{ Use: "generate NAME", @@ -137,7 +130,7 @@ func NewDevGenerateCommand() *cobra.Command { Args: cobra.ExactArgs(1), Short: lang.CmdDevGenerateShort, Example: lang.CmdDevGenerateExample, - RunE: o.Run, + RunE: o.run, } cmd.Flags().StringVar(&pkgConfig.GenerateOpts.URL, "url", "", "URL to the source git repository") @@ -152,8 +145,7 @@ func NewDevGenerateCommand() *cobra.Command { return cmd } -// Run performs the execution of 'dev generate' sub-command. -func (o *DevGenerateOptions) Run(cmd *cobra.Command, args []string) error { +func (o *devGenerateOptions) run(cmd *cobra.Command, args []string) error { pkgConfig.GenerateOpts.Name = args[0] pkgConfig.CreateOpts.BaseDir = "." @@ -172,19 +164,17 @@ func (o *DevGenerateOptions) Run(cmd *cobra.Command, args []string) error { return nil } -// DevPatchGitOptions holds the command-line options for 'dev patch-git' sub-command. -type DevPatchGitOptions struct{} +type devPatchGitOptions struct{} -// NewDevPatchGitCommand creates the `dev patch-git` sub-command. -func NewDevPatchGitCommand() *cobra.Command { - o := &DevDeployOptions{} +func newDevPatchGitCommand() *cobra.Command { + o := &devPatchGitOptions{} cmd := &cobra.Command{ Use: "patch-git HOST FILE", Aliases: []string{"p"}, Short: lang.CmdDevPatchGitShort, Args: cobra.ExactArgs(2), - RunE: o.Run, + RunE: o.run, } // TODO(soltysh): get rid of pkgConfig global @@ -193,8 +183,7 @@ func NewDevPatchGitCommand() *cobra.Command { return cmd } -// Run performs the execution of 'dev patch-git' sub-command. -func (o *DevPatchGitOptions) Run(_ *cobra.Command, args []string) error { +func (o *devPatchGitOptions) run(_ *cobra.Command, args []string) error { host, fileName := args[0], args[1] // Read the contents of the given file @@ -239,21 +228,19 @@ func (o *DevPatchGitOptions) Run(_ *cobra.Command, args []string) error { return nil } -// DevSha256SumOptions holds the command-line options for 'dev sha256sum' sub-command. -type DevSha256SumOptions struct { +type devSha256SumOptions struct { extractPath string } -// NewDevSha256SumCommand creates the `dev sha256sum` sub-command. -func NewDevSha256SumCommand() *cobra.Command { - o := &DevSha256SumOptions{} +func newDevSha256SumCommand() *cobra.Command { + o := &devSha256SumOptions{} cmd := &cobra.Command{ Use: "sha256sum { FILE | URL }", Aliases: []string{"s"}, Short: lang.CmdDevSha256sumShort, Args: cobra.ExactArgs(1), - RunE: o.Run, + RunE: o.run, } cmd.Flags().StringVarP(&o.extractPath, "extract-path", "e", "", lang.CmdDevFlagExtractPath) @@ -261,8 +248,7 @@ func NewDevSha256SumCommand() *cobra.Command { return cmd } -// Run performs the execution of 'dev sha256sum' sub-command. -func (o *DevSha256SumOptions) Run(cmd *cobra.Command, args []string) (err error) { +func (o *devSha256SumOptions) run(cmd *cobra.Command, args []string) (err error) { hashErr := errors.New("unable to compute the SHA256SUM hash") fileName := args[0] @@ -341,12 +327,10 @@ func (o *DevSha256SumOptions) Run(cmd *cobra.Command, args []string) (err error) return nil } -// DevFindImagesOptions holds the command-line options for 'dev find-images' sub-command. -type DevFindImagesOptions struct{} +type devFindImagesOptions struct{} -// NewDevFindImagesCommand creates the `dev find-images` sub-command. -func NewDevFindImagesCommand(v *viper.Viper) *cobra.Command { - o := &DevFindImagesOptions{} +func newDevFindImagesCommand(v *viper.Viper) *cobra.Command { + o := &devFindImagesOptions{} cmd := &cobra.Command{ Use: "find-images [ DIRECTORY ]", @@ -354,13 +338,13 @@ func NewDevFindImagesCommand(v *viper.Viper) *cobra.Command { Args: cobra.MaximumNArgs(1), Short: lang.CmdDevFindImagesShort, Long: lang.CmdDevFindImagesLong, - RunE: o.Run, + RunE: o.run, } // TODO(soltysh): get rid of pkgConfig global cmd.Flags().StringVarP(&pkgConfig.FindImagesOpts.RepoHelmChartPath, "repo-chart-path", "p", "", lang.CmdDevFlagRepoChartPath) // use the package create config for this and reset it here to avoid overwriting the config.CreateOptions.SetVariables - cmd.Flags().StringToStringVar(&pkgConfig.CreateOpts.SetVariables, "set", v.GetStringMapString(common.VPkgCreateSet), lang.CmdDevFlagSet) + cmd.Flags().StringToStringVar(&pkgConfig.CreateOpts.SetVariables, "set", v.GetStringMapString(VPkgCreateSet), lang.CmdDevFlagSet) err := cmd.Flags().MarkDeprecated("set", "this field is replaced by create-set") if err != nil { @@ -370,9 +354,9 @@ func NewDevFindImagesCommand(v *viper.Viper) *cobra.Command { if err != nil { logger.Default().Debug("unable to mark dev-find-images flag as hidden", "error", err) } - cmd.Flags().StringVarP(&pkgConfig.CreateOpts.Flavor, "flavor", "f", v.GetString(common.VPkgCreateFlavor), lang.CmdPackageCreateFlagFlavor) - cmd.Flags().StringToStringVar(&pkgConfig.CreateOpts.SetVariables, "create-set", v.GetStringMapString(common.VPkgCreateSet), lang.CmdDevFlagSet) - cmd.Flags().StringToStringVar(&pkgConfig.PkgOpts.SetVariables, "deploy-set", v.GetStringMapString(common.VPkgDeploySet), lang.CmdPackageDeployFlagSet) + cmd.Flags().StringVarP(&pkgConfig.CreateOpts.Flavor, "flavor", "f", v.GetString(VPkgCreateFlavor), lang.CmdPackageCreateFlagFlavor) + cmd.Flags().StringToStringVar(&pkgConfig.CreateOpts.SetVariables, "create-set", v.GetStringMapString(VPkgCreateSet), lang.CmdDevFlagSet) + cmd.Flags().StringToStringVar(&pkgConfig.PkgOpts.SetVariables, "deploy-set", v.GetStringMapString(VPkgDeploySet), lang.CmdPackageDeployFlagSet) // allow for the override of the default helm KubeVersion cmd.Flags().StringVar(&pkgConfig.FindImagesOpts.KubeVersionOverride, "kube-version", "", lang.CmdDevFlagKubeVersion) // check which manifests are using this particular image @@ -385,17 +369,16 @@ func NewDevFindImagesCommand(v *viper.Viper) *cobra.Command { return cmd } -// Run performs the execution of 'dev find-images' sub-command. -func (o *DevFindImagesOptions) Run(cmd *cobra.Command, args []string) error { +func (o *devFindImagesOptions) run(cmd *cobra.Command, args []string) error { ctx := cmd.Context() pkgConfig.CreateOpts.BaseDir = setBaseDirectory(args) - v := common.GetViper() + v := getViper() pkgConfig.CreateOpts.SetVariables = helpers.TransformAndMergeMap( - v.GetStringMapString(common.VPkgCreateSet), pkgConfig.CreateOpts.SetVariables, strings.ToUpper) + v.GetStringMapString(VPkgCreateSet), pkgConfig.CreateOpts.SetVariables, strings.ToUpper) pkgConfig.PkgOpts.SetVariables = helpers.TransformAndMergeMap( - v.GetStringMapString(common.VPkgDeploySet), pkgConfig.PkgOpts.SetVariables, strings.ToUpper) + v.GetStringMapString(VPkgDeploySet), pkgConfig.PkgOpts.SetVariables, strings.ToUpper) pkgClient, err := packager.New(&pkgConfig, packager.WithContext(cmd.Context())) if err != nil { return err @@ -406,7 +389,7 @@ func (o *DevFindImagesOptions) Run(cmd *cobra.Command, args []string) error { var lintErr *lint.LintError if errors.As(err, &lintErr) { - common.PrintFindings(ctx, lintErr) + PrintFindings(ctx, lintErr) } if err != nil { return fmt.Errorf("unable to find images: %w", err) @@ -414,12 +397,10 @@ func (o *DevFindImagesOptions) Run(cmd *cobra.Command, args []string) error { return nil } -// DevGenerateConfigOptions holds the command-line options for 'dev generate-config' sub-command. -type DevGenerateConfigOptions struct{} +type devGenerateConfigOptions struct{} -// NewDevGenerateConfigCommand creates the `dev generate-config` sub-command. -func NewDevGenerateConfigCommand() *cobra.Command { - o := &DevGenerateConfigOptions{} +func newDevGenerateConfigCommand() *cobra.Command { + o := &devGenerateConfigOptions{} cmd := &cobra.Command{ Use: "generate-config [ FILENAME ]", @@ -427,33 +408,30 @@ func NewDevGenerateConfigCommand() *cobra.Command { Args: cobra.MaximumNArgs(1), Short: lang.CmdDevGenerateConfigShort, Long: lang.CmdDevGenerateConfigLong, - RunE: o.Run, + RunE: o.run, } return cmd } -// Run performs the execution of 'dev generate-config' sub-command. -func (o *DevGenerateConfigOptions) Run(_ *cobra.Command, args []string) error { +func (o *devGenerateConfigOptions) run(_ *cobra.Command, args []string) error { // If a filename was provided, use that fileName := "zarf-config.toml" if len(args) > 0 { fileName = args[0] } - v := common.GetViper() + v := getViper() if err := v.SafeWriteConfigAs(fileName); err != nil { return fmt.Errorf("unable to write the config file %s, make sure the file doesn't already exist: %w", fileName, err) } return nil } -// DevLintOptions holds the command-line options for 'dev lint' sub-command. -type DevLintOptions struct{} +type devLintOptions struct{} -// NewDevLintCommand creates the `dev lint` sub-command. -func NewDevLintCommand(v *viper.Viper) *cobra.Command { - o := &DevLintOptions{} +func newDevLintCommand(v *viper.Viper) *cobra.Command { + o := &devLintOptions{} cmd := &cobra.Command{ Use: "lint [ DIRECTORY ]", @@ -461,28 +439,27 @@ func NewDevLintCommand(v *viper.Viper) *cobra.Command { Aliases: []string{"l"}, Short: lang.CmdDevLintShort, Long: lang.CmdDevLintLong, - RunE: o.Run, + RunE: o.run, } - cmd.Flags().StringToStringVar(&pkgConfig.CreateOpts.SetVariables, "set", v.GetStringMapString(common.VPkgCreateSet), lang.CmdPackageCreateFlagSet) - cmd.Flags().StringVarP(&pkgConfig.CreateOpts.Flavor, "flavor", "f", v.GetString(common.VPkgCreateFlavor), lang.CmdPackageCreateFlagFlavor) + cmd.Flags().StringToStringVar(&pkgConfig.CreateOpts.SetVariables, "set", v.GetStringMapString(VPkgCreateSet), lang.CmdPackageCreateFlagSet) + cmd.Flags().StringVarP(&pkgConfig.CreateOpts.Flavor, "flavor", "f", v.GetString(VPkgCreateFlavor), lang.CmdPackageCreateFlagFlavor) return cmd } -// Run performs the execution of 'dev lint' sub-command. -func (o *DevLintOptions) Run(cmd *cobra.Command, args []string) error { +func (o *devLintOptions) run(cmd *cobra.Command, args []string) error { ctx := cmd.Context() config.CommonOptions.Confirm = true pkgConfig.CreateOpts.BaseDir = setBaseDirectory(args) - v := common.GetViper() + v := getViper() pkgConfig.CreateOpts.SetVariables = helpers.TransformAndMergeMap( - v.GetStringMapString(common.VPkgCreateSet), pkgConfig.CreateOpts.SetVariables, strings.ToUpper) + v.GetStringMapString(VPkgCreateSet), pkgConfig.CreateOpts.SetVariables, strings.ToUpper) err := lint.Validate(ctx, pkgConfig.CreateOpts.BaseDir, pkgConfig.CreateOpts.Flavor, pkgConfig.CreateOpts.SetVariables) var lintErr *lint.LintError if errors.As(err, &lintErr) { - common.PrintFindings(ctx, lintErr) + PrintFindings(ctx, lintErr) // Do not return an error if the findings are all warnings. if lintErr.OnlyWarnings() { return nil diff --git a/src/cmd/tools/helm.go b/src/cmd/helm.go similarity index 70% rename from src/cmd/tools/helm.go rename to src/cmd/helm.go index fcc3171034..4f6b33f0ff 100644 --- a/src/cmd/tools/helm.go +++ b/src/cmd/helm.go @@ -1,25 +1,24 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: 2021-Present The Zarf Authors -// Package tools contains the CLI commands for Zarf. -package tools +// Package cmd contains the CLI commands for Zarf. +package cmd import ( "os" "github.com/spf13/cobra" - "github.com/zarf-dev/zarf/src/cmd/tools/helm" + "github.com/zarf-dev/zarf/src/cmd/helm" "github.com/zarf-dev/zarf/src/config/lang" "github.com/zarf-dev/zarf/src/pkg/logger" "github.com/zarf-dev/zarf/src/pkg/message" "helm.sh/helm/v3/pkg/action" ) -// ldflags github.com/zarf-dev/zarf/src/cmd/tools.helmVersion=x.x.x +// ldflags github.com/zarf-dev/zarf/src/cmd.helmVersion=x.x.x var helmVersion string -// NewHelmCommand creates the `tools helm` sub-command. -func NewHelmCommand() *cobra.Command { +func newHelmCommand() *cobra.Command { actionConfig := new(action.Configuration) // Truncate Helm's arguments so that it thinks its all alone @@ -27,7 +26,7 @@ func NewHelmCommand() *cobra.Command { if len(os.Args) > 2 { helmArgs = os.Args[3:] } - // The inclusion of Helm in this manner should be changed once https://github.com/helm/helm/pull/12725 is merged + // The inclusion of Helm in this manner should be changed once https://github.com/helm/helm/pull/13617 is merged cmd, err := helm.NewRootCmd(actionConfig, os.Stdout, helmArgs) if err != nil { message.Debug("Failed to initialize helm command", "error", err) @@ -35,7 +34,7 @@ func NewHelmCommand() *cobra.Command { } cmd.Short = lang.CmdToolsHelmShort cmd.Long = lang.CmdToolsHelmLong - cmd.AddCommand(newVersionCmd("helm", helmVersion)) + cmd.AddCommand(newToolsVersionCmd("helm", helmVersion)) return cmd } diff --git a/src/cmd/tools/helm/LICENSE b/src/cmd/helm/LICENSE similarity index 99% rename from src/cmd/tools/helm/LICENSE rename to src/cmd/helm/LICENSE index e19fd8f063..21c57fae21 100644 --- a/src/cmd/tools/helm/LICENSE +++ b/src/cmd/helm/LICENSE @@ -199,4 +199,4 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file + limitations under the License. diff --git a/src/cmd/tools/helm/dependency.go b/src/cmd/helm/dependency.go similarity index 100% rename from src/cmd/tools/helm/dependency.go rename to src/cmd/helm/dependency.go diff --git a/src/cmd/tools/helm/dependency_build.go b/src/cmd/helm/dependency_build.go similarity index 100% rename from src/cmd/tools/helm/dependency_build.go rename to src/cmd/helm/dependency_build.go diff --git a/src/cmd/tools/helm/dependency_update.go b/src/cmd/helm/dependency_update.go similarity index 100% rename from src/cmd/tools/helm/dependency_update.go rename to src/cmd/helm/dependency_update.go diff --git a/src/cmd/tools/helm/flags.go b/src/cmd/helm/flags.go similarity index 100% rename from src/cmd/tools/helm/flags.go rename to src/cmd/helm/flags.go diff --git a/src/cmd/tools/helm/load_plugins.go b/src/cmd/helm/load_plugins.go similarity index 100% rename from src/cmd/tools/helm/load_plugins.go rename to src/cmd/helm/load_plugins.go diff --git a/src/cmd/tools/helm/repo.go b/src/cmd/helm/repo.go similarity index 100% rename from src/cmd/tools/helm/repo.go rename to src/cmd/helm/repo.go diff --git a/src/cmd/tools/helm/repo_add.go b/src/cmd/helm/repo_add.go similarity index 100% rename from src/cmd/tools/helm/repo_add.go rename to src/cmd/helm/repo_add.go diff --git a/src/cmd/tools/helm/repo_index.go b/src/cmd/helm/repo_index.go similarity index 100% rename from src/cmd/tools/helm/repo_index.go rename to src/cmd/helm/repo_index.go diff --git a/src/cmd/tools/helm/repo_list.go b/src/cmd/helm/repo_list.go similarity index 100% rename from src/cmd/tools/helm/repo_list.go rename to src/cmd/helm/repo_list.go diff --git a/src/cmd/tools/helm/repo_remove.go b/src/cmd/helm/repo_remove.go similarity index 100% rename from src/cmd/tools/helm/repo_remove.go rename to src/cmd/helm/repo_remove.go diff --git a/src/cmd/tools/helm/repo_update.go b/src/cmd/helm/repo_update.go similarity index 100% rename from src/cmd/tools/helm/repo_update.go rename to src/cmd/helm/repo_update.go diff --git a/src/cmd/tools/helm/root.go b/src/cmd/helm/root.go similarity index 100% rename from src/cmd/tools/helm/root.go rename to src/cmd/helm/root.go diff --git a/src/cmd/initialize.go b/src/cmd/initialize.go index 67395b90a0..ad75f29b24 100644 --- a/src/cmd/initialize.go +++ b/src/cmd/initialize.go @@ -15,7 +15,6 @@ import ( "github.com/AlecAivazis/survey/v2" "github.com/defenseunicorns/pkg/helpers/v2" "github.com/defenseunicorns/pkg/oci" - "github.com/zarf-dev/zarf/src/cmd/common" "github.com/zarf-dev/zarf/src/config" "github.com/zarf-dev/zarf/src/config/lang" "github.com/zarf-dev/zarf/src/pkg/logger" @@ -29,12 +28,10 @@ import ( "github.com/spf13/cobra" ) -// InitOptions holds the command-line options for 'init' sub-command. -type InitOptions struct{} +type initOptions struct{} -// NewInitCommand creates the `init` sub-command. -func NewInitCommand() *cobra.Command { - o := InitOptions{} +func newInitCommand() *cobra.Command { + o := initOptions{} cmd := &cobra.Command{ Use: "init", @@ -42,52 +39,52 @@ func NewInitCommand() *cobra.Command { Short: lang.CmdInitShort, Long: lang.CmdInitLong, Example: lang.CmdInitExample, - RunE: o.Run, + RunE: o.run, } - v := common.GetViper() + v := getViper() // Init package variable defaults that are non-zero values - // NOTE: these are not in common.setDefaults so that zarf tools update-creds does not erroneously update values back to the default - v.SetDefault(common.VInitGitPushUser, types.ZarfGitPushUser) - v.SetDefault(common.VInitRegistryPushUser, types.ZarfRegistryPushUser) + // NOTE: these are not in setDefaults so that zarf tools update-creds does not erroneously update values back to the default + v.SetDefault(VInitGitPushUser, types.ZarfGitPushUser) + v.SetDefault(VInitRegistryPushUser, types.ZarfRegistryPushUser) // Init package set variable flags - cmd.Flags().StringToStringVar(&pkgConfig.PkgOpts.SetVariables, "set", v.GetStringMapString(common.VPkgDeploySet), lang.CmdInitFlagSet) + cmd.Flags().StringToStringVar(&pkgConfig.PkgOpts.SetVariables, "set", v.GetStringMapString(VPkgDeploySet), lang.CmdInitFlagSet) // Continue to require --confirm flag for init command to avoid accidental deployments cmd.Flags().BoolVar(&config.CommonOptions.Confirm, "confirm", false, lang.CmdInitFlagConfirm) - cmd.Flags().StringVar(&pkgConfig.PkgOpts.OptionalComponents, "components", v.GetString(common.VInitComponents), lang.CmdInitFlagComponents) - cmd.Flags().StringVar(&pkgConfig.InitOpts.StorageClass, "storage-class", v.GetString(common.VInitStorageClass), lang.CmdInitFlagStorageClass) + cmd.Flags().StringVar(&pkgConfig.PkgOpts.OptionalComponents, "components", v.GetString(VInitComponents), lang.CmdInitFlagComponents) + cmd.Flags().StringVar(&pkgConfig.InitOpts.StorageClass, "storage-class", v.GetString(VInitStorageClass), lang.CmdInitFlagStorageClass) // Flags for using an external Git server - cmd.Flags().StringVar(&pkgConfig.InitOpts.GitServer.Address, "git-url", v.GetString(common.VInitGitURL), lang.CmdInitFlagGitURL) - cmd.Flags().StringVar(&pkgConfig.InitOpts.GitServer.PushUsername, "git-push-username", v.GetString(common.VInitGitPushUser), lang.CmdInitFlagGitPushUser) - cmd.Flags().StringVar(&pkgConfig.InitOpts.GitServer.PushPassword, "git-push-password", v.GetString(common.VInitGitPushPass), lang.CmdInitFlagGitPushPass) - cmd.Flags().StringVar(&pkgConfig.InitOpts.GitServer.PullUsername, "git-pull-username", v.GetString(common.VInitGitPullUser), lang.CmdInitFlagGitPullUser) - cmd.Flags().StringVar(&pkgConfig.InitOpts.GitServer.PullPassword, "git-pull-password", v.GetString(common.VInitGitPullPass), lang.CmdInitFlagGitPullPass) + cmd.Flags().StringVar(&pkgConfig.InitOpts.GitServer.Address, "git-url", v.GetString(VInitGitURL), lang.CmdInitFlagGitURL) + cmd.Flags().StringVar(&pkgConfig.InitOpts.GitServer.PushUsername, "git-push-username", v.GetString(VInitGitPushUser), lang.CmdInitFlagGitPushUser) + cmd.Flags().StringVar(&pkgConfig.InitOpts.GitServer.PushPassword, "git-push-password", v.GetString(VInitGitPushPass), lang.CmdInitFlagGitPushPass) + cmd.Flags().StringVar(&pkgConfig.InitOpts.GitServer.PullUsername, "git-pull-username", v.GetString(VInitGitPullUser), lang.CmdInitFlagGitPullUser) + cmd.Flags().StringVar(&pkgConfig.InitOpts.GitServer.PullPassword, "git-pull-password", v.GetString(VInitGitPullPass), lang.CmdInitFlagGitPullPass) // Flags for using an external registry - cmd.Flags().StringVar(&pkgConfig.InitOpts.RegistryInfo.Address, "registry-url", v.GetString(common.VInitRegistryURL), lang.CmdInitFlagRegURL) - cmd.Flags().IntVar(&pkgConfig.InitOpts.RegistryInfo.NodePort, "nodeport", v.GetInt(common.VInitRegistryNodeport), lang.CmdInitFlagRegNodePort) - cmd.Flags().StringVar(&pkgConfig.InitOpts.RegistryInfo.PushUsername, "registry-push-username", v.GetString(common.VInitRegistryPushUser), lang.CmdInitFlagRegPushUser) - cmd.Flags().StringVar(&pkgConfig.InitOpts.RegistryInfo.PushPassword, "registry-push-password", v.GetString(common.VInitRegistryPushPass), lang.CmdInitFlagRegPushPass) - cmd.Flags().StringVar(&pkgConfig.InitOpts.RegistryInfo.PullUsername, "registry-pull-username", v.GetString(common.VInitRegistryPullUser), lang.CmdInitFlagRegPullUser) - cmd.Flags().StringVar(&pkgConfig.InitOpts.RegistryInfo.PullPassword, "registry-pull-password", v.GetString(common.VInitRegistryPullPass), lang.CmdInitFlagRegPullPass) - cmd.Flags().StringVar(&pkgConfig.InitOpts.RegistryInfo.Secret, "registry-secret", v.GetString(common.VInitRegistrySecret), lang.CmdInitFlagRegSecret) + cmd.Flags().StringVar(&pkgConfig.InitOpts.RegistryInfo.Address, "registry-url", v.GetString(VInitRegistryURL), lang.CmdInitFlagRegURL) + cmd.Flags().IntVar(&pkgConfig.InitOpts.RegistryInfo.NodePort, "nodeport", v.GetInt(VInitRegistryNodeport), lang.CmdInitFlagRegNodePort) + cmd.Flags().StringVar(&pkgConfig.InitOpts.RegistryInfo.PushUsername, "registry-push-username", v.GetString(VInitRegistryPushUser), lang.CmdInitFlagRegPushUser) + cmd.Flags().StringVar(&pkgConfig.InitOpts.RegistryInfo.PushPassword, "registry-push-password", v.GetString(VInitRegistryPushPass), lang.CmdInitFlagRegPushPass) + cmd.Flags().StringVar(&pkgConfig.InitOpts.RegistryInfo.PullUsername, "registry-pull-username", v.GetString(VInitRegistryPullUser), lang.CmdInitFlagRegPullUser) + cmd.Flags().StringVar(&pkgConfig.InitOpts.RegistryInfo.PullPassword, "registry-pull-password", v.GetString(VInitRegistryPullPass), lang.CmdInitFlagRegPullPass) + cmd.Flags().StringVar(&pkgConfig.InitOpts.RegistryInfo.Secret, "registry-secret", v.GetString(VInitRegistrySecret), lang.CmdInitFlagRegSecret) // Flags for using an external artifact server - cmd.Flags().StringVar(&pkgConfig.InitOpts.ArtifactServer.Address, "artifact-url", v.GetString(common.VInitArtifactURL), lang.CmdInitFlagArtifactURL) - cmd.Flags().StringVar(&pkgConfig.InitOpts.ArtifactServer.PushUsername, "artifact-push-username", v.GetString(common.VInitArtifactPushUser), lang.CmdInitFlagArtifactPushUser) - cmd.Flags().StringVar(&pkgConfig.InitOpts.ArtifactServer.PushToken, "artifact-push-token", v.GetString(common.VInitArtifactPushToken), lang.CmdInitFlagArtifactPushToken) + cmd.Flags().StringVar(&pkgConfig.InitOpts.ArtifactServer.Address, "artifact-url", v.GetString(VInitArtifactURL), lang.CmdInitFlagArtifactURL) + cmd.Flags().StringVar(&pkgConfig.InitOpts.ArtifactServer.PushUsername, "artifact-push-username", v.GetString(VInitArtifactPushUser), lang.CmdInitFlagArtifactPushUser) + cmd.Flags().StringVar(&pkgConfig.InitOpts.ArtifactServer.PushToken, "artifact-push-token", v.GetString(VInitArtifactPushToken), lang.CmdInitFlagArtifactPushToken) // Flags that control how a deployment proceeds // Always require adopt-existing-resources flag (no viper) cmd.Flags().BoolVar(&pkgConfig.DeployOpts.AdoptExistingResources, "adopt-existing-resources", false, lang.CmdPackageDeployFlagAdoptExistingResources) - cmd.Flags().DurationVar(&pkgConfig.DeployOpts.Timeout, "timeout", v.GetDuration(common.VPkgDeployTimeout), lang.CmdPackageDeployFlagTimeout) + cmd.Flags().DurationVar(&pkgConfig.DeployOpts.Timeout, "timeout", v.GetDuration(VPkgDeployTimeout), lang.CmdPackageDeployFlagTimeout) - cmd.Flags().IntVar(&pkgConfig.PkgOpts.Retries, "retries", v.GetInt(common.VPkgRetries), lang.CmdPackageFlagRetries) - cmd.Flags().StringVarP(&pkgConfig.PkgOpts.PublicKeyPath, "key", "k", v.GetString(common.VPkgPublicKey), lang.CmdPackageFlagFlagPublicKey) + cmd.Flags().IntVar(&pkgConfig.PkgOpts.Retries, "retries", v.GetInt(VPkgRetries), lang.CmdPackageFlagRetries) + cmd.Flags().StringVarP(&pkgConfig.PkgOpts.PublicKeyPath, "key", "k", v.GetString(VPkgPublicKey), lang.CmdPackageFlagFlagPublicKey) cmd.Flags().BoolVar(&pkgConfig.PkgOpts.SkipSignatureValidation, "skip-signature-validation", false, lang.CmdPackageFlagSkipSignatureValidation) cmd.Flags().SortFlags = true @@ -95,8 +92,7 @@ func NewInitCommand() *cobra.Command { return cmd } -// Run performs the execution of 'init' sub-command. -func (o *InitOptions) Run(cmd *cobra.Command, _ []string) error { +func (o *initOptions) run(cmd *cobra.Command, _ []string) error { ctx := cmd.Context() if err := validateInitFlags(); err != nil { return fmt.Errorf("invalid command flags were provided: %w", err) @@ -117,9 +113,9 @@ func (o *InitOptions) Run(cmd *cobra.Command, _ []string) error { return err } - v := common.GetViper() + v := getViper() pkgConfig.PkgOpts.SetVariables = helpers.TransformAndMergeMap( - v.GetStringMapString(common.VPkgDeploySet), pkgConfig.PkgOpts.SetVariables, strings.ToUpper) + v.GetStringMapString(VPkgDeploySet), pkgConfig.PkgOpts.SetVariables, strings.ToUpper) pkgClient, err := packager.New(&pkgConfig, packager.WithSource(src), packager.WithContext(ctx)) if err != nil { diff --git a/src/cmd/internal.go b/src/cmd/internal.go index 9eb4fe728d..b12ddeeb19 100644 --- a/src/cmd/internal.go +++ b/src/cmd/internal.go @@ -15,7 +15,6 @@ import ( "github.com/spf13/cobra" "github.com/spf13/cobra/doc" "github.com/spf13/pflag" - "github.com/zarf-dev/zarf/src/cmd/common" "github.com/zarf-dev/zarf/src/config/lang" "github.com/zarf-dev/zarf/src/internal/agent" "github.com/zarf-dev/zarf/src/internal/gitea" @@ -24,45 +23,41 @@ import ( "github.com/zarf-dev/zarf/src/pkg/message" ) -// NewInternalCommand creates the `internal` sub-command and its nested children. -func NewInternalCommand(rootCmd *cobra.Command) *cobra.Command { +func newInternalCommand(rootCmd *cobra.Command) *cobra.Command { cmd := &cobra.Command{ Use: "internal", Hidden: true, Short: lang.CmdInternalShort, } - cmd.AddCommand(NewInternalAgentCommand()) - cmd.AddCommand(NewInternalHTTPProxyCommand()) - cmd.AddCommand(NewInternalGenCliDocsCommand(rootCmd)) - cmd.AddCommand(NewInternalCreateReadOnlyGiteaUserCommand()) - cmd.AddCommand(NewInternalCreateArtifactRegistryTokenCommand()) - cmd.AddCommand(NewInternalUpdateGiteaPVCCommand()) - cmd.AddCommand(NewInternalIsValidHostnameCommand()) - cmd.AddCommand(NewInternalCrc32Command()) + cmd.AddCommand(newInternalAgentCommand()) + cmd.AddCommand(newInternalHTTPProxyCommand()) + cmd.AddCommand(newInternalGenCliDocsCommand(rootCmd)) + cmd.AddCommand(newInternalCreateReadOnlyGiteaUserCommand()) + cmd.AddCommand(newInternalCreateArtifactRegistryTokenCommand()) + cmd.AddCommand(newInternalUpdateGiteaPVCCommand()) + cmd.AddCommand(newInternalIsValidHostnameCommand()) + cmd.AddCommand(newInternalCrc32Command()) return cmd } -// InternalAgentOptions holds the command-line options for 'internal agent' sub-command. -type InternalAgentOptions struct{} +type internalAgentOptions struct{} -// NewInternalAgentCommand creates the `internal agent` sub-command. -func NewInternalAgentCommand() *cobra.Command { - o := &InternalAgentOptions{} +func newInternalAgentCommand() *cobra.Command { + o := &internalAgentOptions{} cmd := &cobra.Command{ Use: "agent", Short: lang.CmdInternalAgentShort, Long: lang.CmdInternalAgentLong, - RunE: o.Run, + RunE: o.run, } return cmd } -// Run performs the execution of 'internal agent' sub-command. -func (o *InternalAgentOptions) Run(cmd *cobra.Command, _ []string) error { +func (o *internalAgentOptions) run(cmd *cobra.Command, _ []string) error { cluster, err := cluster.NewCluster() if err != nil { return err @@ -70,25 +65,22 @@ func (o *InternalAgentOptions) Run(cmd *cobra.Command, _ []string) error { return agent.StartWebhook(cmd.Context(), cluster) } -// InternalHTTPProxyOptions holds the command-line options for 'internal http-proxy' sub-command. -type InternalHTTPProxyOptions struct{} +type internalHTTPProxyOptions struct{} -// NewInternalHTTPProxyCommand creates the `internal http-proxy` sub-command. -func NewInternalHTTPProxyCommand() *cobra.Command { - o := &InternalHTTPProxyOptions{} +func newInternalHTTPProxyCommand() *cobra.Command { + o := &internalHTTPProxyOptions{} cmd := &cobra.Command{ Use: "http-proxy", Short: lang.CmdInternalProxyShort, Long: lang.CmdInternalProxyLong, - RunE: o.Run, + RunE: o.run, } return cmd } -// Run performs the execution of 'internal http-proxy' sub-command. -func (o *InternalHTTPProxyOptions) Run(cmd *cobra.Command, _ []string) error { +func (o *internalHTTPProxyOptions) run(cmd *cobra.Command, _ []string) error { cluster, err := cluster.NewCluster() if err != nil { return err @@ -96,29 +88,26 @@ func (o *InternalHTTPProxyOptions) Run(cmd *cobra.Command, _ []string) error { return agent.StartHTTPProxy(cmd.Context(), cluster) } -// InternalGenCliDocsOptions holds the command-line options for 'internal gen-cli-docs' sub-command. -type InternalGenCliDocsOptions struct { +type internalGenCliDocsOptions struct { rootCmd *cobra.Command } -// NewInternalGenCliDocsCommand creates the `internal gen-cli-docs` sub-command. -func NewInternalGenCliDocsCommand(root *cobra.Command) *cobra.Command { +func newInternalGenCliDocsCommand(root *cobra.Command) *cobra.Command { // TODO(soltysh): ideally this should be replace with cmd.Root() call from cobra - o := &InternalGenCliDocsOptions{ + o := &internalGenCliDocsOptions{ rootCmd: root, } cmd := &cobra.Command{ Use: "gen-cli-docs", Short: lang.CmdInternalGenerateCliDocsShort, - RunE: o.Run, + RunE: o.run, } return cmd } -// Run performs the execution of 'internal gen-cli-docs' sub-command. -func (o *InternalGenCliDocsOptions) Run(_ *cobra.Command, _ []string) error { +func (o *internalGenCliDocsOptions) run(_ *cobra.Command, _ []string) error { // Don't include the datestamp in the output o.rootCmd.DisableAutoGenTag = true @@ -134,7 +123,7 @@ func (o *InternalGenCliDocsOptions) Run(_ *cobra.Command, _ []string) error { if cmd.Use == "tools" { for _, toolCmd := range cmd.Commands() { // If the command is a vendored command, add a dummy flag to hide root flags from the docs - if common.CheckVendorOnlyFromPath(toolCmd) { + if checkVendorOnlyFromPath(toolCmd) { addHiddenDummyFlag(toolCmd, "log-level") addHiddenDummyFlag(toolCmd, "log-format") addHiddenDummyFlag(toolCmd, "architecture") @@ -224,25 +213,22 @@ func addHiddenDummyFlag(cmd *cobra.Command, flagDummy string) { } } -// InternalCreateReadOnlyGiteaUserOptions holds the command-line options for 'internal create-read-only-gitea-user' sub-command. -type InternalCreateReadOnlyGiteaUserOptions struct{} +type internalCreateReadOnlyGiteaUserOptions struct{} -// NewInternalCreateReadOnlyGiteaUserCommand creates the `internal create-read-oly-gitea-user` sub-command. -func NewInternalCreateReadOnlyGiteaUserCommand() *cobra.Command { - o := &InternalCreateReadOnlyGiteaUserOptions{} +func newInternalCreateReadOnlyGiteaUserCommand() *cobra.Command { + o := &internalCreateReadOnlyGiteaUserOptions{} cmd := &cobra.Command{ Use: "create-read-only-gitea-user", Short: lang.CmdInternalCreateReadOnlyGiteaUserShort, Long: lang.CmdInternalCreateReadOnlyGiteaUserLong, - RunE: o.Run, + RunE: o.run, } return cmd } -// Run performs the execution of 'internal create-read-only-gitea-user' sub-command. -func (o *InternalCreateReadOnlyGiteaUserOptions) Run(cmd *cobra.Command, _ []string) error { +func (o *internalCreateReadOnlyGiteaUserOptions) run(cmd *cobra.Command, _ []string) error { timeoutCtx, cancel := context.WithTimeout(cmd.Context(), cluster.DefaultTimeout) defer cancel() c, err := cluster.NewClusterWithWait(timeoutCtx) @@ -280,25 +266,22 @@ func (o *InternalCreateReadOnlyGiteaUserOptions) Run(cmd *cobra.Command, _ []str return nil } -// InternalCreateArtifactRegistryTokenOptions holds the command-line options for 'internal create-artifact-registry-token' sub-command. -type InternalCreateArtifactRegistryTokenOptions struct{} +type internalCreateArtifactRegistryTokenOptions struct{} -// NewInternalCreateArtifactRegistryTokenCommand creates the `internal create-artifact-registry-token` sub-command. -func NewInternalCreateArtifactRegistryTokenCommand() *cobra.Command { - o := &InternalCreateArtifactRegistryTokenOptions{} +func newInternalCreateArtifactRegistryTokenCommand() *cobra.Command { + o := &internalCreateArtifactRegistryTokenOptions{} cmd := &cobra.Command{ Use: "create-artifact-registry-token", Short: lang.CmdInternalArtifactRegistryGiteaTokenShort, Long: lang.CmdInternalArtifactRegistryGiteaTokenLong, - RunE: o.Run, + RunE: o.run, } return cmd } -// Run performs the execution of 'internal create-artifact-registry-token' sub-command. -func (o *InternalCreateArtifactRegistryTokenOptions) Run(cmd *cobra.Command, _ []string) error { +func (o *internalCreateArtifactRegistryTokenOptions) run(cmd *cobra.Command, _ []string) error { timeoutCtx, cancel := context.WithTimeout(cmd.Context(), cluster.DefaultTimeout) defer cancel() c, err := cluster.NewClusterWithWait(timeoutCtx) @@ -345,20 +328,18 @@ func (o *InternalCreateArtifactRegistryTokenOptions) Run(cmd *cobra.Command, _ [ return nil } -// InternalUpdateGiteaPVCOptions holds the command-line options for 'internal update-gitea-pvc' sub-command. -type InternalUpdateGiteaPVCOptions struct { +type internalUpdateGiteaPVCOptions struct { rollback bool } -// NewInternalUpdateGiteaPVCCommand creates the `internal update-gitea-pvc` sub-command. -func NewInternalUpdateGiteaPVCCommand() *cobra.Command { - o := &InternalUpdateGiteaPVCOptions{} +func newInternalUpdateGiteaPVCCommand() *cobra.Command { + o := &internalUpdateGiteaPVCOptions{} cmd := &cobra.Command{ Use: "update-gitea-pvc", Short: lang.CmdInternalUpdateGiteaPVCShort, Long: lang.CmdInternalUpdateGiteaPVCLong, - RunE: o.Run, + RunE: o.run, } cmd.Flags().BoolVarP(&o.rollback, "rollback", "r", false, lang.CmdInternalFlagUpdateGiteaPVCRollback) @@ -366,8 +347,7 @@ func NewInternalUpdateGiteaPVCCommand() *cobra.Command { return cmd } -// Run performs the execution of 'internal update-gitea-pvc' sub-command. -func (o *InternalUpdateGiteaPVCOptions) Run(cmd *cobra.Command, _ []string) error { +func (o *internalUpdateGiteaPVCOptions) run(cmd *cobra.Command, _ []string) error { ctx := cmd.Context() pvcName := os.Getenv("ZARF_VAR_GIT_SERVER_EXISTING_PVC") @@ -385,24 +365,21 @@ func (o *InternalUpdateGiteaPVCOptions) Run(cmd *cobra.Command, _ []string) erro return nil } -// InternalIsValidHostnameOptions holds the command-line options for 'internal is-valid-hostname' sub-command. -type InternalIsValidHostnameOptions struct{} +type internalIsValidHostnameOptions struct{} -// NewInternalIsValidHostnameCommand creates the `internal is-valid-hostname` sub-command. -func NewInternalIsValidHostnameCommand() *cobra.Command { - o := &InternalIsValidHostnameOptions{} +func newInternalIsValidHostnameCommand() *cobra.Command { + o := &internalIsValidHostnameOptions{} cmd := &cobra.Command{ Use: "is-valid-hostname", Short: lang.CmdInternalIsValidHostnameShort, - RunE: o.Run, + RunE: o.run, } return cmd } -// Run performs the execution of 'internal is-valid-hostname' sub-command. -func (o *InternalIsValidHostnameOptions) Run(_ *cobra.Command, _ []string) error { +func (o *internalIsValidHostnameOptions) run(_ *cobra.Command, _ []string) error { if valid := helpers.IsValidHostName(); !valid { hostname, err := os.Hostname() return fmt.Errorf("the hostname %s is not valid. Ensure the hostname meets RFC1123 requirements https://www.rfc-editor.org/rfc/rfc1123.html, error=%w", hostname, err) @@ -410,26 +387,23 @@ func (o *InternalIsValidHostnameOptions) Run(_ *cobra.Command, _ []string) error return nil } -// InternalCrc32Options holds the command-line options for 'intenral crc32' sub-command. -type InternalCrc32Options struct{} +type internalCrc32Options struct{} -// NewInternalCrc32Command creates the `internal crc32` sub-command. -func NewInternalCrc32Command() *cobra.Command { - o := &InternalCrc32Options{} +func newInternalCrc32Command() *cobra.Command { + o := &internalCrc32Options{} cmd := &cobra.Command{ Use: "crc32 TEXT", Aliases: []string{"c"}, Short: lang.CmdInternalCrc32Short, Args: cobra.ExactArgs(1), - Run: o.Run, + Run: o.run, } return cmd } -// Run performs the execution of 'internal crc32' sub-command. -func (o *InternalCrc32Options) Run(_ *cobra.Command, args []string) { +func (o *internalCrc32Options) run(_ *cobra.Command, args []string) { text := args[0] hash := helpers.GetCRCHash(text) fmt.Printf("%d\n", hash) diff --git a/src/cmd/tools/k9s.go b/src/cmd/k9s.go similarity index 83% rename from src/cmd/tools/k9s.go rename to src/cmd/k9s.go index 80e10d2c76..d17dfb105d 100644 --- a/src/cmd/tools/k9s.go +++ b/src/cmd/k9s.go @@ -1,8 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: 2021-Present The Zarf Authors -// Package tools contains the CLI commands for Zarf. -package tools +// Package cmd contains the CLI commands for Zarf. +package cmd import ( "os" @@ -18,8 +18,7 @@ import ( //go:linkname k9sRootCmd github.com/derailed/k9s/cmd.rootCmd var k9sRootCmd *cobra.Command -// NewK9sCommand creates the `tools k9s` sub-command. -func NewK9sCommand() *cobra.Command { +func newK9sCommand() *cobra.Command { cmd := &cobra.Command{ Use: "monitor", Aliases: []string{"m", "k9s"}, diff --git a/src/cmd/tools/kubectl.go b/src/cmd/kubectl.go similarity index 78% rename from src/cmd/tools/kubectl.go rename to src/cmd/kubectl.go index b65d36b85a..8dc8067b57 100644 --- a/src/cmd/tools/kubectl.go +++ b/src/cmd/kubectl.go @@ -1,14 +1,13 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: 2021-Present The Zarf Authors -// Package tools contains the CLI commands for Zarf. -package tools +// Package cmd contains the CLI commands for Zarf. +package cmd import ( "os" "github.com/spf13/cobra" - "github.com/zarf-dev/zarf/src/cmd/common" "github.com/zarf-dev/zarf/src/config/lang" "github.com/zarf-dev/zarf/src/pkg/logger" "github.com/zarf-dev/zarf/src/pkg/message" @@ -19,8 +18,7 @@ import ( _ "k8s.io/client-go/plugin/pkg/client/auth" ) -// NewKubectlCommand creates the `tools kubectl` sub-command. -func NewKubectlCommand() *cobra.Command { +func newKubectlCommand() *cobra.Command { // Kubectl stub command. cmd := &cobra.Command{ Short: lang.CmdToolsKubectlDocs, @@ -28,7 +26,7 @@ func NewKubectlCommand() *cobra.Command { } // Only load this command if it is being called directly. - if common.IsVendorCmd(os.Args, []string{"kubectl", "k"}) { + if IsVendorCmd(os.Args, []string{"kubectl", "k"}) { // Add the kubectl command to the tools command. cmd = kubeCmd.NewDefaultKubectlCommand() diff --git a/src/cmd/package.go b/src/cmd/package.go index 3ab6cdfee4..8086fb7e9b 100644 --- a/src/cmd/package.go +++ b/src/cmd/package.go @@ -20,7 +20,6 @@ import ( "github.com/spf13/viper" "oras.land/oras-go/v2/registry" - "github.com/zarf-dev/zarf/src/cmd/common" "github.com/zarf-dev/zarf/src/config" "github.com/zarf-dev/zarf/src/config/lang" "github.com/zarf-dev/zarf/src/internal/dns" @@ -35,38 +34,35 @@ import ( "github.com/zarf-dev/zarf/src/types" ) -// NewPackageCommand creates the `package` sub-command and its nested children. -func NewPackageCommand() *cobra.Command { +func newPackageCommand() *cobra.Command { cmd := &cobra.Command{ Use: "package", Aliases: []string{"p"}, Short: lang.CmdPackageShort, } - v := common.GetViper() + v := getViper() persistentFlags := cmd.PersistentFlags() - persistentFlags.IntVar(&config.CommonOptions.OCIConcurrency, "oci-concurrency", v.GetInt(common.VPkgOCIConcurrency), lang.CmdPackageFlagConcurrency) - persistentFlags.StringVarP(&pkgConfig.PkgOpts.PublicKeyPath, "key", "k", v.GetString(common.VPkgPublicKey), lang.CmdPackageFlagFlagPublicKey) - - cmd.AddCommand(NewPackageCreateCommand(v)) - cmd.AddCommand(NewPackageDeployCommand(v)) - cmd.AddCommand(NewPackageMirrorResourcesCommand(v)) - cmd.AddCommand(NewPackageInspectCommand()) - cmd.AddCommand(NewPackageRemoveCommand(v)) - cmd.AddCommand(NewPackageListCommand()) - cmd.AddCommand(NewPackagePublishCommand(v)) - cmd.AddCommand(NewPackagePullCommand(v)) + persistentFlags.IntVar(&config.CommonOptions.OCIConcurrency, "oci-concurrency", v.GetInt(VPkgOCIConcurrency), lang.CmdPackageFlagConcurrency) + persistentFlags.StringVarP(&pkgConfig.PkgOpts.PublicKeyPath, "key", "k", v.GetString(VPkgPublicKey), lang.CmdPackageFlagFlagPublicKey) + + cmd.AddCommand(newPackageCreateCommand(v)) + cmd.AddCommand(newPackageDeployCommand(v)) + cmd.AddCommand(newPackageMirrorResourcesCommand(v)) + cmd.AddCommand(newPackageInspectCommand()) + cmd.AddCommand(newPackageRemoveCommand(v)) + cmd.AddCommand(newPackageListCommand()) + cmd.AddCommand(newPackagePublishCommand(v)) + cmd.AddCommand(newPackagePullCommand(v)) return cmd } -// PackageCreateOptions holds the command-line options for 'package create' sub-command. -type PackageCreateOptions struct{} +type packageCreateOptions struct{} -// NewPackageCreateCommand creates the `package create` sub-command. -func NewPackageCreateCommand(v *viper.Viper) *cobra.Command { - o := &PackageCreateOptions{} +func newPackageCreateCommand(v *viper.Viper) *cobra.Command { + o := &packageCreateOptions{} cmd := &cobra.Command{ Use: "create [ DIRECTORY ]", @@ -74,36 +70,36 @@ func NewPackageCreateCommand(v *viper.Viper) *cobra.Command { Args: cobra.MaximumNArgs(1), Short: lang.CmdPackageCreateShort, Long: lang.CmdPackageCreateLong, - RunE: o.Run, + RunE: o.run, } // Always require confirm flag (no viper) cmd.Flags().BoolVar(&config.CommonOptions.Confirm, "confirm", false, lang.CmdPackageCreateFlagConfirm) outputDirectory := v.GetString("package.create.output_directory") - output := v.GetString(common.VPkgCreateOutput) + output := v.GetString(VPkgCreateOutput) if outputDirectory != "" && output == "" { - v.Set(common.VPkgCreateOutput, outputDirectory) + v.Set(VPkgCreateOutput, outputDirectory) } cmd.Flags().StringVar(&pkgConfig.CreateOpts.Output, "output-directory", v.GetString("package.create.output_directory"), lang.CmdPackageCreateFlagOutput) - cmd.Flags().StringVarP(&pkgConfig.CreateOpts.Output, "output", "o", v.GetString(common.VPkgCreateOutput), lang.CmdPackageCreateFlagOutput) + cmd.Flags().StringVarP(&pkgConfig.CreateOpts.Output, "output", "o", v.GetString(VPkgCreateOutput), lang.CmdPackageCreateFlagOutput) - cmd.Flags().StringVar(&pkgConfig.CreateOpts.DifferentialPackagePath, "differential", v.GetString(common.VPkgCreateDifferential), lang.CmdPackageCreateFlagDifferential) - cmd.Flags().StringToStringVar(&pkgConfig.CreateOpts.SetVariables, "set", v.GetStringMapString(common.VPkgCreateSet), lang.CmdPackageCreateFlagSet) - cmd.Flags().BoolVarP(&pkgConfig.CreateOpts.ViewSBOM, "sbom", "s", v.GetBool(common.VPkgCreateSbom), lang.CmdPackageCreateFlagSbom) - cmd.Flags().StringVar(&pkgConfig.CreateOpts.SBOMOutputDir, "sbom-out", v.GetString(common.VPkgCreateSbomOutput), lang.CmdPackageCreateFlagSbomOut) - cmd.Flags().BoolVar(&pkgConfig.CreateOpts.SkipSBOM, "skip-sbom", v.GetBool(common.VPkgCreateSkipSbom), lang.CmdPackageCreateFlagSkipSbom) - cmd.Flags().IntVarP(&pkgConfig.CreateOpts.MaxPackageSizeMB, "max-package-size", "m", v.GetInt(common.VPkgCreateMaxPackageSize), lang.CmdPackageCreateFlagMaxPackageSize) - cmd.Flags().StringToStringVar(&pkgConfig.CreateOpts.RegistryOverrides, "registry-override", v.GetStringMapString(common.VPkgCreateRegistryOverride), lang.CmdPackageCreateFlagRegistryOverride) - cmd.Flags().StringVarP(&pkgConfig.CreateOpts.Flavor, "flavor", "f", v.GetString(common.VPkgCreateFlavor), lang.CmdPackageCreateFlagFlavor) + cmd.Flags().StringVar(&pkgConfig.CreateOpts.DifferentialPackagePath, "differential", v.GetString(VPkgCreateDifferential), lang.CmdPackageCreateFlagDifferential) + cmd.Flags().StringToStringVar(&pkgConfig.CreateOpts.SetVariables, "set", v.GetStringMapString(VPkgCreateSet), lang.CmdPackageCreateFlagSet) + cmd.Flags().BoolVarP(&pkgConfig.CreateOpts.ViewSBOM, "sbom", "s", v.GetBool(VPkgCreateSbom), lang.CmdPackageCreateFlagSbom) + cmd.Flags().StringVar(&pkgConfig.CreateOpts.SBOMOutputDir, "sbom-out", v.GetString(VPkgCreateSbomOutput), lang.CmdPackageCreateFlagSbomOut) + cmd.Flags().BoolVar(&pkgConfig.CreateOpts.SkipSBOM, "skip-sbom", v.GetBool(VPkgCreateSkipSbom), lang.CmdPackageCreateFlagSkipSbom) + cmd.Flags().IntVarP(&pkgConfig.CreateOpts.MaxPackageSizeMB, "max-package-size", "m", v.GetInt(VPkgCreateMaxPackageSize), lang.CmdPackageCreateFlagMaxPackageSize) + cmd.Flags().StringToStringVar(&pkgConfig.CreateOpts.RegistryOverrides, "registry-override", v.GetStringMapString(VPkgCreateRegistryOverride), lang.CmdPackageCreateFlagRegistryOverride) + cmd.Flags().StringVarP(&pkgConfig.CreateOpts.Flavor, "flavor", "f", v.GetString(VPkgCreateFlavor), lang.CmdPackageCreateFlagFlavor) - cmd.Flags().StringVar(&pkgConfig.CreateOpts.SigningKeyPath, "signing-key", v.GetString(common.VPkgCreateSigningKey), lang.CmdPackageCreateFlagSigningKey) - cmd.Flags().StringVar(&pkgConfig.CreateOpts.SigningKeyPassword, "signing-key-pass", v.GetString(common.VPkgCreateSigningKeyPassword), lang.CmdPackageCreateFlagSigningKeyPassword) + cmd.Flags().StringVar(&pkgConfig.CreateOpts.SigningKeyPath, "signing-key", v.GetString(VPkgCreateSigningKey), lang.CmdPackageCreateFlagSigningKey) + cmd.Flags().StringVar(&pkgConfig.CreateOpts.SigningKeyPassword, "signing-key-pass", v.GetString(VPkgCreateSigningKeyPassword), lang.CmdPackageCreateFlagSigningKeyPassword) - cmd.Flags().StringVarP(&pkgConfig.CreateOpts.SigningKeyPath, "key", "k", v.GetString(common.VPkgCreateSigningKey), lang.CmdPackageCreateFlagDeprecatedKey) - cmd.Flags().StringVar(&pkgConfig.CreateOpts.SigningKeyPassword, "key-pass", v.GetString(common.VPkgCreateSigningKeyPassword), lang.CmdPackageCreateFlagDeprecatedKeyPassword) + cmd.Flags().StringVarP(&pkgConfig.CreateOpts.SigningKeyPath, "key", "k", v.GetString(VPkgCreateSigningKey), lang.CmdPackageCreateFlagDeprecatedKey) + cmd.Flags().StringVar(&pkgConfig.CreateOpts.SigningKeyPassword, "key-pass", v.GetString(VPkgCreateSigningKeyPassword), lang.CmdPackageCreateFlagDeprecatedKeyPassword) - cmd.Flags().IntVar(&pkgConfig.PkgOpts.Retries, "retries", v.GetInt(common.VPkgRetries), lang.CmdPackageFlagRetries) + cmd.Flags().IntVar(&pkgConfig.PkgOpts.Retries, "retries", v.GetInt(VPkgRetries), lang.CmdPackageFlagRetries) errOD := cmd.Flags().MarkHidden("output-directory") if errOD != nil { @@ -121,8 +117,7 @@ func NewPackageCreateCommand(v *viper.Viper) *cobra.Command { return cmd } -// Run performs the execution of 'package create' sub-command. -func (o *PackageCreateOptions) Run(cmd *cobra.Command, args []string) error { +func (o *packageCreateOptions) run(cmd *cobra.Command, args []string) error { ctx := cmd.Context() l := logger.From(ctx) pkgConfig.CreateOpts.BaseDir = setBaseDirectory(args) @@ -135,9 +130,9 @@ func (o *PackageCreateOptions) Run(cmd *cobra.Command, args []string) error { config.CommonOptions.CachePath = config.ZarfDefaultCachePath } - v := common.GetViper() + v := getViper() pkgConfig.CreateOpts.SetVariables = helpers.TransformAndMergeMap( - v.GetStringMapString(common.VPkgCreateSet), pkgConfig.CreateOpts.SetVariables, strings.ToUpper) + v.GetStringMapString(VPkgCreateSet), pkgConfig.CreateOpts.SetVariables, strings.ToUpper) opt := packager2.CreateOptions{ Flavor: pkgConfig.CreateOpts.Flavor, @@ -155,7 +150,7 @@ func (o *PackageCreateOptions) Run(cmd *cobra.Command, args []string) error { // NOTE(mkcp): LintErrors are rendered with a table var lintErr *lint.LintError if errors.As(err, &lintErr) { - common.PrintFindings(ctx, lintErr) + PrintFindings(ctx, lintErr) } if err != nil { return fmt.Errorf("failed to create package: %w", err) @@ -163,12 +158,10 @@ func (o *PackageCreateOptions) Run(cmd *cobra.Command, args []string) error { return nil } -// PackageDeployOptions holds the command-line options for 'package deploy' sub-command. -type PackageDeployOptions struct{} +type packageDeployOptions struct{} -// NewPackageDeployCommand creates the `package deploy` sub-command. -func NewPackageDeployCommand(v *viper.Viper) *cobra.Command { - o := &PackageDeployOptions{} +func newPackageDeployCommand(v *viper.Viper) *cobra.Command { + o := &packageDeployOptions{} cmd := &cobra.Command{ Use: "deploy [ PACKAGE_SOURCE ]", @@ -176,8 +169,8 @@ func NewPackageDeployCommand(v *viper.Viper) *cobra.Command { Short: lang.CmdPackageDeployShort, Long: lang.CmdPackageDeployLong, Args: cobra.MaximumNArgs(1), - PreRun: o.PreRun, - RunE: o.Run, + PreRun: o.preRun, + RunE: o.run, } // Always require confirm flag (no viper) @@ -185,13 +178,13 @@ func NewPackageDeployCommand(v *viper.Viper) *cobra.Command { // Always require adopt-existing-resources flag (no viper) cmd.Flags().BoolVar(&pkgConfig.DeployOpts.AdoptExistingResources, "adopt-existing-resources", false, lang.CmdPackageDeployFlagAdoptExistingResources) - cmd.Flags().DurationVar(&pkgConfig.DeployOpts.Timeout, "timeout", v.GetDuration(common.VPkgDeployTimeout), lang.CmdPackageDeployFlagTimeout) + cmd.Flags().DurationVar(&pkgConfig.DeployOpts.Timeout, "timeout", v.GetDuration(VPkgDeployTimeout), lang.CmdPackageDeployFlagTimeout) - cmd.Flags().IntVar(&pkgConfig.PkgOpts.Retries, "retries", v.GetInt(common.VPkgRetries), lang.CmdPackageFlagRetries) - cmd.Flags().StringToStringVar(&pkgConfig.PkgOpts.SetVariables, "set", v.GetStringMapString(common.VPkgDeploySet), lang.CmdPackageDeployFlagSet) - cmd.Flags().StringVar(&pkgConfig.PkgOpts.OptionalComponents, "components", v.GetString(common.VPkgDeployComponents), lang.CmdPackageDeployFlagComponents) - cmd.Flags().StringVar(&pkgConfig.PkgOpts.Shasum, "shasum", v.GetString(common.VPkgDeployShasum), lang.CmdPackageDeployFlagShasum) - cmd.Flags().StringVar(&pkgConfig.PkgOpts.SGetKeyPath, "sget", v.GetString(common.VPkgDeploySget), lang.CmdPackageDeployFlagSget) + cmd.Flags().IntVar(&pkgConfig.PkgOpts.Retries, "retries", v.GetInt(VPkgRetries), lang.CmdPackageFlagRetries) + cmd.Flags().StringToStringVar(&pkgConfig.PkgOpts.SetVariables, "set", v.GetStringMapString(VPkgDeploySet), lang.CmdPackageDeployFlagSet) + cmd.Flags().StringVar(&pkgConfig.PkgOpts.OptionalComponents, "components", v.GetString(VPkgDeployComponents), lang.CmdPackageDeployFlagComponents) + cmd.Flags().StringVar(&pkgConfig.PkgOpts.Shasum, "shasum", v.GetString(VPkgDeployShasum), lang.CmdPackageDeployFlagShasum) + cmd.Flags().StringVar(&pkgConfig.PkgOpts.SGetKeyPath, "sget", v.GetString(VPkgDeploySget), lang.CmdPackageDeployFlagSget) cmd.Flags().BoolVar(&pkgConfig.PkgOpts.SkipSignatureValidation, "skip-signature-validation", false, lang.CmdPackageFlagSkipSignatureValidation) err := cmd.Flags().MarkHidden("sget") @@ -202,16 +195,14 @@ func NewPackageDeployCommand(v *viper.Viper) *cobra.Command { return cmd } -// PreRun performs the pre-run checks for 'package deploy' sub-command. -func (o *PackageDeployOptions) PreRun(_ *cobra.Command, _ []string) { +func (o *packageDeployOptions) preRun(_ *cobra.Command, _ []string) { // If --insecure was provided, set --skip-signature-validation to match if config.CommonOptions.Insecure { pkgConfig.PkgOpts.SkipSignatureValidation = true } } -// Run performs the execution of 'package deploy' sub-command. -func (o *PackageDeployOptions) Run(cmd *cobra.Command, args []string) error { +func (o *packageDeployOptions) run(cmd *cobra.Command, args []string) error { ctx := cmd.Context() packageSource, err := choosePackage(ctx, args) if err != nil { @@ -219,9 +210,9 @@ func (o *PackageDeployOptions) Run(cmd *cobra.Command, args []string) error { } pkgConfig.PkgOpts.PackageSource = packageSource - v := common.GetViper() + v := getViper() pkgConfig.PkgOpts.SetVariables = helpers.TransformAndMergeMap( - v.GetStringMapString(common.VPkgDeploySet), pkgConfig.PkgOpts.SetVariables, strings.ToUpper) + v.GetStringMapString(VPkgDeploySet), pkgConfig.PkgOpts.SetVariables, strings.ToUpper) pkgClient, err := packager.New(&pkgConfig, packager.WithContext(cmd.Context())) if err != nil { @@ -235,12 +226,10 @@ func (o *PackageDeployOptions) Run(cmd *cobra.Command, args []string) error { return nil } -// PackageMirrorResourcesOptions holds the command-line options for 'package mirror-resources' sub-command. -type PackageMirrorResourcesOptions struct{} +type packageMirrorResourcesOptions struct{} -// NewPackageMirrorResourcesCommand creates the `package mirror-resources` sub-command. -func NewPackageMirrorResourcesCommand(v *viper.Viper) *cobra.Command { - o := &PackageMirrorResourcesOptions{} +func newPackageMirrorResourcesCommand(v *viper.Viper) *cobra.Command { + o := &packageMirrorResourcesOptions{} cmd := &cobra.Command{ Use: "mirror-resources [ PACKAGE_SOURCE ]", @@ -249,14 +238,14 @@ func NewPackageMirrorResourcesCommand(v *viper.Viper) *cobra.Command { Long: lang.CmdPackageMirrorLong, Example: lang.CmdPackageMirrorExample, Args: cobra.MaximumNArgs(1), - PreRun: o.PreRun, - RunE: o.Run, + PreRun: o.preRun, + RunE: o.run, } // Init package variable defaults that are non-zero values - // NOTE: these are not in common.setDefaults so that zarf tools update-creds does not erroneously update values back to the default - v.SetDefault(common.VInitGitPushUser, types.ZarfGitPushUser) - v.SetDefault(common.VInitRegistryPushUser, types.ZarfRegistryPushUser) + // NOTE: these are not in setDefaults so that zarf tools update-creds does not erroneously update values back to the default + v.SetDefault(VInitGitPushUser, types.ZarfGitPushUser) + v.SetDefault(VInitRegistryPushUser, types.ZarfRegistryPushUser) // Always require confirm flag (no viper) cmd.Flags().BoolVar(&config.CommonOptions.Confirm, "confirm", false, lang.CmdPackageDeployFlagConfirm) @@ -265,32 +254,30 @@ func NewPackageMirrorResourcesCommand(v *viper.Viper) *cobra.Command { cmd.Flags().BoolVar(&pkgConfig.MirrorOpts.NoImgChecksum, "no-img-checksum", false, lang.CmdPackageMirrorFlagNoChecksum) cmd.Flags().BoolVar(&pkgConfig.PkgOpts.SkipSignatureValidation, "skip-signature-validation", false, lang.CmdPackageFlagSkipSignatureValidation) - cmd.Flags().IntVar(&pkgConfig.PkgOpts.Retries, "retries", v.GetInt(common.VPkgRetries), lang.CmdPackageFlagRetries) - cmd.Flags().StringVar(&pkgConfig.PkgOpts.OptionalComponents, "components", v.GetString(common.VPkgDeployComponents), lang.CmdPackageMirrorFlagComponents) + cmd.Flags().IntVar(&pkgConfig.PkgOpts.Retries, "retries", v.GetInt(VPkgRetries), lang.CmdPackageFlagRetries) + cmd.Flags().StringVar(&pkgConfig.PkgOpts.OptionalComponents, "components", v.GetString(VPkgDeployComponents), lang.CmdPackageMirrorFlagComponents) // Flags for using an external Git server - cmd.Flags().StringVar(&pkgConfig.InitOpts.GitServer.Address, "git-url", v.GetString(common.VInitGitURL), lang.CmdInitFlagGitURL) - cmd.Flags().StringVar(&pkgConfig.InitOpts.GitServer.PushUsername, "git-push-username", v.GetString(common.VInitGitPushUser), lang.CmdInitFlagGitPushUser) - cmd.Flags().StringVar(&pkgConfig.InitOpts.GitServer.PushPassword, "git-push-password", v.GetString(common.VInitGitPushPass), lang.CmdInitFlagGitPushPass) + cmd.Flags().StringVar(&pkgConfig.InitOpts.GitServer.Address, "git-url", v.GetString(VInitGitURL), lang.CmdInitFlagGitURL) + cmd.Flags().StringVar(&pkgConfig.InitOpts.GitServer.PushUsername, "git-push-username", v.GetString(VInitGitPushUser), lang.CmdInitFlagGitPushUser) + cmd.Flags().StringVar(&pkgConfig.InitOpts.GitServer.PushPassword, "git-push-password", v.GetString(VInitGitPushPass), lang.CmdInitFlagGitPushPass) // Flags for using an external registry - cmd.Flags().StringVar(&pkgConfig.InitOpts.RegistryInfo.Address, "registry-url", v.GetString(common.VInitRegistryURL), lang.CmdInitFlagRegURL) - cmd.Flags().StringVar(&pkgConfig.InitOpts.RegistryInfo.PushUsername, "registry-push-username", v.GetString(common.VInitRegistryPushUser), lang.CmdInitFlagRegPushUser) - cmd.Flags().StringVar(&pkgConfig.InitOpts.RegistryInfo.PushPassword, "registry-push-password", v.GetString(common.VInitRegistryPushPass), lang.CmdInitFlagRegPushPass) + cmd.Flags().StringVar(&pkgConfig.InitOpts.RegistryInfo.Address, "registry-url", v.GetString(VInitRegistryURL), lang.CmdInitFlagRegURL) + cmd.Flags().StringVar(&pkgConfig.InitOpts.RegistryInfo.PushUsername, "registry-push-username", v.GetString(VInitRegistryPushUser), lang.CmdInitFlagRegPushUser) + cmd.Flags().StringVar(&pkgConfig.InitOpts.RegistryInfo.PushPassword, "registry-push-password", v.GetString(VInitRegistryPushPass), lang.CmdInitFlagRegPushPass) return cmd } -// PreRun performs the pre-run checks for 'package mirror-resources' sub-command. -func (o *PackageMirrorResourcesOptions) PreRun(_ *cobra.Command, _ []string) { +func (o *packageMirrorResourcesOptions) preRun(_ *cobra.Command, _ []string) { // If --insecure was provided, set --skip-signature-validation to match if config.CommonOptions.Insecure { pkgConfig.PkgOpts.SkipSignatureValidation = true } } -// Run performs the execution of 'package mirror-resources' sub-command. -func (o *PackageMirrorResourcesOptions) Run(cmd *cobra.Command, args []string) (err error) { +func (o *packageMirrorResourcesOptions) run(cmd *cobra.Command, args []string) (err error) { ctx := cmd.Context() var c *cluster.Cluster if dns.IsServiceURL(pkgConfig.InitOpts.RegistryInfo.Address) || dns.IsServiceURL(pkgConfig.InitOpts.GitServer.Address) { @@ -341,20 +328,18 @@ func (o *PackageMirrorResourcesOptions) Run(cmd *cobra.Command, args []string) ( return nil } -// PackageInspectOptions holds the command-line options for 'package inspect' sub-command. -type PackageInspectOptions struct{} +type packageInspectOptions struct{} -// NewPackageInspectCommand creates the `package inspect` sub-command. -func NewPackageInspectCommand() *cobra.Command { - o := &PackageInspectOptions{} +func newPackageInspectCommand() *cobra.Command { + o := &packageInspectOptions{} cmd := &cobra.Command{ Use: "inspect [ PACKAGE_SOURCE ]", Aliases: []string{"i"}, Short: lang.CmdPackageInspectShort, Long: lang.CmdPackageInspectLong, Args: cobra.MaximumNArgs(1), - PreRun: o.PreRun, - RunE: o.Run, + PreRun: o.preRun, + RunE: o.run, } cmd.Flags().BoolVarP(&pkgConfig.InspectOpts.ViewSBOM, "sbom", "s", false, lang.CmdPackageInspectFlagSbom) @@ -365,16 +350,14 @@ func NewPackageInspectCommand() *cobra.Command { return cmd } -// PreRun performs the pre-run checks for 'package inspect' sub-command. -func (o *PackageInspectOptions) PreRun(_ *cobra.Command, _ []string) { +func (o *packageInspectOptions) preRun(_ *cobra.Command, _ []string) { // If --insecure was provided, set --skip-signature-validation to match if config.CommonOptions.Insecure { pkgConfig.PkgOpts.SkipSignatureValidation = true } } -// Run performs the execution of 'package inspect' sub-command. -func (o *PackageInspectOptions) Run(cmd *cobra.Command, args []string) error { +func (o *packageInspectOptions) run(cmd *cobra.Command, args []string) error { ctx := cmd.Context() if pkgConfig.InspectOpts.ListImages && (pkgConfig.InspectOpts.SBOMOutputDir != "" || pkgConfig.InspectOpts.ViewSBOM) { @@ -423,25 +406,22 @@ func (o *PackageInspectOptions) Run(cmd *cobra.Command, args []string) error { return nil } -// PackageListOptions holds the command-line options for 'package list' sub-command. -type PackageListOptions struct{} +type packageListOptions struct{} -// NewPackageListCommand creates the `package list` sub-command. -func NewPackageListCommand() *cobra.Command { - o := &PackageListOptions{} +func newPackageListCommand() *cobra.Command { + o := &packageListOptions{} cmd := &cobra.Command{ Use: "list", Aliases: []string{"l", "ls"}, Short: lang.CmdPackageListShort, - RunE: o.Run, + RunE: o.run, } return cmd } -// Run performs the execution of 'package list' sub-command. -func (o *PackageListOptions) Run(cmd *cobra.Command, _ []string) error { +func (o *packageListOptions) run(cmd *cobra.Command, _ []string) error { timeoutCtx, cancel := context.WithTimeout(cmd.Context(), cluster.DefaultTimeout) defer cancel() c, err := cluster.NewClusterWithWait(timeoutCtx) @@ -480,12 +460,10 @@ func (o *PackageListOptions) Run(cmd *cobra.Command, _ []string) error { return nil } -// PackageRemoveOptions holds the command-line options for 'package remove' sub-command. -type PackageRemoveOptions struct{} +type packageRemoveOptions struct{} -// NewPackageRemoveCommand creates the `package remove` sub-command. -func NewPackageRemoveCommand(v *viper.Viper) *cobra.Command { - o := &PackageRemoveOptions{} +func newPackageRemoveCommand(v *viper.Viper) *cobra.Command { + o := &packageRemoveOptions{} cmd := &cobra.Command{ Use: "remove { PACKAGE_SOURCE | PACKAGE_NAME } --confirm", @@ -493,29 +471,27 @@ func NewPackageRemoveCommand(v *viper.Viper) *cobra.Command { Args: cobra.MaximumNArgs(1), Short: lang.CmdPackageRemoveShort, Long: lang.CmdPackageRemoveLong, - PreRun: o.PreRun, - RunE: o.Run, + PreRun: o.preRun, + RunE: o.run, ValidArgsFunction: getPackageCompletionArgs, } cmd.Flags().BoolVar(&config.CommonOptions.Confirm, "confirm", false, lang.CmdPackageRemoveFlagConfirm) _ = cmd.MarkFlagRequired("confirm") - cmd.Flags().StringVar(&pkgConfig.PkgOpts.OptionalComponents, "components", v.GetString(common.VPkgDeployComponents), lang.CmdPackageRemoveFlagComponents) + cmd.Flags().StringVar(&pkgConfig.PkgOpts.OptionalComponents, "components", v.GetString(VPkgDeployComponents), lang.CmdPackageRemoveFlagComponents) cmd.Flags().BoolVar(&pkgConfig.PkgOpts.SkipSignatureValidation, "skip-signature-validation", false, lang.CmdPackageFlagSkipSignatureValidation) return cmd } -// PreRun performs the pre-run checks for 'package remove' sub-command. -func (o *PackageRemoveOptions) PreRun(_ *cobra.Command, _ []string) { +func (o *packageRemoveOptions) preRun(_ *cobra.Command, _ []string) { // If --insecure was provided, set --skip-signature-validation to match if config.CommonOptions.Insecure { pkgConfig.PkgOpts.SkipSignatureValidation = true } } -// Run performs the execution of 'package remove' sub-command. -func (o *PackageRemoveOptions) Run(cmd *cobra.Command, args []string) error { +func (o *packageRemoveOptions) run(cmd *cobra.Command, args []string) error { ctx := cmd.Context() packageSource, err := choosePackage(ctx, args) if err != nil { @@ -540,40 +516,36 @@ func (o *PackageRemoveOptions) Run(cmd *cobra.Command, args []string) error { return nil } -// PackagePublishOptions holds the command-line options for 'package publish' sub-command. -type PackagePublishOptions struct{} +type packagePublishOptions struct{} -// NewPackagePublishCommand creates the `package publish` sub-command. -func NewPackagePublishCommand(v *viper.Viper) *cobra.Command { - o := &PackagePublishOptions{} +func newPackagePublishCommand(v *viper.Viper) *cobra.Command { + o := &packagePublishOptions{} cmd := &cobra.Command{ Use: "publish { PACKAGE_SOURCE | SKELETON DIRECTORY } REPOSITORY", Short: lang.CmdPackagePublishShort, Example: lang.CmdPackagePublishExample, Args: cobra.ExactArgs(2), - PreRun: o.PreRun, - RunE: o.Run, + PreRun: o.preRun, + RunE: o.run, } - cmd.Flags().StringVar(&pkgConfig.PublishOpts.SigningKeyPath, "signing-key", v.GetString(common.VPkgPublishSigningKey), lang.CmdPackagePublishFlagSigningKey) - cmd.Flags().StringVar(&pkgConfig.PublishOpts.SigningKeyPassword, "signing-key-pass", v.GetString(common.VPkgPublishSigningKeyPassword), lang.CmdPackagePublishFlagSigningKeyPassword) + cmd.Flags().StringVar(&pkgConfig.PublishOpts.SigningKeyPath, "signing-key", v.GetString(VPkgPublishSigningKey), lang.CmdPackagePublishFlagSigningKey) + cmd.Flags().StringVar(&pkgConfig.PublishOpts.SigningKeyPassword, "signing-key-pass", v.GetString(VPkgPublishSigningKeyPassword), lang.CmdPackagePublishFlagSigningKeyPassword) cmd.Flags().BoolVar(&pkgConfig.PkgOpts.SkipSignatureValidation, "skip-signature-validation", false, lang.CmdPackageFlagSkipSignatureValidation) cmd.Flags().BoolVar(&config.CommonOptions.Confirm, "confirm", false, lang.CmdPackagePublishFlagConfirm) return cmd } -// PreRun performs the pre-run checks for 'package publish' sub-command. -func (o *PackagePublishOptions) PreRun(_ *cobra.Command, _ []string) { +func (o *packagePublishOptions) preRun(_ *cobra.Command, _ []string) { // If --insecure was provided, set --skip-signature-validation to match if config.CommonOptions.Insecure { pkgConfig.PkgOpts.SkipSignatureValidation = true } } -// Run performs the execution of 'package publish' sub-command. -func (o *PackagePublishOptions) Run(cmd *cobra.Command, args []string) error { +func (o *packagePublishOptions) run(cmd *cobra.Command, args []string) error { pkgConfig.PkgOpts.PackageSource = args[0] if !helpers.IsOCIURL(args[1]) { @@ -608,30 +580,27 @@ func (o *PackagePublishOptions) Run(cmd *cobra.Command, args []string) error { return nil } -// PackagePullOptions holds the command-line options for 'package pull' sub-command. -type PackagePullOptions struct{} +type packagePullOptions struct{} -// NewPackagePullCommand creates the `package pull` sub-command. -func NewPackagePullCommand(v *viper.Viper) *cobra.Command { - o := &PackagePullOptions{} +func newPackagePullCommand(v *viper.Viper) *cobra.Command { + o := &packagePullOptions{} cmd := &cobra.Command{ Use: "pull PACKAGE_SOURCE", Short: lang.CmdPackagePullShort, Example: lang.CmdPackagePullExample, Args: cobra.ExactArgs(1), - RunE: o.Run, + RunE: o.run, } cmd.Flags().StringVar(&pkgConfig.PkgOpts.Shasum, "shasum", "", lang.CmdPackagePullFlagShasum) - cmd.Flags().StringVarP(&pkgConfig.PullOpts.OutputDirectory, "output-directory", "o", v.GetString(common.VPkgPullOutputDir), lang.CmdPackagePullFlagOutputDirectory) + cmd.Flags().StringVarP(&pkgConfig.PullOpts.OutputDirectory, "output-directory", "o", v.GetString(VPkgPullOutputDir), lang.CmdPackagePullFlagOutputDirectory) cmd.Flags().BoolVar(&pkgConfig.PkgOpts.SkipSignatureValidation, "skip-signature-validation", false, lang.CmdPackageFlagSkipSignatureValidation) return cmd } -// Run performs the execution of 'package pull' sub-command. -func (o *PackagePullOptions) Run(cmd *cobra.Command, args []string) error { +func (o *packagePullOptions) run(cmd *cobra.Command, args []string) error { outputDir := pkgConfig.PullOpts.OutputDirectory if outputDir == "" { wd, err := os.Getwd() diff --git a/src/cmd/root.go b/src/cmd/root.go index eeb44a91b9..424c6f5597 100644 --- a/src/cmd/root.go +++ b/src/cmd/root.go @@ -15,14 +15,11 @@ import ( "strings" "time" - "github.com/zarf-dev/zarf/src/cmd/say" "github.com/zarf-dev/zarf/src/pkg/logger" "github.com/pterm/pterm" "github.com/spf13/cobra" - "github.com/zarf-dev/zarf/src/cmd/common" - "github.com/zarf-dev/zarf/src/cmd/tools" "github.com/zarf-dev/zarf/src/config" "github.com/zarf-dev/zarf/src/config/lang" "github.com/zarf-dev/zarf/src/pkg/message" @@ -54,7 +51,7 @@ func preRun(cmd *cobra.Command, _ []string) error { } // Skip for vendor only commands - if common.CheckVendorOnlyFromPath(cmd) { + if checkVendorOnlyFromPath(cmd) { return nil } @@ -102,7 +99,7 @@ func preRun(cmd *cobra.Command, _ []string) error { } // Print out config location - err = common.PrintViperConfigUsed(cmd.Context()) + err = PrintViperConfigUsed(cmd.Context()) if err != nil { return err } @@ -135,26 +132,24 @@ func NewZarfCommand() *cobra.Command { // to ensure the config defaulting doesn't kick in, and inject values // into zart tools update-creds command // see https://github.com/zarf-dev/zarf/pull/3340#discussion_r1889221826 - rootCmd.AddCommand(tools.NewToolsCommand()) + rootCmd.AddCommand(newToolsCommand()) // TODO(soltysh): consider adding command groups - rootCmd.AddCommand(NewConnectCommand()) - rootCmd.AddCommand(NewDestroyCommand()) - rootCmd.AddCommand(NewDevCommand()) - rootCmd.AddCommand(NewInitCommand()) - rootCmd.AddCommand(NewInternalCommand(rootCmd)) - rootCmd.AddCommand(NewPackageCommand()) + rootCmd.AddCommand(newConnectCommand()) + rootCmd.AddCommand(sayCommand()) + rootCmd.AddCommand(newDestroyCommand()) + rootCmd.AddCommand(newDevCommand()) + rootCmd.AddCommand(newInitCommand()) + rootCmd.AddCommand(newInternalCommand(rootCmd)) + rootCmd.AddCommand(newPackageCommand()) - rootCmd.AddCommand(NewVersionCommand()) + rootCmd.AddCommand(newVersionCommand()) return rootCmd } // Execute is the entrypoint for the CLI. func Execute(ctx context.Context) { - // Add `zarf say` - rootCmd.AddCommand(say.Command()) - cmd, err := rootCmd.ExecuteContextC(ctx) if err == nil { return @@ -180,28 +175,28 @@ func Execute(ctx context.Context) { func init() { // Skip for vendor-only commands - if common.CheckVendorOnlyFromArgs() { + if checkVendorOnlyFromArgs() { return } - v := common.GetViper() + v := getViper() // Logs - rootCmd.PersistentFlags().StringVarP(&LogLevelCLI, "log-level", "l", v.GetString(common.VLogLevel), lang.RootCmdFlagLogLevel) - rootCmd.PersistentFlags().StringVar(&LogFormat, "log-format", v.GetString(common.VLogFormat), "[beta] Select a logging format. Defaults to 'console'. Valid options are: 'console', 'json', 'dev', 'legacy'. The legacy option will be removed in a coming release") - rootCmd.PersistentFlags().BoolVar(&SkipLogFile, "no-log-file", v.GetBool(common.VNoLogFile), lang.RootCmdFlagSkipLogFile) - rootCmd.PersistentFlags().BoolVar(&message.NoProgress, "no-progress", v.GetBool(common.VNoProgress), lang.RootCmdFlagNoProgress) - rootCmd.PersistentFlags().BoolVar(&NoColor, "no-color", v.GetBool(common.VNoColor), lang.RootCmdFlagNoColor) + rootCmd.PersistentFlags().StringVarP(&LogLevelCLI, "log-level", "l", v.GetString(VLogLevel), lang.RootCmdFlagLogLevel) + rootCmd.PersistentFlags().StringVar(&LogFormat, "log-format", v.GetString(VLogFormat), "[beta] Select a logging format. Defaults to 'console'. Valid options are: 'console', 'json', 'dev', 'legacy'. The legacy option will be removed in a coming release") + rootCmd.PersistentFlags().BoolVar(&SkipLogFile, "no-log-file", v.GetBool(VNoLogFile), lang.RootCmdFlagSkipLogFile) + rootCmd.PersistentFlags().BoolVar(&message.NoProgress, "no-progress", v.GetBool(VNoProgress), lang.RootCmdFlagNoProgress) + rootCmd.PersistentFlags().BoolVar(&NoColor, "no-color", v.GetBool(VNoColor), lang.RootCmdFlagNoColor) - rootCmd.PersistentFlags().StringVarP(&config.CLIArch, "architecture", "a", v.GetString(common.VArchitecture), lang.RootCmdFlagArch) - rootCmd.PersistentFlags().StringVar(&config.CommonOptions.CachePath, "zarf-cache", v.GetString(common.VZarfCache), lang.RootCmdFlagCachePath) - rootCmd.PersistentFlags().StringVar(&config.CommonOptions.TempDirectory, "tmpdir", v.GetString(common.VTmpDir), lang.RootCmdFlagTempDir) + rootCmd.PersistentFlags().StringVarP(&config.CLIArch, "architecture", "a", v.GetString(VArchitecture), lang.RootCmdFlagArch) + rootCmd.PersistentFlags().StringVar(&config.CommonOptions.CachePath, "zarf-cache", v.GetString(VZarfCache), lang.RootCmdFlagCachePath) + rootCmd.PersistentFlags().StringVar(&config.CommonOptions.TempDirectory, "tmpdir", v.GetString(VTmpDir), lang.RootCmdFlagTempDir) // Security - rootCmd.PersistentFlags().BoolVar(&config.CommonOptions.Insecure, "insecure", v.GetBool(common.VInsecure), lang.RootCmdFlagInsecure) + rootCmd.PersistentFlags().BoolVar(&config.CommonOptions.Insecure, "insecure", v.GetBool(VInsecure), lang.RootCmdFlagInsecure) rootCmd.PersistentFlags().MarkDeprecated("insecure", "please use --plain-http, --insecure-skip-tls-verify, or --skip-signature-validation instead.") - rootCmd.PersistentFlags().BoolVar(&config.CommonOptions.PlainHTTP, "plain-http", v.GetBool(common.VPlainHTTP), lang.RootCmdFlagPlainHTTP) - rootCmd.PersistentFlags().BoolVar(&config.CommonOptions.InsecureSkipTLSVerify, "insecure-skip-tls-verify", v.GetBool(common.VInsecureSkipTLSVerify), lang.RootCmdFlagInsecureSkipTLSVerify) + rootCmd.PersistentFlags().BoolVar(&config.CommonOptions.PlainHTTP, "plain-http", v.GetBool(VPlainHTTP), lang.RootCmdFlagPlainHTTP) + rootCmd.PersistentFlags().BoolVar(&config.CommonOptions.InsecureSkipTLSVerify, "insecure-skip-tls-verify", v.GetBool(VInsecureSkipTLSVerify), lang.RootCmdFlagInsecureSkipTLSVerify) } // setup Logger handles creating a logger and setting it as the global default. diff --git a/src/cmd/say/say.go b/src/cmd/say.go similarity index 99% rename from src/cmd/say/say.go rename to src/cmd/say.go index 94daed409f..08a81b2878 100644 --- a/src/cmd/say/say.go +++ b/src/cmd/say.go @@ -1,8 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: 2021-Present The Zarf Authors -// Package say prints out the adorable creature we all know and love. -package say +// Package cmd contains the CLI commands for Zarf. +package cmd import ( "fmt" @@ -11,14 +11,11 @@ import ( "github.com/spf13/cobra" ) -// Command prints out the Zarf logo. -func Command() *cobra.Command { +func sayCommand() *cobra.Command { return &cobra.Command{ Use: "say", Short: "Print Zarf logo", Long: "Print out the adorable Zarf logo", - // HACK(mkcp): Hidden is a workaround until we update `test-docs-and-schema` for the new command and flags. - Hidden: true, RunE: func(_ *cobra.Command, _ []string) error { _, err := fmt.Fprintln(os.Stderr, logo()) return err diff --git a/src/cmd/tools/syft.go b/src/cmd/syft.go similarity index 70% rename from src/cmd/tools/syft.go rename to src/cmd/syft.go index 7822ea55e8..b998ffcef3 100644 --- a/src/cmd/tools/syft.go +++ b/src/cmd/syft.go @@ -1,8 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: 2021-Present The Zarf Authors -// Package tools contains the CLI commands for Zarf. -package tools +// Package cmd contains the CLI commands for Zarf. +package cmd import ( "github.com/anchore/clio" @@ -11,11 +11,10 @@ import ( "github.com/zarf-dev/zarf/src/config/lang" ) -// ldflags github.com/zarf-dev/zarf/src/cmd/tools.syftVersion=x.x.x +// ldflags github.com/zarf-dev/zarf/src/cmd.syftVersion=x.x.x var syftVersion string -// NewSbomCommand creates the `tools sbom` sub-command. -func NewSbomCommand() *cobra.Command { +func newSbomCommand() *cobra.Command { cmd := syftCLI.Command(clio.Identification{ Name: "syft", Version: syftVersion, diff --git a/src/cmd/common/table.go b/src/cmd/table.go similarity index 93% rename from src/cmd/common/table.go rename to src/cmd/table.go index 596c9dc3af..9a23528ba6 100644 --- a/src/cmd/common/table.go +++ b/src/cmd/table.go @@ -1,12 +1,12 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: 2021-Present The Zarf Authors -package common +// Package cmd contains the CLI commands for Zarf. +package cmd import ( "context" "fmt" - "os" "path/filepath" "github.com/defenseunicorns/pkg/helpers/v2" @@ -16,9 +16,6 @@ import ( "github.com/zarf-dev/zarf/src/pkg/message" ) -// OutputWriter provides a writer to stdout for user-focused output -var OutputWriter = os.Stdout - // PrintFindings prints the findings in the LintError as a table. func PrintFindings(ctx context.Context, lintErr *lint.LintError) { mapOfFindingsByPath := lint.GroupFindingsByPath(lintErr.Findings, lintErr.PackageName) diff --git a/src/cmd/tools.go b/src/cmd/tools.go new file mode 100644 index 0000000000..0e81d09589 --- /dev/null +++ b/src/cmd/tools.go @@ -0,0 +1,50 @@ +// SPDX-License-Identifier: Apache-2.0 +// SPDX-FileCopyrightText: 2021-Present The Zarf Authors + +// Package cmd contains the CLI commands for Zarf. +package cmd + +import ( + "fmt" + + "github.com/spf13/cobra" + "github.com/zarf-dev/zarf/src/config/lang" +) + +func newToolsCommand() *cobra.Command { + cmd := &cobra.Command{ + Use: "tools", + Aliases: []string{"t"}, + Short: lang.CmdToolsShort, + } + + v := getViper() + + cmd.AddCommand(newArchiverCommand()) + cmd.AddCommand(newRegistryCommand()) + cmd.AddCommand(newHelmCommand()) + cmd.AddCommand(newK9sCommand()) + cmd.AddCommand(newKubectlCommand()) + cmd.AddCommand(newSbomCommand()) + cmd.AddCommand(newWaitForCommand()) + cmd.AddCommand(newYQCommand()) + cmd.AddCommand(newGetCredsCommand()) + cmd.AddCommand(newUpdateCredsCommand(v)) + cmd.AddCommand(newClearCacheCommand()) + cmd.AddCommand(newDownloadInitCommand()) + cmd.AddCommand(newGenPKICommand()) + cmd.AddCommand(newGenKeyCommand()) + + return cmd +} + +func newToolsVersionCmd(name, version string) *cobra.Command { + return &cobra.Command{ + Use: "version", + Args: cobra.NoArgs, + Short: lang.CmdToolsVersionShort, + Run: func(cmd *cobra.Command, _ []string) { + cmd.Println(fmt.Sprintf("%s %s", name, version)) + }, + } +} diff --git a/src/cmd/tools/common.go b/src/cmd/tools/common.go deleted file mode 100644 index 4633d0dfba..0000000000 --- a/src/cmd/tools/common.go +++ /dev/null @@ -1,53 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// SPDX-FileCopyrightText: 2021-Present The Zarf Authors - -// Package tools contains the CLI commands for Zarf. -package tools - -import ( - "fmt" - - "github.com/spf13/cobra" - "github.com/zarf-dev/zarf/src/cmd/common" - "github.com/zarf-dev/zarf/src/config/lang" -) - -// NewToolsCommand creates the `tools` sub-command and its nested children. -func NewToolsCommand() *cobra.Command { - cmd := &cobra.Command{ - Use: "tools", - Aliases: []string{"t"}, - Short: lang.CmdToolsShort, - } - - v := common.GetViper() - - cmd.AddCommand(NewArchiverCommand()) - cmd.AddCommand(NewRegistryCommand()) - cmd.AddCommand(NewHelmCommand()) - cmd.AddCommand(NewK9sCommand()) - cmd.AddCommand(NewKubectlCommand()) - cmd.AddCommand(NewSbomCommand()) - cmd.AddCommand(NewWaitForCommand()) - cmd.AddCommand(NewYQCommand()) - cmd.AddCommand(NewGetCredsCommand()) - cmd.AddCommand(NewUpdateCredsCommand(v)) - cmd.AddCommand(NewClearCacheCommand()) - cmd.AddCommand(NewDownloadInitCommand()) - cmd.AddCommand(NewGenPKICommand()) - cmd.AddCommand(NewGenKeyCommand()) - - return cmd -} - -// newVersionCmd is a generic version command for tools -func newVersionCmd(name, version string) *cobra.Command { - return &cobra.Command{ - Use: "version", - Args: cobra.NoArgs, - Short: lang.CmdToolsVersionShort, - Run: func(cmd *cobra.Command, _ []string) { - cmd.Println(fmt.Sprintf("%s %s", name, version)) - }, - } -} diff --git a/src/cmd/common/vendor.go b/src/cmd/vendor.go similarity index 77% rename from src/cmd/common/vendor.go rename to src/cmd/vendor.go index a8ff1db5ad..d0b30a182d 100644 --- a/src/cmd/common/vendor.go +++ b/src/cmd/vendor.go @@ -1,8 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: 2021-Present The Zarf Authors -// Package common handles command configuration across all commands -package common +// Package cmd contains the CLI commands for Zarf. +package cmd import ( "os" @@ -34,14 +34,14 @@ var vendorCmds = []string{ "yq", } -// CheckVendorOnlyFromArgs checks if the command being run is a vendor-only command -func CheckVendorOnlyFromArgs() bool { +// checkVendorOnlyFromArgs checks if the command being run is a vendor-only command +func checkVendorOnlyFromArgs() bool { // Check for "zarf tools|t " where is in the vendorCmd list return IsVendorCmd(os.Args, vendorCmds) } -// CheckVendorOnlyFromPath checks if the cobra command is a vendor-only command -func CheckVendorOnlyFromPath(cmd *cobra.Command) bool { +// checkVendorOnlyFromPath checks if the cobra command is a vendor-only command +func checkVendorOnlyFromPath(cmd *cobra.Command) bool { args := strings.Split(cmd.CommandPath(), " ") // Check for "zarf tools|t " where is in the vendorCmd list return IsVendorCmd(args, vendorCmds) diff --git a/src/cmd/version.go b/src/cmd/version.go index c98d8a6552..be066a8bae 100644 --- a/src/cmd/version.go +++ b/src/cmd/version.go @@ -19,21 +19,19 @@ import ( "github.com/zarf-dev/zarf/src/config/lang" ) -// VersionOptions holds the command-line options for 'version' sub-command. -type VersionOptions struct { +type versionOptions struct { outputFormat string } -// NewVersionCommand creates the `version` sub-command. -func NewVersionCommand() *cobra.Command { - o := VersionOptions{} +func newVersionCommand() *cobra.Command { + o := versionOptions{} cmd := &cobra.Command{ Use: "version", Aliases: []string{"v"}, Short: lang.CmdVersionShort, Long: lang.CmdVersionLong, - RunE: o.Run, + RunE: o.run, } cmd.Flags().StringVarP(&o.outputFormat, "output", "o", "", "Output format (yaml|json)") @@ -41,8 +39,7 @@ func NewVersionCommand() *cobra.Command { return cmd } -// Run performs the execution of 'version' sub-command. -func (o *VersionOptions) Run(_ *cobra.Command, _ []string) error { +func (o *versionOptions) run(_ *cobra.Command, _ []string) error { if o.outputFormat == "" { fmt.Println(config.CLIVersion) return nil diff --git a/src/cmd/common/viper.go b/src/cmd/viper.go similarity index 96% rename from src/cmd/common/viper.go rename to src/cmd/viper.go index 6b3ad273cf..d2c48e06ec 100644 --- a/src/cmd/common/viper.go +++ b/src/cmd/viper.go @@ -1,8 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: 2021-Present The Zarf Authors -// Package common handles command configuration across all commands -package common +// Package cmd contains the CLI commands for Zarf. +package cmd import ( "context" @@ -121,7 +121,7 @@ func initViper() *viper.Viper { v = viper.New() // Skip for vendor-only commands or the version command - if CheckVendorOnlyFromArgs() || isVersionCmd() { + if checkVendorOnlyFromArgs() || isVersionCmd() { return v } @@ -152,8 +152,8 @@ func initViper() *viper.Viper { return v } -// GetViper returns the viper singleton -func GetViper() *viper.Viper { +// getViper returns the viper singleton +func getViper() *viper.Viper { if v == nil { v = initViper() } diff --git a/src/cmd/tools/wait.go b/src/cmd/wait.go similarity index 78% rename from src/cmd/tools/wait.go rename to src/cmd/wait.go index f58b87376e..c73be6e37c 100644 --- a/src/cmd/tools/wait.go +++ b/src/cmd/wait.go @@ -1,8 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: 2021-Present The Zarf Authors -// Package tools contains the CLI commands for Zarf. -package tools +// Package cmd contains the CLI commands for Zarf. +package cmd import ( "fmt" @@ -17,15 +17,13 @@ import ( _ "k8s.io/client-go/plugin/pkg/client/auth" ) -// WaitForOptions holds the command-line options for 'tools registry' sub-command. -type WaitForOptions struct { +type waitForOptions struct { waitTimeout string waitNamespace string } -// NewWaitForCommand creates the `tools wait-for` sub-command. -func NewWaitForCommand() *cobra.Command { - o := WaitForOptions{} +func newWaitForCommand() *cobra.Command { + o := waitForOptions{} cmd := &cobra.Command{ Use: "wait-for { KIND | PROTOCOL } { NAME | SELECTOR | URI } { CONDITION | HTTP_CODE }", Aliases: []string{"w", "wait"}, @@ -33,7 +31,7 @@ func NewWaitForCommand() *cobra.Command { Long: lang.CmdToolsWaitForLong, Example: lang.CmdToolsWaitForExample, Args: cobra.MinimumNArgs(1), - RunE: o.Run, + RunE: o.run, } cmd.Flags().StringVar(&o.waitTimeout, "timeout", "5m", lang.CmdToolsWaitForFlagTimeout) @@ -43,8 +41,7 @@ func NewWaitForCommand() *cobra.Command { return cmd } -// Run performs the execution of 'tools wait-for' sub-command. -func (o *WaitForOptions) Run(_ *cobra.Command, args []string) error { +func (o *waitForOptions) run(_ *cobra.Command, args []string) error { // Parse the timeout string timeout, err := time.ParseDuration(o.waitTimeout) if err != nil { diff --git a/src/cmd/tools/yq.go b/src/cmd/yq.go similarity index 74% rename from src/cmd/tools/yq.go rename to src/cmd/yq.go index 3528980702..f2139b0759 100644 --- a/src/cmd/tools/yq.go +++ b/src/cmd/yq.go @@ -1,8 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: 2021-Present The Zarf Authors -// Package tools contains the CLI commands for Zarf. -package tools +// Package cmd contains the CLI commands for Zarf. +package cmd import ( yq "github.com/mikefarah/yq/v4/cmd" @@ -10,8 +10,7 @@ import ( "github.com/zarf-dev/zarf/src/config/lang" ) -// NewYQCommand creates the `tools yq` sub-command and its nested children. -func NewYQCommand() *cobra.Command { +func newYQCommand() *cobra.Command { cmd := yq.New() cmd.Example = lang.CmdToolsYqExample cmd.Use = "yq" diff --git a/src/cmd/tools/zarf.go b/src/cmd/zarf_tools.go similarity index 80% rename from src/cmd/tools/zarf.go rename to src/cmd/zarf_tools.go index 16bb468455..1a71698b05 100644 --- a/src/cmd/tools/zarf.go +++ b/src/cmd/zarf_tools.go @@ -1,8 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: 2021-Present The Zarf Authors -// Package tools contains the CLI commands for Zarf. -package tools +// Package cmd contains the CLI commands for Zarf. +package cmd import ( "context" @@ -19,7 +19,6 @@ import ( "github.com/spf13/cobra" "github.com/spf13/viper" - "github.com/zarf-dev/zarf/src/cmd/common" "github.com/zarf-dev/zarf/src/config" "github.com/zarf-dev/zarf/src/config/lang" "github.com/zarf-dev/zarf/src/internal/packager/helm" @@ -46,12 +45,10 @@ const ( agentKey = "agent" ) -// GetCredsOptions holds the command-line options for 'tools get-creds' sub-command. -type GetCredsOptions struct{} +type getCredsOptions struct{} -// NewGetCredsCommand creates the `tools get-creds` sub-command. -func NewGetCredsCommand() *cobra.Command { - o := GetCredsOptions{} +func newGetCredsCommand() *cobra.Command { + o := getCredsOptions{} cmd := &cobra.Command{ Use: "get-creds", @@ -60,14 +57,13 @@ func NewGetCredsCommand() *cobra.Command { Example: lang.CmdToolsGetCredsExample, Aliases: []string{"gc"}, Args: cobra.MaximumNArgs(1), - RunE: o.Run, + RunE: o.run, } return cmd } -// Run performs the execution of 'tools get-creds' sub-command. -func (o *GetCredsOptions) Run(cmd *cobra.Command, args []string) error { +func (o *getCredsOptions) run(cmd *cobra.Command, args []string) error { ctx := cmd.Context() timeoutCtx, cancel := context.WithTimeout(ctx, cluster.DefaultTimeout) @@ -117,12 +113,10 @@ func printComponentCredential(ctx context.Context, state *types.ZarfState, compo } } -// UpdateCredsOptions holds the command-line options for 'tools update-creds' sub-command. -type UpdateCredsOptions struct{} +type updateCredsOptions struct{} -// NewUpdateCredsCommand creates the `tools update-creds` sub-command. -func NewUpdateCredsCommand(v *viper.Viper) *cobra.Command { - o := UpdateCredsOptions{} +func newUpdateCredsCommand(v *viper.Viper) *cobra.Command { + o := updateCredsOptions{} cmd := &cobra.Command{ Use: "update-creds", @@ -131,38 +125,37 @@ func NewUpdateCredsCommand(v *viper.Viper) *cobra.Command { Example: lang.CmdToolsUpdateCredsExample, Aliases: []string{"uc"}, Args: cobra.MaximumNArgs(1), - RunE: o.Run, + RunE: o.run, } // Always require confirm flag (no viper) cmd.Flags().BoolVar(&config.CommonOptions.Confirm, "confirm", false, lang.CmdToolsUpdateCredsConfirmFlag) // Flags for using an external Git server - cmd.Flags().StringVar(&updateCredsInitOpts.GitServer.Address, "git-url", v.GetString(common.VInitGitURL), lang.CmdInitFlagGitURL) - cmd.Flags().StringVar(&updateCredsInitOpts.GitServer.PushUsername, "git-push-username", v.GetString(common.VInitGitPushUser), lang.CmdInitFlagGitPushUser) - cmd.Flags().StringVar(&updateCredsInitOpts.GitServer.PushPassword, "git-push-password", v.GetString(common.VInitGitPushPass), lang.CmdInitFlagGitPushPass) - cmd.Flags().StringVar(&updateCredsInitOpts.GitServer.PullUsername, "git-pull-username", v.GetString(common.VInitGitPullUser), lang.CmdInitFlagGitPullUser) - cmd.Flags().StringVar(&updateCredsInitOpts.GitServer.PullPassword, "git-pull-password", v.GetString(common.VInitGitPullPass), lang.CmdInitFlagGitPullPass) + cmd.Flags().StringVar(&updateCredsInitOpts.GitServer.Address, "git-url", v.GetString(VInitGitURL), lang.CmdInitFlagGitURL) + cmd.Flags().StringVar(&updateCredsInitOpts.GitServer.PushUsername, "git-push-username", v.GetString(VInitGitPushUser), lang.CmdInitFlagGitPushUser) + cmd.Flags().StringVar(&updateCredsInitOpts.GitServer.PushPassword, "git-push-password", v.GetString(VInitGitPushPass), lang.CmdInitFlagGitPushPass) + cmd.Flags().StringVar(&updateCredsInitOpts.GitServer.PullUsername, "git-pull-username", v.GetString(VInitGitPullUser), lang.CmdInitFlagGitPullUser) + cmd.Flags().StringVar(&updateCredsInitOpts.GitServer.PullPassword, "git-pull-password", v.GetString(VInitGitPullPass), lang.CmdInitFlagGitPullPass) // Flags for using an external registry - cmd.Flags().StringVar(&updateCredsInitOpts.RegistryInfo.Address, "registry-url", v.GetString(common.VInitRegistryURL), lang.CmdInitFlagRegURL) - cmd.Flags().StringVar(&updateCredsInitOpts.RegistryInfo.PushUsername, "registry-push-username", v.GetString(common.VInitRegistryPushUser), lang.CmdInitFlagRegPushUser) - cmd.Flags().StringVar(&updateCredsInitOpts.RegistryInfo.PushPassword, "registry-push-password", v.GetString(common.VInitRegistryPushPass), lang.CmdInitFlagRegPushPass) - cmd.Flags().StringVar(&updateCredsInitOpts.RegistryInfo.PullUsername, "registry-pull-username", v.GetString(common.VInitRegistryPullUser), lang.CmdInitFlagRegPullUser) - cmd.Flags().StringVar(&updateCredsInitOpts.RegistryInfo.PullPassword, "registry-pull-password", v.GetString(common.VInitRegistryPullPass), lang.CmdInitFlagRegPullPass) + cmd.Flags().StringVar(&updateCredsInitOpts.RegistryInfo.Address, "registry-url", v.GetString(VInitRegistryURL), lang.CmdInitFlagRegURL) + cmd.Flags().StringVar(&updateCredsInitOpts.RegistryInfo.PushUsername, "registry-push-username", v.GetString(VInitRegistryPushUser), lang.CmdInitFlagRegPushUser) + cmd.Flags().StringVar(&updateCredsInitOpts.RegistryInfo.PushPassword, "registry-push-password", v.GetString(VInitRegistryPushPass), lang.CmdInitFlagRegPushPass) + cmd.Flags().StringVar(&updateCredsInitOpts.RegistryInfo.PullUsername, "registry-pull-username", v.GetString(VInitRegistryPullUser), lang.CmdInitFlagRegPullUser) + cmd.Flags().StringVar(&updateCredsInitOpts.RegistryInfo.PullPassword, "registry-pull-password", v.GetString(VInitRegistryPullPass), lang.CmdInitFlagRegPullPass) // Flags for using an external artifact server - cmd.Flags().StringVar(&updateCredsInitOpts.ArtifactServer.Address, "artifact-url", v.GetString(common.VInitArtifactURL), lang.CmdInitFlagArtifactURL) - cmd.Flags().StringVar(&updateCredsInitOpts.ArtifactServer.PushUsername, "artifact-push-username", v.GetString(common.VInitArtifactPushUser), lang.CmdInitFlagArtifactPushUser) - cmd.Flags().StringVar(&updateCredsInitOpts.ArtifactServer.PushToken, "artifact-push-token", v.GetString(common.VInitArtifactPushToken), lang.CmdInitFlagArtifactPushToken) + cmd.Flags().StringVar(&updateCredsInitOpts.ArtifactServer.Address, "artifact-url", v.GetString(VInitArtifactURL), lang.CmdInitFlagArtifactURL) + cmd.Flags().StringVar(&updateCredsInitOpts.ArtifactServer.PushUsername, "artifact-push-username", v.GetString(VInitArtifactPushUser), lang.CmdInitFlagArtifactPushUser) + cmd.Flags().StringVar(&updateCredsInitOpts.ArtifactServer.PushToken, "artifact-push-token", v.GetString(VInitArtifactPushToken), lang.CmdInitFlagArtifactPushToken) cmd.Flags().SortFlags = true return cmd } -// Run performs the execution of 'tools update-creds' sub-command. -func (o *UpdateCredsOptions) Run(cmd *cobra.Command, args []string) error { +func (o *updateCredsOptions) run(cmd *cobra.Command, args []string) error { validKeys := []string{message.RegistryKey, message.GitKey, message.ArtifactKey, message.AgentKey} if len(args) == 0 { args = validKeys @@ -316,18 +309,16 @@ func printCredentialUpdates(ctx context.Context, oldState *types.ZarfState, newS } } -// ClearCacheOptions holds the command-line options for 'tools clear-cache' sub-command. -type ClearCacheOptions struct{} +type clearCacheOptions struct{} -// NewClearCacheCommand creates the `tools clear-cache` sub-command. -func NewClearCacheCommand() *cobra.Command { - o := &ClearCacheOptions{} +func newClearCacheCommand() *cobra.Command { + o := &clearCacheOptions{} cmd := &cobra.Command{ Use: "clear-cache", Aliases: []string{"c"}, Short: lang.CmdToolsClearCacheShort, - RunE: o.Run, + RunE: o.run, } cmd.Flags().StringVar(&config.CommonOptions.CachePath, "zarf-cache", config.ZarfDefaultCachePath, lang.CmdToolsClearCacheFlagCachePath) @@ -335,8 +326,7 @@ func NewClearCacheCommand() *cobra.Command { return cmd } -// Run performs the execution of 'tools clear-cache' sub-command. -func (o *ClearCacheOptions) Run(cmd *cobra.Command, _ []string) error { +func (o *clearCacheOptions) run(cmd *cobra.Command, _ []string) error { l := logger.From(cmd.Context()) cachePath, err := config.GetAbsCachePath() if err != nil { @@ -352,17 +342,15 @@ func (o *ClearCacheOptions) Run(cmd *cobra.Command, _ []string) error { return nil } -// DownloadInitOptions holds the command-line options for 'tools download-init' sub-command. -type DownloadInitOptions struct{} +type downloadInitOptions struct{} -// NewDownloadInitCommand creates the `tools download-init` sub-command. -func NewDownloadInitCommand() *cobra.Command { - o := &DownloadInitOptions{} +func newDownloadInitCommand() *cobra.Command { + o := &downloadInitOptions{} cmd := &cobra.Command{ Use: "download-init", Short: lang.CmdToolsDownloadInitShort, - RunE: o.Run, + RunE: o.run, } cmd.Flags().StringVarP(&outputDirectory, "output-directory", "o", "", lang.CmdToolsDownloadInitFlagOutputDirectory) @@ -370,8 +358,7 @@ func NewDownloadInitCommand() *cobra.Command { return cmd } -// Run performs the execution of 'tools download-init' sub-command. -func (o *DownloadInitOptions) Run(cmd *cobra.Command, _ []string) error { +func (o *downloadInitOptions) run(cmd *cobra.Command, _ []string) error { ctx := cmd.Context() url := zoci.GetInitPackageURL(config.CLIVersion) remote, err := zoci.NewRemote(ctx, url, oci.PlatformForArch(config.GetArch())) @@ -386,19 +373,17 @@ func (o *DownloadInitOptions) Run(cmd *cobra.Command, _ []string) error { return nil } -// GenPKIOptions holds the command-line options for 'tools gen-pki' sub-command. -type GenPKIOptions struct{} +type genPKIOptions struct{} -// NewGenPKICommand creates the `tools gen-pki` sub-command. -func NewGenPKICommand() *cobra.Command { - o := &GenPKIOptions{} +func newGenPKICommand() *cobra.Command { + o := &genPKIOptions{} cmd := &cobra.Command{ Use: "gen-pki HOST", Aliases: []string{"pki"}, Short: lang.CmdToolsGenPkiShort, Args: cobra.ExactArgs(1), - RunE: o.Run, + RunE: o.run, } cmd.Flags().StringArrayVar(&subAltNames, "sub-alt-name", []string{}, lang.CmdToolsGenPkiFlagAltName) @@ -406,8 +391,7 @@ func NewGenPKICommand() *cobra.Command { return cmd } -// Run performs the execution of 'tools gen-pki' sub-command. -func (o *GenPKIOptions) Run(cmd *cobra.Command, args []string) error { +func (o *genPKIOptions) run(cmd *cobra.Command, args []string) error { pki, err := pki.GeneratePKI(args[0], subAltNames...) if err != nil { return err @@ -427,25 +411,22 @@ func (o *GenPKIOptions) Run(cmd *cobra.Command, args []string) error { return nil } -// GenKeyOptions holds the command-line options for 'tools gen-key' sub-command. -type GenKeyOptions struct{} +type genKeyOptions struct{} -// NewGenKeyCommand creates the `tools gen-key` sub-command. -func NewGenKeyCommand() *cobra.Command { - o := &GenKeyOptions{} +func newGenKeyCommand() *cobra.Command { + o := &genKeyOptions{} cmd := &cobra.Command{ Use: "gen-key", Aliases: []string{"key"}, Short: lang.CmdToolsGenKeyShort, - RunE: o.Run, + RunE: o.run, } return cmd } -// Run performs the execution of 'tools gen-key' sub-command. -func (o *GenKeyOptions) Run(cmd *cobra.Command, _ []string) error { +func (o *genKeyOptions) run(cmd *cobra.Command, _ []string) error { // Utility function to prompt the user for the password to the private key passwordFunc := func(bool) ([]byte, error) { // perform the first prompt