From 2289e7d2e9627870e73dabf6ddca9facdb5e1e3e Mon Sep 17 00:00:00 2001 From: jregan Date: Sun, 16 Aug 2020 13:25:19 -0700 Subject: [PATCH 1/2] Copy kyaml/yaml/types to kyaml/yaml/mapnode. --- kyaml/yaml/{types.go => mapnode.go} | 0 kyaml/yaml/{types_test.go => mapnode_test.go} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename kyaml/yaml/{types.go => mapnode.go} (100%) rename kyaml/yaml/{types_test.go => mapnode_test.go} (100%) diff --git a/kyaml/yaml/types.go b/kyaml/yaml/mapnode.go similarity index 100% rename from kyaml/yaml/types.go rename to kyaml/yaml/mapnode.go diff --git a/kyaml/yaml/types_test.go b/kyaml/yaml/mapnode_test.go similarity index 100% rename from kyaml/yaml/types_test.go rename to kyaml/yaml/mapnode_test.go From 25dbe1eaa8d5da707a64af01e4a8444969992e4c Mon Sep 17 00:00:00 2001 From: jregan Date: Sun, 16 Aug 2020 13:25:19 -0700 Subject: [PATCH 2/2] Delete non-kyaml/yaml/mapnode stuff from kyaml/yaml/mapnode. --- kyaml/yaml/mapnode.go | 183 ------------------------------------- kyaml/yaml/mapnode_test.go | 55 ----------- 2 files changed, 238 deletions(-) diff --git a/kyaml/yaml/mapnode.go b/kyaml/yaml/mapnode.go index a19e30df9..31b41b40f 100644 --- a/kyaml/yaml/mapnode.go +++ b/kyaml/yaml/mapnode.go @@ -3,91 +3,6 @@ package yaml -import ( - "bytes" - "strings" - - "gopkg.in/yaml.v3" - "sigs.k8s.io/kustomize/kyaml/errors" - "sigs.k8s.io/kustomize/kyaml/sets" -) - -// IsYNodeTaggedNull returns true if the node is explicitly tagged Null. -func IsYNodeTaggedNull(n *yaml.Node) bool { - return n != nil && n.Tag == NodeTagNull -} - -// IsYNodeEmptyMap is true if the Node is a non-nil empty map. -func IsYNodeEmptyMap(n *yaml.Node) bool { - return n != nil && n.Kind == yaml.MappingNode && len(n.Content) == 0 -} - -// IsYNodeEmptyMap is true if the Node is a non-nil empty sequence. -func IsYNodeEmptySeq(n *yaml.Node) bool { - return n != nil && n.Kind == yaml.SequenceNode && len(n.Content) == 0 -} - -// IsYNodeEmptyDoc is true if the node is a Document with no content. -// E.g.: "---\n---" -func IsYNodeEmptyDoc(n *yaml.Node) bool { - return n.Kind == yaml.DocumentNode && n.Content[0].Tag == NodeTagNull -} - -func IsYNodeString(n *yaml.Node) bool { - return n.Kind == yaml.ScalarNode && n.Tag == NodeTagString -} - -// Parser parses values into configuration. -type Parser struct { - Kind string `yaml:"kind,omitempty"` - Value string `yaml:"value,omitempty"` -} - -func (p Parser) Filter(_ *RNode) (*RNode, error) { - d := yaml.NewDecoder(bytes.NewBuffer([]byte(p.Value))) - o := &RNode{value: &yaml.Node{}} - return o, d.Decode(o.value) -} - -// TODO(pwittrock): test this -func GetStyle(styles ...string) Style { - var style Style - for _, s := range styles { - switch s { - case "TaggedStyle": - style |= TaggedStyle - case "DoubleQuotedStyle": - style |= DoubleQuotedStyle - case "SingleQuotedStyle": - style |= SingleQuotedStyle - case "LiteralStyle": - style |= LiteralStyle - case "FoldedStyle": - style |= FoldedStyle - case "FlowStyle": - style |= FlowStyle - } - } - return style -} - -// Filter defines a function to manipulate an individual RNode such as by changing -// its values, or returning a field. -// -// When possible, Filters should be serializable to yaml so that they can be described -// declaratively as data. -// -// Analogous to http://www.linfo.org/filters.html -type Filter interface { - Filter(object *RNode) (*RNode, error) -} - -type FilterFunc func(object *RNode) (*RNode, error) - -func (f FilterFunc) Filter(object *RNode) (*RNode, error) { - return f(object) -} - // MapNode wraps a field key and value. type MapNode struct { Key *RNode @@ -123,101 +38,3 @@ func (m MapNodeSlice) Values() []*RNode { } return values } - -type TypeMeta struct { - Kind string - APIVersion string -} - -// ResourceMeta contains the metadata for a both Resource Type and Resource. -type ResourceMeta struct { - // APIVersion is the apiVersion field of a Resource - APIVersion string `yaml:"apiVersion,omitempty"` - // Kind is the kind field of a Resource - Kind string `yaml:"kind,omitempty"` - // ObjectMeta is the metadata field of a Resource - ObjectMeta `yaml:"metadata,omitempty"` -} - -// ObjectMeta contains metadata about a Resource -type ObjectMeta struct { - // Name is the metadata.name field of a Resource - Name string `yaml:"name,omitempty"` - // Namespace is the metadata.namespace field of a Resource - Namespace string `yaml:"namespace,omitempty"` - // Labels is the metadata.labels field of a Resource - Labels map[string]string `yaml:"labels,omitempty"` - // Annotations is the metadata.annotations field of a Resource. - Annotations map[string]string `yaml:"annotations,omitempty"` -} - -// GetIdentifier returns a ResourceIdentifier that includes -// the information needed to uniquely identify a resource in a cluster. -func (m *ResourceMeta) GetIdentifier() ResourceIdentifier { - return ResourceIdentifier{ - Name: m.Name, - Namespace: m.Namespace, - APIVersion: m.APIVersion, - Kind: m.Kind, - } -} - -// ResourceIdentifier contains the information needed to uniquely -// identify a resource in a cluster. -type ResourceIdentifier struct { - // Name is the name of the resource as set in metadata.name - Name string `yaml:"name,omitempty"` - // Namespace is the namespace of the resource as set in metadata.namespace - Namespace string `yaml:"namespace,omitempty"` - // ApiVersion is the apiVersion of the resource - APIVersion string `yaml:"apiVersion,omitempty"` - // Kind is the kind of the resource - Kind string `yaml:"kind,omitempty"` -} - -func (r *ResourceIdentifier) GetName() string { - return r.Name -} - -func (r *ResourceIdentifier) GetNamespace() string { - return r.Namespace -} - -func (r *ResourceIdentifier) GetAPIVersion() string { - return r.APIVersion -} - -func (r *ResourceIdentifier) GetKind() string { - return r.Kind -} - -const ( - Trim = "Trim" - Flow = "Flow" -) - -// String returns a string value for a Node, applying the supplied formatting options -func String(node *yaml.Node, opts ...string) (string, error) { - if node == nil { - return "", nil - } - optsSet := sets.String{} - optsSet.Insert(opts...) - if optsSet.Has(Flow) { - oldStyle := node.Style - defer func() { - node.Style = oldStyle - }() - node.Style = yaml.FlowStyle - } - - b := &bytes.Buffer{} - e := NewEncoder(b) - err := e.Encode(node) - e.Close() - val := b.String() - if optsSet.Has(Trim) { - val = strings.TrimSpace(val) - } - return val, errors.Wrap(err) -} diff --git a/kyaml/yaml/mapnode_test.go b/kyaml/yaml/mapnode_test.go index 14ad7dd6e..9b76523c3 100644 --- a/kyaml/yaml/mapnode_test.go +++ b/kyaml/yaml/mapnode_test.go @@ -7,61 +7,6 @@ import ( "testing" ) -func TestIsYNodeTaggedNull(t *testing.T) { - if IsYNodeTaggedNull(nil) { - t.Fatalf("nil cannot be tagged null") - } - if IsYNodeTaggedNull(&Node{}) { - t.Fatalf("untagged node is not tagged") - } - if IsYNodeTaggedNull(&Node{Tag: NodeTagFloat}) { - t.Fatalf("float tagged node is not tagged") - } - if !IsYNodeTaggedNull(&Node{Tag: NodeTagNull}) { - t.Fatalf("tagged node is tagged") - } -} - -func TestIsYNodeEmptyMap(t *testing.T) { - if IsYNodeEmptyMap(nil) { - t.Fatalf("nil cannot be a map") - } - if IsYNodeEmptyMap(&Node{}) { - t.Fatalf("raw node is not a map") - } - if IsYNodeEmptyMap(&Node{Kind: SequenceNode}) { - t.Fatalf("seq node is not a map") - } - n := &Node{Kind: MappingNode} - if !IsYNodeEmptyMap(n) { - t.Fatalf("empty mapping node is an empty mapping node") - } - n.Content = append(n.Content, &Node{Kind: SequenceNode}) - if IsYNodeEmptyMap(n) { - t.Fatalf("a node with content isn't empty") - } -} - -func TestIsYNodeEmptySeq(t *testing.T) { - if IsYNodeEmptySeq(nil) { - t.Fatalf("nil cannot be a map") - } - if IsYNodeEmptySeq(&Node{}) { - t.Fatalf("raw node is not a map") - } - if IsYNodeEmptySeq(&Node{Kind: MappingNode}) { - t.Fatalf("map node is not a sequence") - } - n := &Node{Kind: SequenceNode} - if !IsYNodeEmptySeq(n) { - t.Fatalf("empty sequence node is an empty sequence node") - } - n.Content = append(n.Content, &Node{Kind: MappingNode}) - if IsYNodeEmptySeq(n) { - t.Fatalf("a node with content isn't empty") - } -} - func TestMapNodeIsNilOrEmpty(t *testing.T) { var mn *MapNode