@solidxai/solidctl 0.1.48 → 0.1.50-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/migration.command.js +3 -43
- package/dist/commands/migration.command.js.map +1 -1
- package/dist/commands/release-changelog.d.ts +2 -0
- package/dist/commands/release-changelog.js +14 -6
- package/dist/commands/release-changelog.js.map +1 -1
- package/dist/commands/release-helper.d.ts +35 -0
- package/dist/commands/release-helper.js +374 -0
- package/dist/commands/release-helper.js.map +1 -0
- package/dist/commands/release.command.js +65 -80
- package/dist/commands/release.command.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -69,18 +69,14 @@ function runTypeormCli(args, solidApiDir, failureLabel) {
|
|
|
69
69
|
function registerMigrationCommand(program) {
|
|
70
70
|
program
|
|
71
71
|
.command('migration <action> [migrationName]')
|
|
72
|
-
.description('Generate, run,
|
|
72
|
+
.description('Generate, run, or revert TypeORM migrations for a datasource')
|
|
73
73
|
.option('-d, --datasource <datasource>', 'Datasource name (maps to src/typeorm-<datasource>-datasource.ts), required for generate/run/revert')
|
|
74
74
|
.option('-m, --module <module>', 'Module name, required for generate')
|
|
75
|
-
.option('-n, --name <modelName>', 'Model name (singularName), required for remove-field')
|
|
76
|
-
.option('--apply', 'Apply the cleanup instead of running a dry-run preview (used with remove-field)')
|
|
77
75
|
.addHelpText('after', `
|
|
78
76
|
Examples:
|
|
79
77
|
solidctl migration -d default -m onboarding generate AddPreApplicationMaster
|
|
80
78
|
solidctl migration -d default run
|
|
81
|
-
solidctl migration -d default revert
|
|
82
|
-
solidctl migration -n book remove-field
|
|
83
|
-
solidctl migration -n book remove-field --apply`)
|
|
79
|
+
solidctl migration -d default revert`)
|
|
84
80
|
.action((action, migrationName, options) => {
|
|
85
81
|
(0, helper_1.validateProjectRoot)();
|
|
86
82
|
const normalizedAction = action.trim().toLowerCase();
|
|
@@ -121,43 +117,7 @@ Examples:
|
|
|
121
117
|
runTypeormCli(['typeorm-ts-node-commonjs', 'migration:revert', '-d', `src/typeorm-${options.datasource}-datasource.ts`], solidApiDir, 'revert migration');
|
|
122
118
|
return;
|
|
123
119
|
}
|
|
124
|
-
|
|
125
|
-
if (!options.name) {
|
|
126
|
-
console.error('Option --name <model> is required for remove-field.');
|
|
127
|
-
process.exit(1);
|
|
128
|
-
}
|
|
129
|
-
const mainCliPath = path_1.default.join(solidApiDir, 'dist', 'main-cli.js');
|
|
130
|
-
if (!fs_1.default.existsSync(mainCliPath)) {
|
|
131
|
-
console.error(`solid-api CLI not found at ${mainCliPath}. Run "solidctl build" or "cd solid-api && npm run build" first.`);
|
|
132
|
-
process.exit(1);
|
|
133
|
-
}
|
|
134
|
-
const args = [
|
|
135
|
-
path_1.default.relative(solidApiDir, mainCliPath),
|
|
136
|
-
'migrate-removed-fields',
|
|
137
|
-
'-n',
|
|
138
|
-
options.name,
|
|
139
|
-
];
|
|
140
|
-
if (options.apply) {
|
|
141
|
-
args.push('-d', 'false');
|
|
142
|
-
}
|
|
143
|
-
console.log(`▶ Running removed-field cleanup for model "${options.name}"${options.apply ? ' (apply)' : ' (dry-run)'}`);
|
|
144
|
-
const result = (0, child_process_1.spawnSync)(process.execPath, args, {
|
|
145
|
-
cwd: solidApiDir,
|
|
146
|
-
stdio: 'inherit',
|
|
147
|
-
env: process.env,
|
|
148
|
-
});
|
|
149
|
-
if (result.error) {
|
|
150
|
-
console.error(`Failed to run cleanup-removed-fields: ${result.error.message}`);
|
|
151
|
-
process.exit(1);
|
|
152
|
-
}
|
|
153
|
-
if (result.status !== 0) {
|
|
154
|
-
console.error(`cleanup-removed-fields exited with code ${result.status}`);
|
|
155
|
-
process.exit(result.status ?? 1);
|
|
156
|
-
}
|
|
157
|
-
console.log(`✔ cleanup-removed-fields completed for model "${options.name}"`);
|
|
158
|
-
return;
|
|
159
|
-
}
|
|
160
|
-
fail(`Unknown action "${action}". Expected generate, run, revert, or remove-field.`);
|
|
120
|
+
fail(`Unknown action "${action}". Expected generate, run, or revert.`);
|
|
161
121
|
});
|
|
162
122
|
}
|
|
163
123
|
//# sourceMappingURL=migration.command.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration.command.js","sourceRoot":"","sources":["../../src/commands/migration.command.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"migration.command.js","sourceRoot":"","sources":["../../src/commands/migration.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export declare function writeChangelog(entry: string, changelogPath: string): void;
|
|
1
2
|
export declare function generateChangelog(plannedVersion: string, enhanceChangelog: boolean, dryRun: boolean, isPrerelease?: boolean): void;
|
|
2
3
|
export declare function generateAndCommitChangelog(plannedVersion: string, enhanceChangelog: boolean, dryRun: boolean, isPrerelease?: boolean): Promise<void>;
|
|
4
|
+
export declare function extractEntry(changelog: string, version: string): string | undefined;
|
|
3
5
|
export declare function getChangelogEntry(projectRoot: string, version: string): string;
|
|
@@ -3,8 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.writeChangelog = writeChangelog;
|
|
6
7
|
exports.generateChangelog = generateChangelog;
|
|
7
8
|
exports.generateAndCommitChangelog = generateAndCommitChangelog;
|
|
9
|
+
exports.extractEntry = extractEntry;
|
|
8
10
|
exports.getChangelogEntry = getChangelogEntry;
|
|
9
11
|
const child_process_1 = require("child_process");
|
|
10
12
|
const fs_1 = __importDefault(require("fs"));
|
|
@@ -169,18 +171,24 @@ async function generateAndCommitChangelog(plannedVersion, enhanceChangelog, dryR
|
|
|
169
171
|
run('git add CHANGELOG.md', dryRun);
|
|
170
172
|
run(`git commit -m "docs: update changelog for ${plannedVersion}"`, dryRun);
|
|
171
173
|
}
|
|
174
|
+
function extractEntry(changelog, version) {
|
|
175
|
+
const heading = `## [${version}]`;
|
|
176
|
+
const start = changelog.indexOf(heading);
|
|
177
|
+
if (start === -1) {
|
|
178
|
+
return undefined;
|
|
179
|
+
}
|
|
180
|
+
const nextEntry = changelog.indexOf('\n## [', start + heading.length);
|
|
181
|
+
return changelog.slice(start, nextEntry === -1 ? undefined : nextEntry).trim();
|
|
182
|
+
}
|
|
172
183
|
function getChangelogEntry(projectRoot, version) {
|
|
173
184
|
const changelogPath = path_1.default.join(projectRoot, 'CHANGELOG.md');
|
|
174
185
|
if (!fs_1.default.existsSync(changelogPath)) {
|
|
175
186
|
throw new Error(`CHANGELOG.md does not exist at ${projectRoot}`);
|
|
176
187
|
}
|
|
177
|
-
const
|
|
178
|
-
|
|
179
|
-
const start = changelog.indexOf(heading);
|
|
180
|
-
if (start === -1) {
|
|
188
|
+
const entry = extractEntry(fs_1.default.readFileSync(changelogPath, 'utf-8'), version);
|
|
189
|
+
if (entry === undefined) {
|
|
181
190
|
throw new Error(`CHANGELOG.md does not contain an entry for ${version}.`);
|
|
182
191
|
}
|
|
183
|
-
|
|
184
|
-
return changelog.slice(start, nextEntry === -1 ? undefined : nextEntry).trim();
|
|
192
|
+
return entry;
|
|
185
193
|
}
|
|
186
194
|
//# sourceMappingURL=release-changelog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"release-changelog.js","sourceRoot":"","sources":["../../src/commands/release-changelog.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"release-changelog.js","sourceRoot":"","sources":["../../src/commands/release-changelog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export interface ParsedVersion {
|
|
2
|
+
major: number;
|
|
3
|
+
minor: number;
|
|
4
|
+
patch: number;
|
|
5
|
+
prereleaseId?: string;
|
|
6
|
+
prereleaseNumber?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function parseVersion(version: string): ParsedVersion;
|
|
9
|
+
export declare function formatVersion(parsed: ParsedVersion): string;
|
|
10
|
+
export declare function planNextVersion(currentVersion: string, versionType: string, preid?: string): string;
|
|
11
|
+
export declare function compareVersions(a: string, b: string): number;
|
|
12
|
+
export declare function selectStrandedPrereleases(publishedVersions: string[], stableVersion: string, fromVersion: string): string[];
|
|
13
|
+
export declare function confirm(message: string): Promise<boolean>;
|
|
14
|
+
export declare function confirmOrExit(message: string): Promise<void>;
|
|
15
|
+
export declare function resolveFromRef(from: string | undefined, fromDev: boolean | undefined, preid: string | undefined, devBranch: string): string | undefined;
|
|
16
|
+
export declare function readVersionAtRef(ref: string, packageJsonPath: string): string | undefined;
|
|
17
|
+
export declare function assertCleanWorkingTree(): void;
|
|
18
|
+
export declare function resolveToSha(fromRef: string): string;
|
|
19
|
+
export declare function assertRefIsReleasable(fromRef: string, fromSha: string, devBranch: string): void;
|
|
20
|
+
export declare function printExcludedCommits(fromRef: string, fromSha: string, devBranch: string): number;
|
|
21
|
+
export declare function assertReleaseTreeMatchesRef(fromRef: string, fromSha: string, dryRun: boolean): void;
|
|
22
|
+
export declare function classifyMergeConflicts(diffOutput: string): {
|
|
23
|
+
conflicted: string[];
|
|
24
|
+
unexpected: string[];
|
|
25
|
+
};
|
|
26
|
+
export declare function resolveReverseMergeConflict(mainBranch: string, stableVersion: string, dryRun: boolean): boolean;
|
|
27
|
+
export interface FinishStrandedReleaseArgs {
|
|
28
|
+
packageName: string;
|
|
29
|
+
stableVersion: string;
|
|
30
|
+
fromVersion: string;
|
|
31
|
+
devBranch: string;
|
|
32
|
+
dryRun: boolean;
|
|
33
|
+
rollDevForward: (nextBeta: string) => Promise<void>;
|
|
34
|
+
}
|
|
35
|
+
export declare function finishStrandedRelease(args: FinishStrandedReleaseArgs): Promise<void>;
|
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.parseVersion = parseVersion;
|
|
7
|
+
exports.formatVersion = formatVersion;
|
|
8
|
+
exports.planNextVersion = planNextVersion;
|
|
9
|
+
exports.compareVersions = compareVersions;
|
|
10
|
+
exports.selectStrandedPrereleases = selectStrandedPrereleases;
|
|
11
|
+
exports.confirm = confirm;
|
|
12
|
+
exports.confirmOrExit = confirmOrExit;
|
|
13
|
+
exports.resolveFromRef = resolveFromRef;
|
|
14
|
+
exports.readVersionAtRef = readVersionAtRef;
|
|
15
|
+
exports.assertCleanWorkingTree = assertCleanWorkingTree;
|
|
16
|
+
exports.resolveToSha = resolveToSha;
|
|
17
|
+
exports.assertRefIsReleasable = assertRefIsReleasable;
|
|
18
|
+
exports.printExcludedCommits = printExcludedCommits;
|
|
19
|
+
exports.assertReleaseTreeMatchesRef = assertReleaseTreeMatchesRef;
|
|
20
|
+
exports.classifyMergeConflicts = classifyMergeConflicts;
|
|
21
|
+
exports.resolveReverseMergeConflict = resolveReverseMergeConflict;
|
|
22
|
+
exports.finishStrandedRelease = finishStrandedRelease;
|
|
23
|
+
const child_process_1 = require("child_process");
|
|
24
|
+
const fs_1 = __importDefault(require("fs"));
|
|
25
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
26
|
+
const path_1 = __importDefault(require("path"));
|
|
27
|
+
const release_changelog_1 = require("./release-changelog");
|
|
28
|
+
function parseVersion(version) {
|
|
29
|
+
const match = version.match(/^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z-]+)\.(\d+))?$/);
|
|
30
|
+
if (!match) {
|
|
31
|
+
throw new Error(`Unsupported version format: ${version}`);
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
major: Number(match[1]),
|
|
35
|
+
minor: Number(match[2]),
|
|
36
|
+
patch: Number(match[3]),
|
|
37
|
+
prereleaseId: match[4],
|
|
38
|
+
prereleaseNumber: match[5] === undefined ? undefined : Number(match[5]),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function formatVersion(parsed) {
|
|
42
|
+
const base = `${parsed.major}.${parsed.minor}.${parsed.patch}`;
|
|
43
|
+
if (parsed.prereleaseId === undefined || parsed.prereleaseNumber === undefined) {
|
|
44
|
+
return base;
|
|
45
|
+
}
|
|
46
|
+
return `${base}-${parsed.prereleaseId}.${parsed.prereleaseNumber}`;
|
|
47
|
+
}
|
|
48
|
+
function planNextVersion(currentVersion, versionType, preid) {
|
|
49
|
+
const parsed = parseVersion(currentVersion);
|
|
50
|
+
if (!preid) {
|
|
51
|
+
if (versionType === 'minor') {
|
|
52
|
+
return formatVersion({ major: parsed.major, minor: parsed.minor + 1, patch: 0 });
|
|
53
|
+
}
|
|
54
|
+
if (versionType === 'major') {
|
|
55
|
+
return formatVersion({ major: parsed.major + 1, minor: 0, patch: 0 });
|
|
56
|
+
}
|
|
57
|
+
if (parsed.prereleaseId) {
|
|
58
|
+
return formatVersion({ major: parsed.major, minor: parsed.minor, patch: parsed.patch });
|
|
59
|
+
}
|
|
60
|
+
return formatVersion({ major: parsed.major, minor: parsed.minor, patch: parsed.patch + 1 });
|
|
61
|
+
}
|
|
62
|
+
if (versionType === 'minor' || versionType === 'preminor') {
|
|
63
|
+
return formatVersion({
|
|
64
|
+
major: parsed.major,
|
|
65
|
+
minor: parsed.minor + 1,
|
|
66
|
+
patch: 0,
|
|
67
|
+
prereleaseId: preid,
|
|
68
|
+
prereleaseNumber: 0,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
if (versionType === 'major' || versionType === 'premajor') {
|
|
72
|
+
return formatVersion({
|
|
73
|
+
major: parsed.major + 1,
|
|
74
|
+
minor: 0,
|
|
75
|
+
patch: 0,
|
|
76
|
+
prereleaseId: preid,
|
|
77
|
+
prereleaseNumber: 0,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
if (parsed.prereleaseId) {
|
|
81
|
+
return formatVersion({
|
|
82
|
+
major: parsed.major,
|
|
83
|
+
minor: parsed.minor,
|
|
84
|
+
patch: parsed.patch,
|
|
85
|
+
prereleaseId: preid,
|
|
86
|
+
prereleaseNumber: parsed.prereleaseId === preid ? (parsed.prereleaseNumber ?? 0) + 1 : 0,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
return formatVersion({
|
|
90
|
+
major: parsed.major,
|
|
91
|
+
minor: parsed.minor,
|
|
92
|
+
patch: parsed.patch + 1,
|
|
93
|
+
prereleaseId: preid,
|
|
94
|
+
prereleaseNumber: 0,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
function compareVersions(a, b) {
|
|
98
|
+
const left = parseVersion(a);
|
|
99
|
+
const right = parseVersion(b);
|
|
100
|
+
if (left.major !== right.major)
|
|
101
|
+
return left.major - right.major;
|
|
102
|
+
if (left.minor !== right.minor)
|
|
103
|
+
return left.minor - right.minor;
|
|
104
|
+
if (left.patch !== right.patch)
|
|
105
|
+
return left.patch - right.patch;
|
|
106
|
+
const leftPre = left.prereleaseId !== undefined;
|
|
107
|
+
const rightPre = right.prereleaseId !== undefined;
|
|
108
|
+
if (!leftPre && !rightPre)
|
|
109
|
+
return 0;
|
|
110
|
+
if (!leftPre)
|
|
111
|
+
return 1;
|
|
112
|
+
if (!rightPre)
|
|
113
|
+
return -1;
|
|
114
|
+
if (left.prereleaseId !== right.prereleaseId) {
|
|
115
|
+
return left.prereleaseId < right.prereleaseId ? -1 : 1;
|
|
116
|
+
}
|
|
117
|
+
return (left.prereleaseNumber ?? 0) - (right.prereleaseNumber ?? 0);
|
|
118
|
+
}
|
|
119
|
+
function selectStrandedPrereleases(publishedVersions, stableVersion, fromVersion) {
|
|
120
|
+
const stable = parseVersion(stableVersion);
|
|
121
|
+
return publishedVersions.filter((published) => {
|
|
122
|
+
let parsed;
|
|
123
|
+
try {
|
|
124
|
+
parsed = parseVersion(published);
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
if (parsed.prereleaseId === undefined)
|
|
130
|
+
return false;
|
|
131
|
+
if (parsed.major !== stable.major || parsed.minor !== stable.minor || parsed.patch !== stable.patch)
|
|
132
|
+
return false;
|
|
133
|
+
return compareVersions(published, fromVersion) > 0;
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
const MERGE_RESOLVABLE_PATHS = new Set([
|
|
137
|
+
'package.json',
|
|
138
|
+
'package-lock.json',
|
|
139
|
+
'CHANGELOG.md',
|
|
140
|
+
]);
|
|
141
|
+
const MANIFEST_EXCLUDES = ['package.json', 'package-lock.json', 'CHANGELOG.md']
|
|
142
|
+
.map((file) => `":(exclude)${file}"`)
|
|
143
|
+
.join(' ');
|
|
144
|
+
function capture(cmd) {
|
|
145
|
+
try {
|
|
146
|
+
return (0, child_process_1.execSync)(cmd, { encoding: 'utf-8', stdio: ['ignore', 'pipe', 'pipe'] }).trim();
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
return undefined;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
function succeeds(cmd) {
|
|
153
|
+
try {
|
|
154
|
+
(0, child_process_1.execSync)(cmd, { stdio: 'ignore' });
|
|
155
|
+
return true;
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
function run(cmd) {
|
|
162
|
+
(0, child_process_1.execSync)(cmd, { stdio: 'inherit' });
|
|
163
|
+
}
|
|
164
|
+
function preferRemote(devBranch) {
|
|
165
|
+
return succeeds(`git rev-parse --verify --quiet origin/${devBranch}`)
|
|
166
|
+
? `origin/${devBranch}`
|
|
167
|
+
: devBranch;
|
|
168
|
+
}
|
|
169
|
+
async function confirm(message) {
|
|
170
|
+
if (!process.stdin.isTTY) {
|
|
171
|
+
console.log(`${message} — no TTY, continuing.`);
|
|
172
|
+
return true;
|
|
173
|
+
}
|
|
174
|
+
const { confirmed } = await inquirer_1.default.prompt([
|
|
175
|
+
{ type: 'confirm', name: 'confirmed', message, default: true },
|
|
176
|
+
]);
|
|
177
|
+
return confirmed;
|
|
178
|
+
}
|
|
179
|
+
async function confirmOrExit(message) {
|
|
180
|
+
if (!(await confirm(message))) {
|
|
181
|
+
console.log('Aborted.');
|
|
182
|
+
process.exit(1);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
function resolveFromRef(from, fromDev, preid, devBranch) {
|
|
186
|
+
if (from && fromDev) {
|
|
187
|
+
console.error('Use either --from <ref> or --from-dev, not both.');
|
|
188
|
+
process.exit(1);
|
|
189
|
+
}
|
|
190
|
+
if ((from || fromDev) && preid) {
|
|
191
|
+
const flag = from ? '--from' : '--from-dev';
|
|
192
|
+
console.error(`${flag} cannot be combined with --preid. Pre-releases always publish the tip of the dev branch.`);
|
|
193
|
+
process.exit(1);
|
|
194
|
+
}
|
|
195
|
+
return fromDev ? devBranch : from;
|
|
196
|
+
}
|
|
197
|
+
function repoRelativePath(absolutePath) {
|
|
198
|
+
const repoRoot = capture('git rev-parse --show-toplevel') ?? process.cwd();
|
|
199
|
+
return path_1.default.relative(repoRoot, absolutePath).split(path_1.default.sep).join('/');
|
|
200
|
+
}
|
|
201
|
+
function readVersionAtRef(ref, packageJsonPath) {
|
|
202
|
+
const raw = capture(`git show ${ref}:${repoRelativePath(packageJsonPath)}`);
|
|
203
|
+
if (!raw) {
|
|
204
|
+
return undefined;
|
|
205
|
+
}
|
|
206
|
+
try {
|
|
207
|
+
return JSON.parse(raw).version;
|
|
208
|
+
}
|
|
209
|
+
catch {
|
|
210
|
+
return undefined;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
function assertCleanWorkingTree() {
|
|
214
|
+
const status = capture('git status --porcelain');
|
|
215
|
+
if (status) {
|
|
216
|
+
console.error('Working tree is not clean. Commit, stash or ignore these before releasing:');
|
|
217
|
+
console.error(`\n${status}\n`);
|
|
218
|
+
console.error(' npm publish packs the working directory, so untracked files can end up');
|
|
219
|
+
console.error(' in the published tarball, and npm version would commit modified ones.');
|
|
220
|
+
process.exit(1);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
function resolveToSha(fromRef) {
|
|
224
|
+
const sha = capture(`git rev-parse --verify ${fromRef}^{commit}`);
|
|
225
|
+
if (!sha) {
|
|
226
|
+
console.error(`Could not resolve ${fromRef} to a commit.`);
|
|
227
|
+
process.exit(1);
|
|
228
|
+
}
|
|
229
|
+
return sha;
|
|
230
|
+
}
|
|
231
|
+
function assertRefIsReleasable(fromRef, fromSha, devBranch) {
|
|
232
|
+
const devRef = preferRemote(devBranch);
|
|
233
|
+
if (!succeeds(`git merge-base --is-ancestor ${fromSha} ${devRef}`)) {
|
|
234
|
+
console.error(`${fromRef} is not an ancestor of ${devRef}.`);
|
|
235
|
+
console.error(' Only refs that are part of the mainline can be released.');
|
|
236
|
+
process.exit(1);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
function printExcludedCommits(fromRef, fromSha, devBranch) {
|
|
240
|
+
const devRef = preferRemote(devBranch);
|
|
241
|
+
const log = capture(`git log --oneline ${fromSha}..${devRef}`) ?? '';
|
|
242
|
+
const commits = log ? log.split('\n') : [];
|
|
243
|
+
if (commits.length === 0) {
|
|
244
|
+
console.log(`${fromRef} is at the tip of ${devRef} — nothing is being left behind.\n`);
|
|
245
|
+
return 0;
|
|
246
|
+
}
|
|
247
|
+
console.log(`\nReleasing from ${fromRef}, which EXCLUDES ${commits.length} commit(s) on ${devRef}:`);
|
|
248
|
+
for (const commit of commits) {
|
|
249
|
+
console.log(` ${commit}`);
|
|
250
|
+
}
|
|
251
|
+
console.log('');
|
|
252
|
+
return commits.length;
|
|
253
|
+
}
|
|
254
|
+
function assertReleaseTreeMatchesRef(fromRef, fromSha, dryRun) {
|
|
255
|
+
if (dryRun) {
|
|
256
|
+
console.log(`[dry-run] would verify the release tree is identical to ${fromRef} (excluding manifests and CHANGELOG.md)`);
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
if (!succeeds(`git diff --quiet ${fromSha} HEAD -- . ${MANIFEST_EXCLUDES}`)) {
|
|
260
|
+
console.error(`Release branch does not match ${fromRef}.`);
|
|
261
|
+
console.error(' Unexpected changes outside package.json, package-lock.json and CHANGELOG.md:');
|
|
262
|
+
console.error(capture(`git diff --name-only ${fromSha} HEAD -- . ${MANIFEST_EXCLUDES}`) ?? '');
|
|
263
|
+
console.error('\n Nothing has been published. Aborting.');
|
|
264
|
+
process.exit(1);
|
|
265
|
+
}
|
|
266
|
+
console.log(`Verified: release tree is identical to ${fromRef}`);
|
|
267
|
+
}
|
|
268
|
+
function classifyMergeConflicts(diffOutput) {
|
|
269
|
+
const conflicted = diffOutput
|
|
270
|
+
.split('\n')
|
|
271
|
+
.map((line) => line.trim())
|
|
272
|
+
.filter((line) => line.length > 0);
|
|
273
|
+
return {
|
|
274
|
+
conflicted,
|
|
275
|
+
unexpected: conflicted.filter((file) => !MERGE_RESOLVABLE_PATHS.has(file)),
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
function setLockfileVersion(lockfilePath, version) {
|
|
279
|
+
const lockfile = JSON.parse(fs_1.default.readFileSync(lockfilePath, 'utf-8'));
|
|
280
|
+
lockfile.version = version;
|
|
281
|
+
if (lockfile.packages?.['']) {
|
|
282
|
+
lockfile.packages[''].version = version;
|
|
283
|
+
}
|
|
284
|
+
fs_1.default.writeFileSync(lockfilePath, `${JSON.stringify(lockfile, null, 2)}\n`, 'utf-8');
|
|
285
|
+
}
|
|
286
|
+
function resolveReverseMergeConflict(mainBranch, stableVersion, dryRun) {
|
|
287
|
+
if (dryRun) {
|
|
288
|
+
console.log('[dry-run] would resolve the reverse-merge conflict automatically');
|
|
289
|
+
return true;
|
|
290
|
+
}
|
|
291
|
+
const { conflicted, unexpected } = classifyMergeConflicts(capture('git diff --name-only --diff-filter=U') ?? '');
|
|
292
|
+
if (conflicted.length === 0) {
|
|
293
|
+
return false;
|
|
294
|
+
}
|
|
295
|
+
if (unexpected.length > 0) {
|
|
296
|
+
console.error(`Cannot resolve automatically — unexpected conflicts in: ${unexpected.join(', ')}`);
|
|
297
|
+
return false;
|
|
298
|
+
}
|
|
299
|
+
console.log(`Resolving reverse-merge conflict in: ${conflicted.join(', ')}`);
|
|
300
|
+
if (conflicted.includes('package.json')) {
|
|
301
|
+
run('git checkout --theirs package.json');
|
|
302
|
+
const merged = JSON.parse(fs_1.default.readFileSync(path_1.default.join(process.cwd(), 'package.json'), 'utf-8'));
|
|
303
|
+
if (merged.version !== stableVersion) {
|
|
304
|
+
console.error(`Expected package.json to resolve to ${stableVersion}, got ${merged.version ?? 'nothing'}.`);
|
|
305
|
+
return false;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
if (conflicted.includes('package-lock.json')) {
|
|
309
|
+
run('git checkout --ours package-lock.json');
|
|
310
|
+
setLockfileVersion(path_1.default.join(process.cwd(), 'package-lock.json'), stableVersion);
|
|
311
|
+
}
|
|
312
|
+
if (conflicted.includes('CHANGELOG.md')) {
|
|
313
|
+
run('git checkout --ours CHANGELOG.md');
|
|
314
|
+
const mainChangelog = capture(`git show ${mainBranch}:CHANGELOG.md`);
|
|
315
|
+
const stableEntry = mainChangelog ? (0, release_changelog_1.extractEntry)(mainChangelog, stableVersion) : undefined;
|
|
316
|
+
if (!stableEntry) {
|
|
317
|
+
console.error(`Could not find the ${stableVersion} entry in ${mainBranch}:CHANGELOG.md`);
|
|
318
|
+
return false;
|
|
319
|
+
}
|
|
320
|
+
(0, release_changelog_1.writeChangelog)(stableEntry, path_1.default.join(process.cwd(), 'CHANGELOG.md'));
|
|
321
|
+
}
|
|
322
|
+
run(`git add ${conflicted.join(' ')}`);
|
|
323
|
+
run(`git commit -m "chore: merge ${mainBranch} after publish"`);
|
|
324
|
+
console.log('Reverse-merge conflict resolved.');
|
|
325
|
+
return true;
|
|
326
|
+
}
|
|
327
|
+
function getPublishedVersions(packageName) {
|
|
328
|
+
const raw = capture(`npm view ${packageName} versions --json`);
|
|
329
|
+
if (!raw) {
|
|
330
|
+
return [];
|
|
331
|
+
}
|
|
332
|
+
try {
|
|
333
|
+
const parsed = JSON.parse(raw);
|
|
334
|
+
return Array.isArray(parsed) ? parsed : [parsed];
|
|
335
|
+
}
|
|
336
|
+
catch {
|
|
337
|
+
return [];
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
async function finishStrandedRelease(args) {
|
|
341
|
+
const { packageName, stableVersion, fromVersion, devBranch, dryRun, rollDevForward } = args;
|
|
342
|
+
const stranded = selectStrandedPrereleases(getPublishedVersions(packageName), stableVersion, fromVersion);
|
|
343
|
+
if (stranded.length === 0) {
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
346
|
+
const nextBeta = planNextVersion(stableVersion, 'patch', 'beta');
|
|
347
|
+
console.log(`\nReleasing ${stableVersion} stranded ${stranded.length} published pre-release(s):`);
|
|
348
|
+
for (const version of stranded) {
|
|
349
|
+
console.log(` ${packageName}@${version}`);
|
|
350
|
+
}
|
|
351
|
+
console.log(` Their work is ahead of ${stableVersion} but sorts below it, so ${devBranch} moves to ${nextBeta}.\n`);
|
|
352
|
+
const message = `Not included in ${stableVersion}; this work ships in ${nextBeta}`;
|
|
353
|
+
if (dryRun) {
|
|
354
|
+
console.log(`[dry-run] would cut ${nextBeta} from ${devBranch} and publish it under the beta tag`);
|
|
355
|
+
for (const version of stranded) {
|
|
356
|
+
console.log(`[dry-run] npm deprecate ${packageName}@${version} "${message}"`);
|
|
357
|
+
}
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
console.log(`Rolling ${devBranch} forward to ${nextBeta}...`);
|
|
361
|
+
await rollDevForward(nextBeta);
|
|
362
|
+
if (!(await confirm(`Deprecate ${stranded.length} stranded pre-release(s) on npm?`))) {
|
|
363
|
+
console.log('Skipped. Deprecate them later with:');
|
|
364
|
+
for (const version of stranded) {
|
|
365
|
+
console.log(` npm deprecate ${packageName}@${version} "${message}"`);
|
|
366
|
+
}
|
|
367
|
+
return;
|
|
368
|
+
}
|
|
369
|
+
for (const version of stranded) {
|
|
370
|
+
run(`npm deprecate ${packageName}@${version} "${message}"`);
|
|
371
|
+
}
|
|
372
|
+
console.log('Stranded pre-releases deprecated.\n');
|
|
373
|
+
}
|
|
374
|
+
//# sourceMappingURL=release-helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-helper.js","sourceRoot":"","sources":["../../src/commands/release-helper.ts"],"names":[],"mappings":"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"}
|