Skip to content

Commit 16d0a4d

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

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

ng-dev/release/publish/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ ts_project(
1717
"//ng-dev:node_modules/folder-hash",
1818
"//ng-dev:node_modules/semver",
1919
"//ng-dev:node_modules/typed-graphqlify",
20+
"//ng-dev/caretaker/config",
2021
"//ng-dev/commit-message",
2122
"//ng-dev/pr/merge",
2223
"//ng-dev/release/build",

ng-dev/release/publish/index.ts

Lines changed: 20 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,24 @@ 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 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+
147167
/**
148168
* Verifies that the local repository is not configured as shallow.
149169
* @returns a boolean indicating success or failure.

0 commit comments

Comments
 (0)