diff --git a/kyaml/kio/byteio_readwriter_test.go b/kyaml/kio/byteio_readwriter_test.go index 4488cce6e1d..e096f2707f2 100644 --- a/kyaml/kio/byteio_readwriter_test.go +++ b/kyaml/kio/byteio_readwriter_test.go @@ -425,14 +425,12 @@ spec: `, }, { - name: "round_trip with mixed indentations in same resource, wide wins", + name: "round_trip with mixed indentations in same resource, wide wins as it is first", input: ` apiVersion: apps/v1 kind: Deployment spec: - foo - - bar - - baz env: - foo - bar @@ -442,22 +440,18 @@ apiVersion: apps/v1 kind: Deployment spec: - foo - - bar - - baz env: - foo - bar `, }, { - name: "round_trip with mixed indentations in same resource, compact wins", + name: "round_trip with mixed indentations in same resource, compact wins as it is first", input: ` apiVersion: apps/v1 kind: Deployment spec: - foo -- bar -- baz env: - foo - bar @@ -467,31 +461,6 @@ apiVersion: apps/v1 kind: Deployment spec: - foo -- bar -- baz -env: -- foo -- bar -`, - }, - { - name: "round_trip with mixed indentations in same resource, compact in case of a tie", - input: ` -apiVersion: apps/v1 -kind: Deployment -spec: -- foo -- bar -env: - - foo - - bar -`, - expectedOutput: ` -apiVersion: apps/v1 -kind: Deployment -spec: -- foo -- bar env: - foo - bar diff --git a/kyaml/kio/byteio_writer.go b/kyaml/kio/byteio_writer.go index 628ce438a17..33e5a8999d8 100644 --- a/kyaml/kio/byteio_writer.go +++ b/kyaml/kio/byteio_writer.go @@ -108,7 +108,7 @@ func (w ByteWriter) Write(inputNodes []*yaml.RNode) error { // don't wrap the elements if w.WrappingKind == "" { for i := range nodes { - if seqIndentsForNodes[i] == string(yaml.WideSeqIndent) { + if seqIndentsForNodes[i] == string(yaml.WideSequenceStyle) { encoder.DefaultSeqIndent() } else { encoder.CompactSeqIndent() diff --git a/kyaml/yaml/alias.go b/kyaml/yaml/alias.go index b4a60ad112c..5a373011877 100644 --- a/kyaml/yaml/alias.go +++ b/kyaml/yaml/alias.go @@ -11,19 +11,19 @@ import ( ) const ( - WideSeqIndent SeqIndentType = "wide" - CompactSeqIndent SeqIndentType = "compact" - DefaultIndent = 2 + WideSequenceStyle SequenceIndentStyle = "wide" + CompactSequenceStyle SequenceIndentStyle = "compact" + DefaultIndent = 2 ) // SeqIndentType holds the indentation style for sequence nodes -type SeqIndentType string +type SequenceIndentStyle string // EncoderOptions are options that can be used to configure the encoder, // do not expose new options without considerable justification type EncoderOptions struct { // SeqIndent is the indentation style for YAML Sequence nodes - SeqIndent SeqIndentType + SeqIndent SequenceIndentStyle } // Expose the yaml.v3 functions so this package can be used as a replacement @@ -69,7 +69,7 @@ func MarshalWithOptions(in interface{}, opts *EncoderOptions) ([]byte, error) { func NewEncoderWithOptions(w io.Writer, opts *EncoderOptions) *yaml.Encoder { encoder := NewEncoder(w) encoder.SetIndent(DefaultIndent) - if opts.SeqIndent == WideSeqIndent { + if opts.SeqIndent == WideSequenceStyle { encoder.DefaultSeqIndent() } else { encoder.CompactSeqIndent() diff --git a/kyaml/yaml/util.go b/kyaml/yaml/util.go index df6c79d33d0..bada8711c80 100644 --- a/kyaml/yaml/util.go +++ b/kyaml/yaml/util.go @@ -29,20 +29,21 @@ func DeriveSeqIndentStyle(originalYAML string) string { numSpacesBeforeKeyElem := len(keyLine) - len(strings.TrimLeft(keyLine, " ")) trimmedKeyLine := strings.Trim(keyLine, " ") - if strings.HasSuffix(trimmedKeyLine, "|") || strings.HasSuffix(trimmedKeyLine, "|-") { + if strings.Count(trimmedKeyLine, ":") != 1 || !strings.HasSuffix(trimmedKeyLine, ":") { + // if the key line doesn't contain only one : that too at the end, // this is not a sequence node, it is a wrapped sequence node string // ignore it continue } if numSpacesBeforeSeqElem == numSpacesBeforeKeyElem { - return string(CompactSeqIndent) + return string(CompactSequenceStyle) } if numSpacesBeforeSeqElem-numSpacesBeforeKeyElem == 2 { - return string(WideSeqIndent) + return string(WideSequenceStyle) } } - return string(CompactSeqIndent) + return string(CompactSequenceStyle) } diff --git a/kyaml/yaml/util_test.go b/kyaml/yaml/util_test.go index a83725c2874..ef0d1fb5d24 100644 --- a/kyaml/yaml/util_test.go +++ b/kyaml/yaml/util_test.go @@ -79,16 +79,42 @@ env: expectedOutput: `compact`, }, { - name: "skip wrapped sequence strings", + name: "skip wrapped sequence strings, pipe hyphen", input: `apiVersion: apps/v1 kind: Deployment spec: |- - foo - bar -env: -- foo -- bar -- baz +`, + expectedOutput: `compact`, + }, + { + name: "skip wrapped sequence strings, pipe", + input: `apiVersion: apps/v1 +kind: Deployment +spec: | + - foo + - bar +`, + expectedOutput: `compact`, + }, + { + name: "skip wrapped sequence strings, right angle bracket", + input: `apiVersion: apps/v1 +kind: Deployment +spec: > + - foo + - bar +`, + expectedOutput: `compact`, + }, + { + name: "skip wrapped sequence strings, plus", + input: `apiVersion: apps/v1 +kind: Deployment +spec: + + - foo + - bar `, expectedOutput: `compact`, },