func CopyWithOptions()

in utils/file.go [14:43]


func CopyWithOptions(srcDir, dstDir, prefixForDstFile string) error {
	srcFiles, err := os.ReadDir(srcDir)
	if err != nil {
		return fmt.Errorf("failed to read source directory: %w", err)
	}
	if !Exists(dstDir) {
		err = os.MkdirAll(dstDir, 0755)
		if err != nil {
			return fmt.Errorf("failed to create destination directory: %w", err)
		}
	}
	for _, srcFile := range srcFiles {
		srcFilePath := path.Join(srcDir, srcFile.Name())
		dstFilePath := path.Join(dstDir, prefixForDstFile+srcFile.Name())
		if srcFile.IsDir() {
			if err := Copy(srcFilePath, dstFilePath); err != nil {
				return fmt.Errorf("failed to copy directory: %w", err)
			}
		} else {
			data, err := os.ReadFile(srcFilePath)
			if err != nil {
				return fmt.Errorf("failed to read source file: %w", err)
			}
			if err := os.WriteFile(dstFilePath, data, 0644); err != nil {
				return fmt.Errorf("failed to write destination file: %w", err)
			}
		}
	}
	return nil
}