Skip to content

Commit ed6a7d1

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

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

ng-dev/caretaker/config/BUILD.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ load("//tools:defaults.bzl", "ts_project")
33
ts_project(
44
name = "config",
55
srcs = glob(["**/*.ts"]),
6-
visibility = ["//ng-dev/caretaker:__subpackages__"],
6+
visibility = ["//ng-dev:__subpackages__"],
77
deps = [
88
"//ng-dev:node_modules/@types/yargs",
99
"//ng-dev:node_modules/yargs",

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
@@ -20,6 +20,7 @@ import {actions} from './actions/index.js';
2020
import {verifyNgDevToolIsUpToDate} from '../../utils/version-check.js';
2121
import {Log, yellow} from '../../utils/logging.js';
2222
import {Prompt} from '../../utils/prompt.js';
23+
import {getRepoConfigValue} from '../../caretaker/config/get/index.js';
2324

2425
export enum CompletionState {
2526
SUCCESS,
@@ -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 getRepoConfigValue('merge-mode');
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 relese by running `ng-dev caretaker start-release`',
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)