|
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'; |
@@ -50,6 +51,7 @@ export class ReleaseTool { |
50 | 51 | const nextBranchName = getNextBranchName(this._github); |
51 | 52 |
|
52 | 53 | if ( |
| 54 | + !(await this._verifyInReleaseMergeMode()) || |
53 | 55 | !(await this._verifyNoUncommittedChanges()) || |
54 | 56 | !(await this._verifyRunningFromNextBranch(nextBranchName)) || |
55 | 57 | !(await this._verifyNoShallowRepository()) || |
@@ -144,6 +146,24 @@ 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 | + const currentMergeMode = await getCurrentMergeMode(); |
| 155 | + if (currentMergeMode !== 'release') { |
| 156 | + Log.error( |
| 157 | + ` ✘ The repository merge-mode is currently set to ${currentMergeMode} but must be set to release before`, |
| 158 | + ); |
| 159 | + Log.error( |
| 160 | + '. publishing releases. You can set the repository to release by running `ng-dev caretaker enable-release-mode`', |
| 161 | + ); |
| 162 | + return false; |
| 163 | + } |
| 164 | + return true; |
| 165 | + } |
| 166 | + |
147 | 167 | /** |
148 | 168 | * Verifies that the local repository is not configured as shallow. |
149 | 169 | * @returns a boolean indicating success or failure. |
|
0 commit comments