From a5a2db577fd963f4e49ed8d04553ea1c0c811e93 Mon Sep 17 00:00:00 2001
From: Mauren Berti <stormqueen1990@gmail.com>
Date: Mon, 9 Oct 2023 17:34:36 -0400
Subject: [PATCH 1/2] refactor: move reusable bits in preparation for edit set
 commands

* Move configmapSecretFlagsAndArgs.go to the internal/util folder so it can be
  reused by the edit set commands.
---
 go.work.sum                                   |  4 +-
 kustomize/commands/edit/add/configmap.go      | 21 ++++----
 kustomize/commands/edit/add/configmap_test.go | 49 ++++++++++---------
 kustomize/commands/edit/add/secret.go         | 19 +++----
 kustomize/commands/edit/add/secret_test.go    | 35 ++++++-------
 .../util}/configmapSecretFlagsAndArgs.go      | 29 ++++++-----
 .../util}/configmapSecretFlagsAndArgs_test.go | 26 +++++-----
 7 files changed, 93 insertions(+), 90 deletions(-)
 rename kustomize/commands/{edit/add => internal/util}/configmapSecretFlagsAndArgs.go (83%)
 rename kustomize/commands/{edit/add => internal/util}/configmapSecretFlagsAndArgs_test.go (87%)

diff --git a/go.work.sum b/go.work.sum
index 869f7cfa1a..cb1901e95a 100644
--- a/go.work.sum
+++ b/go.work.sum
@@ -202,6 +202,7 @@ go.uber.org/multierr v1.1.0 h1:HoEmRHQPVSqub6w2z2d2EOVs2fjyFRGyofhKuyDq0QI=
 go.uber.org/zap v1.10.0 h1:ORx85nbTijNz8ljznvCMR1ZBIPKFn3jQrag10X2AsuM=
 golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0 h1:hb9wdF1z5waM+dSIICn1l0DkLVDT3hqhhQsDNUmHPRE=
 golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
+golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
 golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6 h1:QE6XYQK6naiK1EPAe1g/ILLxN5RBoH5xkJk3CqlMI/Y=
 golang.org/x/image v0.0.0-20190802002840-cff245a6509b h1:+qEpEAPhDZ1o0x3tHzZTQDArnOixOzGD9HUJfcg0mb4=
 golang.org/x/lint v0.0.0-20200302205851-738671d3881b h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k=
@@ -210,6 +211,7 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91
 golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
 golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
 golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
+golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
 golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
 golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o=
 golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -221,8 +223,6 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
 golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
 golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
-golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
 golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
 golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ=
 golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
diff --git a/kustomize/commands/edit/add/configmap.go b/kustomize/commands/edit/add/configmap.go
index 0d12d60b9c..147f6c4b33 100644
--- a/kustomize/commands/edit/add/configmap.go
+++ b/kustomize/commands/edit/add/configmap.go
@@ -11,6 +11,7 @@ import (
 	"sigs.k8s.io/kustomize/api/resource"
 	"sigs.k8s.io/kustomize/api/types"
 	"sigs.k8s.io/kustomize/kustomize/v5/commands/internal/kustfile"
+	"sigs.k8s.io/kustomize/kustomize/v5/commands/internal/util"
 	"sigs.k8s.io/kustomize/kyaml/filesys"
 )
 
@@ -20,7 +21,7 @@ func newCmdAddConfigMap(
 	ldr ifc.KvLoader,
 	rf *resource.Factory,
 ) *cobra.Command {
-	var flags configmapSecretFlagsAndArgs
+	var flags util.ConfigMapSecretFlagsAndArgs
 	cmd := &cobra.Command{
 		Use:   "configmap NAME [--namespace=namespace-name] [--behavior={create|merge|replace}] [--from-file=[key=]source] [--from-literal=key1=value1]",
 		Short: "Adds a configmap to the kustomization file",
@@ -48,36 +49,36 @@ func newCmdAddConfigMap(
 
 	cmd.Flags().StringSliceVar(
 		&flags.FileSources,
-		fromFileFlag,
+		util.FromFileFlag,
 		[]string{},
 		"Key file can be specified using its file path, in which case file basename will be used as configmap "+
 			"key, or optionally with a key and file path, in which case the given key will be used.  Specifying a "+
 			"directory will iterate each named file in the directory whose basename is a valid configmap key.")
 	cmd.Flags().StringArrayVar(
 		&flags.LiteralSources,
-		fromLiteralFlag,
+		util.FromLiteralFlag,
 		[]string{},
 		"Specify a key and literal value to insert in configmap (i.e. mykey=somevalue)")
 	cmd.Flags().StringVar(
 		&flags.EnvFileSource,
-		fromEnvFileFlag,
+		util.FromEnvFileFlag,
 		"",
 		"Specify the path to a file to read lines of key=val pairs to create a configmap (i.e. a Docker .env file).")
 	cmd.Flags().BoolVar(
 		&flags.DisableNameSuffixHash,
-		disableNameSuffixHashFlag,
+		util.DisableNameSuffixHashFlag,
 		false,
 		"Disable the name suffix for the configmap")
 	cmd.Flags().StringVar(
 		&flags.Behavior,
-		behaviorFlag,
+		util.BehaviorFlag,
 		"",
 		"Specify the behavior for config map generation, i.e whether to create a new configmap (the default),  "+
 			"to merge with a previously defined one, or to replace an existing one. Merge and replace should be used only "+
 			" when overriding an existing configmap defined in a base")
 	cmd.Flags().StringVar(
 		&flags.Namespace,
-		namespaceFlag,
+		util.NamespaceFlag,
 		"",
 		"Specify the namespace of the ConfigMap")
 
@@ -85,7 +86,7 @@ func newCmdAddConfigMap(
 }
 
 func runEditAddConfigMap(
-	flags configmapSecretFlagsAndArgs,
+	flags util.ConfigMapSecretFlagsAndArgs,
 	fSys filesys.FileSystem,
 	args []string,
 	ldr ifc.KvLoader,
@@ -133,11 +134,11 @@ func runEditAddConfigMap(
 func addConfigMap(
 	ldr ifc.KvLoader,
 	k *types.Kustomization,
-	flags configmapSecretFlagsAndArgs,
+	flags util.ConfigMapSecretFlagsAndArgs,
 	rf *resource.Factory,
 ) error {
 	args := findOrMakeConfigMapArgs(k, flags.Name, flags.Namespace)
-	mergeFlagsIntoGeneratorArgs(&args.GeneratorArgs, flags)
+	util.MergeFlagsIntoGeneratorArgs(&args.GeneratorArgs, flags)
 	// Validate by trying to create corev1.configmap.
 	args.Options = types.MergeGlobalOptionsIntoLocal(
 		args.Options, k.GeneratorOptions)
diff --git a/kustomize/commands/edit/add/configmap_test.go b/kustomize/commands/edit/add/configmap_test.go
index a77537930b..c45ff381c3 100644
--- a/kustomize/commands/edit/add/configmap_test.go
+++ b/kustomize/commands/edit/add/configmap_test.go
@@ -16,6 +16,7 @@ import (
 	"sigs.k8s.io/kustomize/api/types"
 	"sigs.k8s.io/kustomize/kustomize/v5/commands/internal/kustfile"
 	testutils_test "sigs.k8s.io/kustomize/kustomize/v5/commands/internal/testutils"
+	"sigs.k8s.io/kustomize/kustomize/v5/commands/internal/util"
 	"sigs.k8s.io/kustomize/kyaml/filesys"
 )
 
@@ -54,12 +55,12 @@ func TestMakeConfigMapArgs(t *testing.T) {
 func TestMergeFlagsIntoConfigMapArgs_LiteralSources(t *testing.T) {
 	k := &types.Kustomization{}
 	args := findOrMakeConfigMapArgs(k, "foo", configMapNamespace)
-	mergeFlagsIntoGeneratorArgs(
+	util.MergeFlagsIntoGeneratorArgs(
 		&args.GeneratorArgs,
-		configmapSecretFlagsAndArgs{LiteralSources: []string{"k1=v1"}})
-	mergeFlagsIntoGeneratorArgs(
+		util.ConfigMapSecretFlagsAndArgs{LiteralSources: []string{"k1=v1"}})
+	util.MergeFlagsIntoGeneratorArgs(
 		&args.GeneratorArgs,
-		configmapSecretFlagsAndArgs{LiteralSources: []string{"k2=v2"}})
+		util.ConfigMapSecretFlagsAndArgs{LiteralSources: []string{"k2=v2"}})
 	assert.Equal(t, "k1=v1", k.ConfigMapGenerator[0].LiteralSources[0])
 	assert.Equal(t, "k2=v2", k.ConfigMapGenerator[0].LiteralSources[1])
 }
@@ -67,12 +68,12 @@ func TestMergeFlagsIntoConfigMapArgs_LiteralSources(t *testing.T) {
 func TestMergeFlagsIntoConfigMapArgs_FileSources(t *testing.T) {
 	k := &types.Kustomization{}
 	args := findOrMakeConfigMapArgs(k, "foo", configMapNamespace)
-	mergeFlagsIntoGeneratorArgs(
+	util.MergeFlagsIntoGeneratorArgs(
 		&args.GeneratorArgs,
-		configmapSecretFlagsAndArgs{FileSources: []string{"file1"}})
-	mergeFlagsIntoGeneratorArgs(
+		util.ConfigMapSecretFlagsAndArgs{FileSources: []string{"file1"}})
+	util.MergeFlagsIntoGeneratorArgs(
 		&args.GeneratorArgs,
-		configmapSecretFlagsAndArgs{FileSources: []string{"file2"}})
+		util.ConfigMapSecretFlagsAndArgs{FileSources: []string{"file2"}})
 	assert.Equal(t, "file1", k.ConfigMapGenerator[0].FileSources[0])
 	assert.Equal(t, "file2", k.ConfigMapGenerator[0].FileSources[1])
 }
@@ -80,12 +81,12 @@ func TestMergeFlagsIntoConfigMapArgs_FileSources(t *testing.T) {
 func TestMergeFlagsIntoConfigMapArgs_EnvSource(t *testing.T) {
 	k := &types.Kustomization{}
 	args := findOrMakeConfigMapArgs(k, "foo", configMapNamespace)
-	mergeFlagsIntoGeneratorArgs(
+	util.MergeFlagsIntoGeneratorArgs(
 		&args.GeneratorArgs,
-		configmapSecretFlagsAndArgs{EnvFileSource: "env1"})
-	mergeFlagsIntoGeneratorArgs(
+		util.ConfigMapSecretFlagsAndArgs{EnvFileSource: "env1"})
+	util.MergeFlagsIntoGeneratorArgs(
 		&args.GeneratorArgs,
-		configmapSecretFlagsAndArgs{EnvFileSource: "env2"})
+		util.ConfigMapSecretFlagsAndArgs{EnvFileSource: "env2"})
 	assert.Equal(t, "env1", k.ConfigMapGenerator[0].EnvSources[0])
 	assert.Equal(t, "env2", k.ConfigMapGenerator[0].EnvSources[1])
 }
@@ -94,31 +95,31 @@ func TestMergeFlagsIntoConfigMapArgs_Behavior(t *testing.T) {
 	k := &types.Kustomization{}
 	args := findOrMakeConfigMapArgs(k, "foo", configMapNamespace)
 
-	createBehaviorFlags := configmapSecretFlagsAndArgs{
+	createBehaviorFlags := util.ConfigMapSecretFlagsAndArgs{
 		Behavior:      "create",
 		EnvFileSource: "env1",
 	}
-	mergeFlagsIntoGeneratorArgs(
+	util.MergeFlagsIntoGeneratorArgs(
 		&args.GeneratorArgs,
 		createBehaviorFlags)
 	require.Equal(t, configMapNamespace, k.ConfigMapGenerator[0].Namespace)
 	assert.Equal(t, "create", k.ConfigMapGenerator[0].Behavior)
 
-	mergeBehaviorFlags := configmapSecretFlagsAndArgs{
+	mergeBehaviorFlags := util.ConfigMapSecretFlagsAndArgs{
 		Behavior:      "merge",
 		EnvFileSource: "env1",
 	}
-	mergeFlagsIntoGeneratorArgs(
+	util.MergeFlagsIntoGeneratorArgs(
 		&args.GeneratorArgs,
 		mergeBehaviorFlags)
 	require.Equal(t, configMapNamespace, k.ConfigMapGenerator[0].Namespace)
 	assert.Equal(t, "merge", k.ConfigMapGenerator[0].Behavior)
 
-	replaceBehaviorFlags := configmapSecretFlagsAndArgs{
+	replaceBehaviorFlags := util.ConfigMapSecretFlagsAndArgs{
 		Behavior:      "replace",
 		EnvFileSource: "env1",
 	}
-	mergeFlagsIntoGeneratorArgs(
+	util.MergeFlagsIntoGeneratorArgs(
 		&args.GeneratorArgs,
 		replaceBehaviorFlags)
 	require.Equal(t, configMapNamespace, k.ConfigMapGenerator[0].Namespace)
@@ -162,8 +163,8 @@ func TestEditAddConfigMapWithLiteralSource(t *testing.T) {
 
 			args := []string{
 				tc.configMapName,
-				fmt.Sprintf(flagFormat, fromLiteralFlag, tc.literalSource),
-				fmt.Sprintf(flagFormat, namespaceFlag, tc.configMapNamespace),
+				fmt.Sprintf(util.FlagFormat, util.FromLiteralFlag, tc.literalSource),
+				fmt.Sprintf(util.FlagFormat, util.NamespaceFlag, tc.configMapNamespace),
 			}
 			cmd := newCmdAddConfigMap(fSys, ldr, pvd.GetResourceFactory())
 			cmd.SetArgs(args)
@@ -243,8 +244,8 @@ func TestEditAddConfigMapWithEnvSource(t *testing.T) {
 
 			args := []string{
 				tc.configMapName,
-				fmt.Sprintf(flagFormat, fromEnvFileFlag, tc.envSource),
-				fmt.Sprintf(flagFormat, namespaceFlag, tc.configMapNamespace),
+				fmt.Sprintf(util.FlagFormat, util.FromEnvFileFlag, tc.envSource),
+				fmt.Sprintf(util.FlagFormat, util.NamespaceFlag, tc.configMapNamespace),
 			}
 			cmd := newCmdAddConfigMap(fSys, ldr, pvd.GetResourceFactory())
 			cmd.SetArgs(args)
@@ -323,8 +324,8 @@ func TestEditAddConfigMapWithFileSource(t *testing.T) {
 
 			args := []string{
 				tc.configMapName,
-				fmt.Sprintf(flagFormat, fromFileFlag, tc.fileSource),
-				fmt.Sprintf(flagFormat, namespaceFlag, tc.configMapNamespace),
+				fmt.Sprintf(util.FlagFormat, util.FromFileFlag, tc.fileSource),
+				fmt.Sprintf(util.FlagFormat, util.NamespaceFlag, tc.configMapNamespace),
 			}
 			cmd := newCmdAddConfigMap(fSys, ldr, pvd.GetResourceFactory())
 			cmd.SetArgs(args)
diff --git a/kustomize/commands/edit/add/secret.go b/kustomize/commands/edit/add/secret.go
index ee88a295c5..aee0cde169 100644
--- a/kustomize/commands/edit/add/secret.go
+++ b/kustomize/commands/edit/add/secret.go
@@ -11,6 +11,7 @@ import (
 	"sigs.k8s.io/kustomize/api/resource"
 	"sigs.k8s.io/kustomize/api/types"
 	"sigs.k8s.io/kustomize/kustomize/v5/commands/internal/kustfile"
+	"sigs.k8s.io/kustomize/kustomize/v5/commands/internal/util"
 	"sigs.k8s.io/kustomize/kyaml/filesys"
 )
 
@@ -20,7 +21,7 @@ func newCmdAddSecret(
 	ldr ifc.KvLoader,
 	rf *resource.Factory,
 ) *cobra.Command {
-	var flags configmapSecretFlagsAndArgs
+	var flags util.ConfigMapSecretFlagsAndArgs
 	cmd := &cobra.Command{
 		Use:   "secret NAME [--from-file=[key=]source] [--from-literal=key1=value1] [--type=Opaque|kubernetes.io/tls]",
 		Short: "Adds a secret to the kustomization file.",
@@ -42,19 +43,19 @@ func newCmdAddSecret(
 
 	cmd.Flags().StringSliceVar(
 		&flags.FileSources,
-		fromFileFlag,
+		util.FromFileFlag,
 		[]string{},
 		"Key file can be specified using its file path, in which case file basename will be used as secret "+
 			"key, or optionally with a key and file path, in which case the given key will be used.  Specifying a "+
 			"directory will iterate each named file in the directory whose basename is a valid secret key.")
 	cmd.Flags().StringArrayVar(
 		&flags.LiteralSources,
-		fromLiteralFlag,
+		util.FromLiteralFlag,
 		[]string{},
 		"Specify a key and literal value to insert in secret (i.e. mykey=somevalue)")
 	cmd.Flags().StringVar(
 		&flags.EnvFileSource,
-		fromEnvFileFlag,
+		util.FromEnvFileFlag,
 		"",
 		"Specify the path to a file to read lines of key=val pairs to create a secret (i.e. a Docker .env file).")
 	cmd.Flags().StringVar(
@@ -64,12 +65,12 @@ func newCmdAddSecret(
 		"Specify the secret type this can be 'Opaque' (default), or 'kubernetes.io/tls'")
 	cmd.Flags().StringVar(
 		&flags.Namespace,
-		namespaceFlag,
+		util.NamespaceFlag,
 		"",
 		"Specify the namespace of the secret")
 	cmd.Flags().BoolVar(
 		&flags.DisableNameSuffixHash,
-		disableNameSuffixHashFlag,
+		util.DisableNameSuffixHashFlag,
 		false,
 		"Disable the name suffix for the secret")
 
@@ -77,7 +78,7 @@ func newCmdAddSecret(
 }
 
 func runEditAddSecret(
-	flags configmapSecretFlagsAndArgs,
+	flags util.ConfigMapSecretFlagsAndArgs,
 	fSys filesys.FileSystem,
 	args []string,
 	ldr ifc.KvLoader,
@@ -125,11 +126,11 @@ func runEditAddSecret(
 func addSecret(
 	ldr ifc.KvLoader,
 	k *types.Kustomization,
-	flags configmapSecretFlagsAndArgs,
+	flags util.ConfigMapSecretFlagsAndArgs,
 	rf *resource.Factory,
 ) error {
 	args := findOrMakeSecretArgs(k, flags.Name, flags.Namespace, flags.Type)
-	mergeFlagsIntoGeneratorArgs(&args.GeneratorArgs, flags)
+	util.MergeFlagsIntoGeneratorArgs(&args.GeneratorArgs, flags)
 	// Validate by trying to create corev1.secret.
 	args.Options = types.MergeGlobalOptionsIntoLocal(
 		args.Options, k.GeneratorOptions)
diff --git a/kustomize/commands/edit/add/secret_test.go b/kustomize/commands/edit/add/secret_test.go
index 1622f75152..0b48ac090c 100644
--- a/kustomize/commands/edit/add/secret_test.go
+++ b/kustomize/commands/edit/add/secret_test.go
@@ -16,6 +16,7 @@ import (
 	"sigs.k8s.io/kustomize/api/types"
 	"sigs.k8s.io/kustomize/kustomize/v5/commands/internal/kustfile"
 	testutils_test "sigs.k8s.io/kustomize/kustomize/v5/commands/internal/testutils"
+	"sigs.k8s.io/kustomize/kustomize/v5/commands/internal/util"
 	"sigs.k8s.io/kustomize/kyaml/filesys"
 )
 
@@ -51,12 +52,12 @@ func TestMakeSecretArgs(t *testing.T) {
 func TestMergeFlagsIntoSecretArgs_LiteralSources(t *testing.T) {
 	k := &types.Kustomization{}
 	args := findOrMakeSecretArgs(k, "foo", "bar", "forbidden")
-	mergeFlagsIntoGeneratorArgs(
+	util.MergeFlagsIntoGeneratorArgs(
 		&args.GeneratorArgs,
-		configmapSecretFlagsAndArgs{LiteralSources: []string{"k1=v1"}})
-	mergeFlagsIntoGeneratorArgs(
+		util.ConfigMapSecretFlagsAndArgs{LiteralSources: []string{"k1=v1"}})
+	util.MergeFlagsIntoGeneratorArgs(
 		&args.GeneratorArgs,
-		configmapSecretFlagsAndArgs{LiteralSources: []string{"k2=v2"}})
+		util.ConfigMapSecretFlagsAndArgs{LiteralSources: []string{"k2=v2"}})
 	assert.Equal(t, "k1=v1", k.SecretGenerator[0].LiteralSources[0])
 	assert.Equal(t, "k2=v2", k.SecretGenerator[0].LiteralSources[1])
 }
@@ -64,12 +65,12 @@ func TestMergeFlagsIntoSecretArgs_LiteralSources(t *testing.T) {
 func TestMergeFlagsIntoSecretArgs_FileSources(t *testing.T) {
 	k := &types.Kustomization{}
 	args := findOrMakeSecretArgs(k, "foo", "bar", "forbidden")
-	mergeFlagsIntoGeneratorArgs(
+	util.MergeFlagsIntoGeneratorArgs(
 		&args.GeneratorArgs,
-		configmapSecretFlagsAndArgs{FileSources: []string{"file1"}})
-	mergeFlagsIntoGeneratorArgs(
+		util.ConfigMapSecretFlagsAndArgs{FileSources: []string{"file1"}})
+	util.MergeFlagsIntoGeneratorArgs(
 		&args.GeneratorArgs,
-		configmapSecretFlagsAndArgs{FileSources: []string{"file2"}})
+		util.ConfigMapSecretFlagsAndArgs{FileSources: []string{"file2"}})
 	assert.Equal(t, "file1", k.SecretGenerator[0].FileSources[0])
 	assert.Equal(t, "file2", k.SecretGenerator[0].FileSources[1])
 }
@@ -77,12 +78,12 @@ func TestMergeFlagsIntoSecretArgs_FileSources(t *testing.T) {
 func TestMergeFlagsIntoSecretArgs_EnvSource(t *testing.T) {
 	k := &types.Kustomization{}
 	args := findOrMakeSecretArgs(k, "foo", "bar", "forbidden")
-	mergeFlagsIntoGeneratorArgs(
+	util.MergeFlagsIntoGeneratorArgs(
 		&args.GeneratorArgs,
-		configmapSecretFlagsAndArgs{EnvFileSource: "env1"})
-	mergeFlagsIntoGeneratorArgs(
+		util.ConfigMapSecretFlagsAndArgs{EnvFileSource: "env1"})
+	util.MergeFlagsIntoGeneratorArgs(
 		&args.GeneratorArgs,
-		configmapSecretFlagsAndArgs{EnvFileSource: "env2"})
+		util.ConfigMapSecretFlagsAndArgs{EnvFileSource: "env2"})
 	assert.Equal(t, "env1", k.SecretGenerator[0].EnvSources[0])
 	assert.Equal(t, "env2", k.SecretGenerator[0].EnvSources[1])
 }
@@ -90,9 +91,9 @@ func TestMergeFlagsIntoSecretArgs_EnvSource(t *testing.T) {
 func TestMergeFlagsIntoSecretArgs_DisableNameSuffixHash(t *testing.T) {
 	k := &types.Kustomization{}
 	args := findOrMakeSecretArgs(k, "foo", "bar", "forbidden")
-	mergeFlagsIntoGeneratorArgs(
+	util.MergeFlagsIntoGeneratorArgs(
 		&args.GeneratorArgs,
-		configmapSecretFlagsAndArgs{DisableNameSuffixHash: true})
+		util.ConfigMapSecretFlagsAndArgs{DisableNameSuffixHash: true})
 	assert.True(t, k.SecretGenerator[0].Options.DisableNameSuffixHash)
 }
 
@@ -112,7 +113,7 @@ func TestEditAddSecretWithLiteralSource(t *testing.T) {
 
 	args := []string{
 		secretName,
-		fmt.Sprintf(flagFormat, fromLiteralFlag, literalSource),
+		fmt.Sprintf(util.FlagFormat, util.FromLiteralFlag, literalSource),
 	}
 	cmd := newCmdAddSecret(fSys, ldr, pvd.GetResourceFactory())
 	cmd.SetArgs(args)
@@ -162,7 +163,7 @@ func TestEditAddSecretWithEnvSource(t *testing.T) {
 
 	args := []string{
 		secretName,
-		fmt.Sprintf(flagFormat, fromEnvFileFlag, envSource),
+		fmt.Sprintf(util.FlagFormat, util.FromEnvFileFlag, envSource),
 	}
 	cmd := newCmdAddSecret(fSys, ldr, pvd.GetResourceFactory())
 	cmd.SetArgs(args)
@@ -212,7 +213,7 @@ func TestEditAddSecretWithFileSource(t *testing.T) {
 
 	args := []string{
 		secretName,
-		fmt.Sprintf(flagFormat, fromFileFlag, fileSource),
+		fmt.Sprintf(util.FlagFormat, util.FromFileFlag, fileSource),
 	}
 	cmd := newCmdAddSecret(fSys, ldr, pvd.GetResourceFactory())
 	cmd.SetArgs(args)
diff --git a/kustomize/commands/edit/add/configmapSecretFlagsAndArgs.go b/kustomize/commands/internal/util/configmapSecretFlagsAndArgs.go
similarity index 83%
rename from kustomize/commands/edit/add/configmapSecretFlagsAndArgs.go
rename to kustomize/commands/internal/util/configmapSecretFlagsAndArgs.go
index efe85ad70f..ffc0a36bd9 100644
--- a/kustomize/commands/edit/add/configmapSecretFlagsAndArgs.go
+++ b/kustomize/commands/internal/util/configmapSecretFlagsAndArgs.go
@@ -1,29 +1,28 @@
 // Copyright 2019 The Kubernetes Authors.
 // SPDX-License-Identifier: Apache-2.0
 
-package add
+package util
 
 import (
 	"fmt"
 	"strings"
 
 	"sigs.k8s.io/kustomize/api/types"
-	"sigs.k8s.io/kustomize/kustomize/v5/commands/internal/util"
 	"sigs.k8s.io/kustomize/kyaml/filesys"
 )
 
 const (
-	fromFileFlag              = "from-file"
-	fromLiteralFlag           = "from-literal"
-	fromEnvFileFlag           = "from-env-file"
-	disableNameSuffixHashFlag = "disableNameSuffixHash"
-	behaviorFlag              = "behavior"
-	namespaceFlag             = "namespace"
-	flagFormat                = "--%s=%s"
+	FromFileFlag              = "from-file"
+	FromLiteralFlag           = "from-literal"
+	FromEnvFileFlag           = "from-env-file"
+	DisableNameSuffixHashFlag = "disableNameSuffixHash"
+	BehaviorFlag              = "behavior"
+	NamespaceFlag             = "namespace"
+	FlagFormat                = "--%s=%s"
 )
 
-// configmapSecretFlagsAndArgs encapsulates the options for add secret/configmap commands.
-type configmapSecretFlagsAndArgs struct {
+// ConfigMapSecretFlagsAndArgs encapsulates the options for add secret/configmap commands.
+type ConfigMapSecretFlagsAndArgs struct {
 	// Name of configMap/Secret (required)
 	Name string
 	// FileSources to derive the configMap/Secret from (optional)
@@ -44,7 +43,7 @@ type configmapSecretFlagsAndArgs struct {
 }
 
 // Validate validates required fields are set to support structured generation.
-func (a *configmapSecretFlagsAndArgs) Validate(args []string) error {
+func (a *ConfigMapSecretFlagsAndArgs) Validate(args []string) error {
 	if len(args) != 1 {
 		return fmt.Errorf("name must be specified once")
 	}
@@ -80,7 +79,7 @@ func (a *configmapSecretFlagsAndArgs) Validate(args []string) error {
 // and the key, if missing, is the same as the value.
 // In the case where the key is explicitly declared,
 // the globbing, if present, must have exactly one match.
-func (a *configmapSecretFlagsAndArgs) ExpandFileSource(fSys filesys.FileSystem) error {
+func (a *ConfigMapSecretFlagsAndArgs) ExpandFileSource(fSys filesys.FileSystem) error {
 	var results []string
 	for _, pattern := range a.FileSources {
 		var patterns []string
@@ -94,7 +93,7 @@ func (a *configmapSecretFlagsAndArgs) ExpandFileSource(fSys filesys.FileSystem)
 		} else {
 			patterns = append(patterns, s[0])
 		}
-		result, err := util.GlobPatterns(fSys, patterns)
+		result, err := GlobPatterns(fSys, patterns)
 		if err != nil {
 			return err
 		}
@@ -115,7 +114,7 @@ func (a *configmapSecretFlagsAndArgs) ExpandFileSource(fSys filesys.FileSystem)
 	return nil
 }
 
-func mergeFlagsIntoGeneratorArgs(args *types.GeneratorArgs, flags configmapSecretFlagsAndArgs) {
+func MergeFlagsIntoGeneratorArgs(args *types.GeneratorArgs, flags ConfigMapSecretFlagsAndArgs) {
 	if len(flags.LiteralSources) > 0 {
 		args.LiteralSources = append(
 			args.LiteralSources, flags.LiteralSources...)
diff --git a/kustomize/commands/edit/add/configmapSecretFlagsAndArgs_test.go b/kustomize/commands/internal/util/configmapSecretFlagsAndArgs_test.go
similarity index 87%
rename from kustomize/commands/edit/add/configmapSecretFlagsAndArgs_test.go
rename to kustomize/commands/internal/util/configmapSecretFlagsAndArgs_test.go
index 49abb37371..c736eccfac 100644
--- a/kustomize/commands/edit/add/configmapSecretFlagsAndArgs_test.go
+++ b/kustomize/commands/internal/util/configmapSecretFlagsAndArgs_test.go
@@ -1,7 +1,7 @@
 // Copyright 2019 The Kubernetes Authors.
 // SPDX-License-Identifier: Apache-2.0
 
-package add
+package util
 
 import (
 	"reflect"
@@ -12,12 +12,12 @@ import (
 )
 
 func TestDataValidation_NoName(t *testing.T) {
-	fa := configmapSecretFlagsAndArgs{}
+	fa := ConfigMapSecretFlagsAndArgs{}
 	require.Error(t, fa.Validate([]string{}))
 }
 
 func TestDataValidation_MoreThanOneName(t *testing.T) {
-	fa := configmapSecretFlagsAndArgs{}
+	fa := ConfigMapSecretFlagsAndArgs{}
 
 	require.Error(t, fa.Validate([]string{"name", "othername"}))
 }
@@ -25,12 +25,12 @@ func TestDataValidation_MoreThanOneName(t *testing.T) {
 func TestDataConfigValidation_Flags(t *testing.T) {
 	tests := []struct {
 		name       string
-		fa         configmapSecretFlagsAndArgs
+		fa         ConfigMapSecretFlagsAndArgs
 		shouldFail bool
 	}{
 		{
 			name: "env-file-source and literal are both set",
-			fa: configmapSecretFlagsAndArgs{
+			fa: ConfigMapSecretFlagsAndArgs{
 				LiteralSources: []string{"one", "two"},
 				EnvFileSource:  "three",
 			},
@@ -38,7 +38,7 @@ func TestDataConfigValidation_Flags(t *testing.T) {
 		},
 		{
 			name: "env-file-source and from-file are both set",
-			fa: configmapSecretFlagsAndArgs{
+			fa: ConfigMapSecretFlagsAndArgs{
 				FileSources:   []string{"one", "two"},
 				EnvFileSource: "three",
 			},
@@ -46,12 +46,12 @@ func TestDataConfigValidation_Flags(t *testing.T) {
 		},
 		{
 			name:       "we don't have any option set",
-			fa:         configmapSecretFlagsAndArgs{},
+			fa:         ConfigMapSecretFlagsAndArgs{},
 			shouldFail: true,
 		},
 		{
 			name: "we have from-file and literal ",
-			fa: configmapSecretFlagsAndArgs{
+			fa: ConfigMapSecretFlagsAndArgs{
 				LiteralSources: []string{"one", "two"},
 				FileSources:    []string{"three", "four"},
 			},
@@ -59,7 +59,7 @@ func TestDataConfigValidation_Flags(t *testing.T) {
 		},
 		{
 			name: "correct behavior",
-			fa: configmapSecretFlagsAndArgs{
+			fa: ConfigMapSecretFlagsAndArgs{
 				EnvFileSource: "foo",
 				Behavior:      "merge",
 			},
@@ -67,7 +67,7 @@ func TestDataConfigValidation_Flags(t *testing.T) {
 		},
 		{
 			name: "incorrect behavior",
-			fa: configmapSecretFlagsAndArgs{
+			fa: ConfigMapSecretFlagsAndArgs{
 				EnvFileSource: "foo",
 				Behavior:      "merge-unknown",
 			},
@@ -93,7 +93,7 @@ func TestExpandFileSource(t *testing.T) {
 	require.NoError(t, err)
 	_, err = fSys.Create("dir/readme")
 	require.NoError(t, err)
-	fa := configmapSecretFlagsAndArgs{
+	fa := ConfigMapSecretFlagsAndArgs{
 		FileSources: []string{"dir/fa*"},
 	}
 	err = fa.ExpandFileSource(fSys)
@@ -117,7 +117,7 @@ func TestExpandFileSourceWithKey(t *testing.T) {
 	require.NoError(t, err)
 	_, err = fSys.Create("dir/readme")
 	require.NoError(t, err)
-	fa := configmapSecretFlagsAndArgs{
+	fa := ConfigMapSecretFlagsAndArgs{
 		FileSources: []string{"foo-key=dir/fa*", "bar-key=dir/foobar", "dir/simplebar"},
 	}
 	err = fa.ExpandFileSource(fSys)
@@ -140,7 +140,7 @@ func TestExpandFileSourceWithKeyAndError(t *testing.T) {
 	require.NoError(t, err)
 	_, err = fSys.Create("dir/readme")
 	require.NoError(t, err)
-	fa := configmapSecretFlagsAndArgs{
+	fa := ConfigMapSecretFlagsAndArgs{
 		FileSources: []string{"foo-key=dir/fa*"},
 	}
 	err = fa.ExpandFileSource(fSys)

From 5568521cd1964295914f2d81934303aa09ac6825 Mon Sep 17 00:00:00 2001
From: Mauren Berti <stormqueen1990@gmail.com>
Date: Sat, 21 Oct 2023 17:47:49 -0400
Subject: [PATCH 2/2] fix: lint issues

Change package for test to 'util_test' and add dot-import for the main package.
---
 .../commands/internal/util/configmapSecretFlagsAndArgs_test.go | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/kustomize/commands/internal/util/configmapSecretFlagsAndArgs_test.go b/kustomize/commands/internal/util/configmapSecretFlagsAndArgs_test.go
index c736eccfac..f27ae443bb 100644
--- a/kustomize/commands/internal/util/configmapSecretFlagsAndArgs_test.go
+++ b/kustomize/commands/internal/util/configmapSecretFlagsAndArgs_test.go
@@ -1,13 +1,14 @@
 // Copyright 2019 The Kubernetes Authors.
 // SPDX-License-Identifier: Apache-2.0
 
-package util
+package util_test
 
 import (
 	"reflect"
 	"testing"
 
 	"github.com/stretchr/testify/require"
+	. "sigs.k8s.io/kustomize/kustomize/v5/commands/internal/util"
 	"sigs.k8s.io/kustomize/kyaml/filesys"
 )