in gke-deploy/core/resource/resource.go [151:198]
func SaveAsConfigs(ctx context.Context, objs Objects, outputDir string, lineComments map[string]string, oss services.OSService) (string, error) {
fi, err := oss.Stat(ctx, outputDir)
if err != nil && !os.IsNotExist(err) {
return "", fmt.Errorf("failed to get file info for output directory %q: %v", outputDir, err)
}
if err == nil && !fi.IsDir() {
return "", fmt.Errorf("output directory %q exists as a file", outputDir)
}
if err == nil && fi.IsDir() {
files, err := oss.ReadDir(ctx, outputDir)
if err != nil {
return "", fmt.Errorf("failed to list files in output directory %q: %v", outputDir, err)
}
if len(files) != 0 {
return "", fmt.Errorf("output directory %q exists and is not empty", outputDir)
}
}
if err := oss.MkdirAll(ctx, outputDir, os.ModePerm); err != nil {
return "", fmt.Errorf("failed to create output directory %q: %v", outputDir, err)
}
filename := filepath.Join(outputDir, AggregatedFilename)
resources := make([]string, 0, len(objs))
for _, obj := range objs {
out, err := runtime.Encode(encoder, obj)
if err != nil {
return "", fmt.Errorf("failed to encode resource: %v", err)
}
outWithComments, err := addCommentsToLines(string(out), lineComments)
if err != nil {
return "", fmt.Errorf("failed to add comment to object file: %v", err)
}
resources = append(resources, outWithComments)
}
contents := strings.Join(resources, "\n\n---\n\n")
if err := oss.WriteFile(ctx, filename, []byte(contents), 0644); err != nil {
return "", fmt.Errorf("failed to write file %q: %v", filename, err)
}
return filename, nil
}