func copyDir()

in cmd/release/minor/projects/projects.go [63:88]


func copyDir(prevReleaseBranchPath, nextReleaseBranchPath string) error {
	prevReleaseBranchDirs, err := os.ReadDir(prevReleaseBranchPath)
	if err != nil {
		return fmt.Errorf("reading directory at path %s: %w", prevReleaseBranchPath, err)
	} else if len(prevReleaseBranchDirs) == 0 {
		return nil
	}

	for _, prevReleaseBranchChildDir := range prevReleaseBranchDirs {
		prevReleaseBranchChildPath := filepath.Join(prevReleaseBranchPath, prevReleaseBranchChildDir.Name())
		nextReleaseBranchDirPath := filepath.Join(nextReleaseBranchPath, prevReleaseBranchChildDir.Name())
		if prevReleaseBranchChildDir.IsDir() {
			if err = os.Mkdir(nextReleaseBranchDirPath, 0755); err != nil {
				return fmt.Errorf("creating new directory to copy %s", nextReleaseBranchDirPath)
			}
			if err = copyDir(prevReleaseBranchChildPath, nextReleaseBranchDirPath); err != nil {
				return fmt.Errorf("copying child directory %s", prevReleaseBranchChildPath)
			}
		} else {
			if err = copyFile(prevReleaseBranchChildPath, nextReleaseBranchDirPath); err != nil {
				return fmt.Errorf("coping file: %w", err)
			}
		}
	}
	return nil
}