func SaveAsConfigs()

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
}