Skip to content

Commit b8b4291

Browse files
committed
feat(ng-dev): add support for ensuring merge-mode is set to release before publishing a new release
1 parent b9a36f2 commit b8b4291

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

ng-dev/release/publish/index.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import {GithubConfig} from '../../utils/config.js';
1010
import {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';
11+
import {getCurrentMergeMode} from '../../utils/git/repository-merge-mode.js';
1112
import {ReleaseConfig} from '../config/index.js';
1213
import {ActiveReleaseTrains} from '../versioning/active-release-trains.js';
1314
import {NpmCommand} from '../versioning/npm-command.js';
@@ -50,6 +51,7 @@ export class ReleaseTool {
5051
const nextBranchName = getNextBranchName(this._github);
5152

5253
if (
54+
!(await this._verifyInReleaseMergeMode()) ||
5355
!(await this._verifyNoUncommittedChanges()) ||
5456
!(await this._verifyRunningFromNextBranch(nextBranchName)) ||
5557
!(await this._verifyNoShallowRepository()) ||
@@ -144,6 +146,21 @@ export class ReleaseTool {
144146
return true;
145147
}
146148

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 mode = await getCurrentMergeMode();
155+
if (mode !== 'release') {
156+
Log.error(` ✘ The repository merge-mode is set to ${mode} but must be set to release`);
157+
Log.error(' prior to publishing releases. You can set merge-mode for release using:');
158+
Log.error(' ng-dev caretaker merge-mode release');
159+
return false;
160+
}
161+
return true;
162+
}
163+
147164
/**
148165
* Verifies that the local repository is not configured as shallow.
149166
* @returns a boolean indicating success or failure.

0 commit comments

Comments
 (0)