| | | 1 | | package domain |
| | | 2 | | |
| | | 3 | | // ReleasePlan describes what will happen during a release execution. |
| | | 4 | | type ReleasePlan struct { |
| | | 5 | | Projects []ProjectReleasePlan |
| | | 6 | | DryRun bool |
| | | 7 | | Branch string |
| | | 8 | | Policy *BranchPolicy |
| | | 9 | | } |
| | | 10 | | |
| | | 11 | | // ProjectReleasePlan describes the release plan for a single project. |
| | | 12 | | type ProjectReleasePlan struct { |
| | | 13 | | Project Project |
| | | 14 | | CurrentVersion Version |
| | | 15 | | NextVersion Version |
| | | 16 | | ReleaseType ReleaseType |
| | | 17 | | Commits []Commit |
| | | 18 | | ShouldRelease bool |
| | | 19 | | Reason string // human-readable explanation |
| | | 20 | | } |
| | | 21 | | |
| | | 22 | | // HasReleasableProjects returns true if at least one project needs a release. |
| | 3 | 23 | | func (rp ReleasePlan) HasReleasableProjects() bool { |
| | 3 | 24 | | for i := range rp.Projects { |
| | 1 | 25 | | if rp.Projects[i].ShouldRelease { |
| | 1 | 26 | | return true |
| | 1 | 27 | | } |
| | | 28 | | } |
| | 2 | 29 | | return false |
| | | 30 | | } |
| | | 31 | | |
| | | 32 | | // ReleasableProjects returns only the projects that need a release. |
| | 1 | 33 | | func (rp ReleasePlan) ReleasableProjects() []ProjectReleasePlan { |
| | 1 | 34 | | var result []ProjectReleasePlan |
| | 1 | 35 | | for i := range rp.Projects { |
| | 2 | 36 | | if rp.Projects[i].ShouldRelease { |
| | 2 | 37 | | result = append(result, rp.Projects[i]) |
| | 2 | 38 | | } |
| | | 39 | | } |
| | 1 | 40 | | return result |
| | | 41 | | } |