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
}