in gke-deploy/core/resource/resource.go [548:590]
func parseResourcesFromFile(ctx context.Context, filename string, objs Objects, oss services.OSService) (Objects, error) {
readStdin := filename == "-"
var printFilename string
if readStdin {
printFilename = "stdin"
} else {
printFilename = fmt.Sprintf("file %q", filename)
}
in, err := oss.ReadFile(ctx, filename)
if err != nil {
return nil, fmt.Errorf("failed to read %s: %v", printFilename, err)
}
if readStdin {
filename = "k8s.yaml" // Files parsed from stdin will have the prefix "k8s".
}
split := strings.Split(string(in), "\n---")
for i, r := range split {
lines := strings.Split(r, "\n")
onlyCommentsAndWhitespace := true
for _, line := range lines {
trimmedLine := strings.TrimSpace(line)
if trimmedLine != "" && !strings.HasPrefix(trimmedLine, "#") {
onlyCommentsAndWhitespace = false
break
}
}
if onlyCommentsAndWhitespace {
continue
}
obj, err := DecodeFromYAML(ctx, []byte(r))
if err != nil {
return nil, fmt.Errorf("failed to decode resource from item %d in %s: %v", i+1, printFilename, err)
}
objs = append(objs, obj)
}
return objs, nil
}