func CreateFilesAndDirectories()

in cmd/release/minor/projects/projects.go [22:61]


func CreateFilesAndDirectories(prevReleaseBranchInput string, nextReleaseBranchInput string) (int, error) {
	prevReleaseBranch, nextReleaseBranch = prevReleaseBranchInput, nextReleaseBranchInput

	eksdProjects, err := projects.GetProjects()
	if err != nil {
		return -1, fmt.Errorf("getting projects: %w", err)
	}
	for _, project := range eksdProjects {
		projectPath := project.GetFilePath()
		prevReleaseBranchRepoPath := filepath.Join(projectPath, prevReleaseBranch)
		if _, err = os.Stat(prevReleaseBranchRepoPath); os.IsNotExist(err) {
			return -1, fmt.Errorf("expected %s to exist but it does not", prevReleaseBranchRepoPath)
		}
		// Create new release branch directory at projects/<org>/<repo>/<release_branch>
		nextReleaseBranchRepoPath := filepath.Join(projectPath, nextReleaseBranch)
		if err = os.Mkdir(nextReleaseBranchRepoPath, 0755); err != nil {
			return -1, fmt.Errorf("creating new directory %s", nextReleaseBranchRepoPath)
		}
		// Copy all files and directories from the latest release branch to new one
		err = copyDir(prevReleaseBranchRepoPath, nextReleaseBranchRepoPath)
		if err != nil {
			return -1, fmt.Errorf("copying directories and files: %w", err)
		}
	}

	// Validate results
	prevReleaseBranchFileCount, err := getFileCount(prevReleaseBranch)
	if err != nil {
		return -1, fmt.Errorf("getting previous release branch project file count: %w", err)
	}
	nextReleaseBranchFileCount, err := getFileCount(nextReleaseBranch)
	if err != nil {
		return -1, fmt.Errorf("getting next release branch project file count: %w", err)
	}
	if prevReleaseBranchFileCount != nextReleaseBranchFileCount {
		return -1, fmt.Errorf("expected previous release branch file count (%d) to match next release branch file count (%d)",
			prevReleaseBranchFileCount, nextReleaseBranchFileCount)
	}
	return nextReleaseBranchFileCount, nil
}