mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-12 09:24:23 +00:00
Objectify nbrSlice code.
This commit is contained in:
@@ -85,3 +85,11 @@ func (fs FieldSpec) PathSlice() []string {
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
type fsSlice []FieldSpec
|
||||
|
||||
func (s fsSlice) Len() int { return len(s) }
|
||||
func (s fsSlice) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
|
||||
func (s fsSlice) Less(i, j int) bool {
|
||||
return s[i].Gvk.IsLessThan(s[j].Gvk)
|
||||
}
|
||||
|
||||
@@ -17,8 +17,9 @@ limitations under the License.
|
||||
package config
|
||||
|
||||
import (
|
||||
"sigs.k8s.io/kustomize/pkg/gvk"
|
||||
"strings"
|
||||
|
||||
"sigs.k8s.io/kustomize/pkg/gvk"
|
||||
)
|
||||
|
||||
// NameBackReferences is an association between a gvk.GVK and a list
|
||||
@@ -63,21 +64,27 @@ func (n NameBackReferences) String() string {
|
||||
strings.Join(r, "\n") + "\n)"
|
||||
}
|
||||
|
||||
func mergeNameBackReferences(
|
||||
a, b []NameBackReferences) []NameBackReferences {
|
||||
for _, r := range b {
|
||||
a = merge(a, r)
|
||||
}
|
||||
return a
|
||||
type nbrSlice []NameBackReferences
|
||||
|
||||
func (s nbrSlice) Len() int { return len(s) }
|
||||
func (s nbrSlice) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
|
||||
func (s nbrSlice) Less(i, j int) bool {
|
||||
return s[i].Gvk.IsLessThan(s[j].Gvk)
|
||||
}
|
||||
|
||||
func merge(
|
||||
backRefsSlice []NameBackReferences,
|
||||
other NameBackReferences) []NameBackReferences {
|
||||
var result []NameBackReferences
|
||||
func (s nbrSlice) mergeAll(o nbrSlice) nbrSlice {
|
||||
result := s
|
||||
for _, r := range o {
|
||||
result = result.mergeOne(r)
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func (s nbrSlice) mergeOne(other NameBackReferences) nbrSlice {
|
||||
var result nbrSlice
|
||||
found := false
|
||||
for _, c := range backRefsSlice {
|
||||
if c.Equals(other.Gvk) {
|
||||
for _, c := range s {
|
||||
if c.Gvk.Equals(other.Gvk) {
|
||||
c.FieldSpecs = append(c.FieldSpecs, other.FieldSpecs...)
|
||||
found = true
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestFoo(t *testing.T) {
|
||||
func TestMergeAll(t *testing.T) {
|
||||
fsSlice1 := []FieldSpec{
|
||||
{
|
||||
Gvk: gvk.Gvk{
|
||||
@@ -56,7 +56,7 @@ func TestFoo(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
nbrsSlice1 := []NameBackReferences{
|
||||
nbrsSlice1 := nbrSlice{
|
||||
{
|
||||
Gvk: gvk.Gvk{
|
||||
Kind: "ConfigMap",
|
||||
@@ -70,7 +70,7 @@ func TestFoo(t *testing.T) {
|
||||
FieldSpecs: fsSlice2,
|
||||
},
|
||||
}
|
||||
nbrsSlice2 := []NameBackReferences{
|
||||
nbrsSlice2 := nbrSlice{
|
||||
{
|
||||
Gvk: gvk.Gvk{
|
||||
Kind: "ConfigMap",
|
||||
@@ -84,7 +84,7 @@ func TestFoo(t *testing.T) {
|
||||
FieldSpecs: fsSlice2,
|
||||
},
|
||||
}
|
||||
expected := []NameBackReferences{
|
||||
expected := nbrSlice{
|
||||
{
|
||||
Gvk: gvk.Gvk{
|
||||
Kind: "ConfigMap",
|
||||
@@ -99,7 +99,7 @@ func TestFoo(t *testing.T) {
|
||||
FieldSpecs: append(fsSlice2, fsSlice2...),
|
||||
},
|
||||
}
|
||||
actual := mergeNameBackReferences(nbrsSlice1, nbrsSlice2)
|
||||
actual := nbrsSlice1.mergeAll(nbrsSlice2)
|
||||
if !reflect.DeepEqual(actual, expected) {
|
||||
t.Fatalf("expected\n %v\n but got\n %v\n", expected, actual)
|
||||
}
|
||||
|
||||
@@ -22,22 +22,6 @@ import (
|
||||
"sort"
|
||||
)
|
||||
|
||||
type nbrSlice []NameBackReferences
|
||||
|
||||
func (s nbrSlice) Len() int { return len(s) }
|
||||
func (s nbrSlice) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
|
||||
func (s nbrSlice) Less(i, j int) bool {
|
||||
return s[i].Gvk.IsLessThan(s[j].Gvk)
|
||||
}
|
||||
|
||||
type fsSlice []FieldSpec
|
||||
|
||||
func (s fsSlice) Len() int { return len(s) }
|
||||
func (s fsSlice) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
|
||||
func (s fsSlice) Less(i, j int) bool {
|
||||
return s[i].Gvk.IsLessThan(s[j].Gvk)
|
||||
}
|
||||
|
||||
// TransformerConfig holds the data needed to perform transformations.
|
||||
type TransformerConfig struct {
|
||||
NamePrefix fsSlice `json:"namePrefix,omitempty" yaml:"namePrefix,omitempty"`
|
||||
@@ -75,7 +59,7 @@ func (t *TransformerConfig) AddAnnotationFieldSpec(fs FieldSpec) {
|
||||
|
||||
// AddNamereferenceFieldSpec adds a NameBackReferences to NameReference
|
||||
func (t *TransformerConfig) AddNamereferenceFieldSpec(nbrs NameBackReferences) {
|
||||
t.NameReference = mergeNameBackReferences(t.NameReference, []NameBackReferences{nbrs})
|
||||
t.NameReference = t.NameReference.mergeOne(nbrs)
|
||||
}
|
||||
|
||||
// Merge merges two TransformerConfigs objects into a new TransformerConfig object
|
||||
@@ -86,7 +70,7 @@ func (t *TransformerConfig) Merge(input *TransformerConfig) *TransformerConfig {
|
||||
merged.CommonAnnotations = append(t.CommonAnnotations, input.CommonAnnotations...)
|
||||
merged.CommonLabels = append(t.CommonLabels, input.CommonLabels...)
|
||||
merged.VarReference = append(t.VarReference, input.VarReference...)
|
||||
merged.NameReference = mergeNameBackReferences(t.NameReference, input.NameReference)
|
||||
merged.NameReference = t.NameReference.mergeAll(input.NameReference)
|
||||
merged.sortFields()
|
||||
return merged
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ func TestAddNamereferenceFieldSpec(t *testing.T) {
|
||||
|
||||
cfg.AddNamereferenceFieldSpec(nbrs)
|
||||
if len(cfg.NameReference) != 1 {
|
||||
t.Fatal("failed to add namerefence FieldSpec")
|
||||
t.Fatal("failed to add namereference FieldSpec")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user