|
8 | 8 |
|
9 | 9 | import {GithubConfig} from '../../utils/config.js'; |
10 | 10 | import {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js'; |
| 11 | +import {getCurrentMergeMode} from '../../utils/git/repository-merge-mode.js'; |
11 | 12 | import {ReleaseConfig} from '../config/index.js'; |
12 | 13 | import {ActiveReleaseTrains} from '../versioning/active-release-trains.js'; |
13 | 14 | import {NpmCommand} from '../versioning/npm-command.js'; |
@@ -53,7 +54,8 @@ export class ReleaseTool { |
53 | 54 | !(await this._verifyNoUncommittedChanges()) || |
54 | 55 | !(await this._verifyRunningFromNextBranch(nextBranchName)) || |
55 | 56 | !(await this._verifyNoShallowRepository()) || |
56 | | - !(await verifyNgDevToolIsUpToDate(this._projectRoot)) |
| 57 | + !(await verifyNgDevToolIsUpToDate(this._projectRoot)) || |
| 58 | + !(await this._verifyInReleaseMergeMode()) |
57 | 59 | ) { |
58 | 60 | return CompletionState.FATAL_ERROR; |
59 | 61 | } |
@@ -144,6 +146,26 @@ export class ReleaseTool { |
144 | 146 | return true; |
145 | 147 | } |
146 | 148 |
|
| 149 | + /** |
| 150 | + * Verifies that there are no uncommitted changes in the project. |
| 151 | + * @returns a boolean indicating success or failure. |
| 152 | + */ |
| 153 | + private async _verifyInReleaseMergeMode(): Promise<boolean> { |
| 154 | + if (this._github.requireReleaseModeForRelease !== true) { |
| 155 | + Log.debug('Skipping check for release mode before merge as the repository does not have'); |
| 156 | + Log.debug('requireReleaseModeForRelease set to true in the GithubConfig.'); |
| 157 | + return true; |
| 158 | + } |
| 159 | + const mode = await getCurrentMergeMode(); |
| 160 | + if (mode !== 'release') { |
| 161 | + Log.error(` ✘ The repository merge-mode is set to ${mode} but must be set to release`); |
| 162 | + Log.error(' prior to publishing releases. You can set merge-mode for release using:'); |
| 163 | + Log.error(' ng-dev caretaker merge-mode release'); |
| 164 | + return false; |
| 165 | + } |
| 166 | + return true; |
| 167 | + } |
| 168 | + |
147 | 169 | /** |
148 | 170 | * Verifies that the local repository is not configured as shallow. |
149 | 171 | * @returns a boolean indicating success or failure. |
|
0 commit comments