Commit c1540795 authored by Taylor Thomas's avatar Taylor Thomas Committed by GitHub

Merge pull request #2190 from anubhavmishra/whitespace-yaml-parsing

fix(helm): manifests string parsing works for newlines in the manifests
parents 55791e22 68d400cd
......@@ -18,7 +18,7 @@ package releaseutil
import (
"fmt"
"strings"
"regexp"
)
// SimpleHead defines what the structure of the head of a manifest file
......@@ -31,17 +31,18 @@ type SimpleHead struct {
} `json:"metadata,omitempty"`
}
var sep = regexp.MustCompile("(?:^|\\s*\n)---\\s*")
// SplitManifests takes a string of manifest and returns a map contains individual manifests
func SplitManifests(bigfile string) map[string]string {
// This is not the best way of doing things, but it's how k8s itself does it.
// Basically, we're quickly splitting a stream of YAML documents into an
// array of YAML docs. In the current implementation, the file name is just
// a place holder, and doesn't have any further meaning.
sep := "\n---\n"
tpl := "manifest-%d"
res := map[string]string{}
tmp := strings.Split(bigfile, sep)
for i, d := range tmp {
// Making sure that any extra whitespace in YAML stream doesn't interfere in splitting documents correctly.
docs := sep.Split(bigfile, -1)
for i, d := range docs {
res[fmt.Sprintf(tpl, i)] = d
}
return res
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment