@neurodevs/meta-node 0.19.10 → 0.19.11
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/build/__tests__/impl/NpmReleasePropagator.test.js +2 -1
- package/build/__tests__/impl/NpmReleasePropagator.test.js.map +1 -1
- package/build/impl/NpmPropagationCoordinator.d.ts +1 -1
- package/build/impl/NpmPropagationCoordinator.js +2 -2
- package/build/impl/NpmPropagationCoordinator.js.map +1 -1
- package/build/impl/NpmReleasePropagator.d.ts +8 -12
- package/build/impl/NpmReleasePropagator.js +55 -65
- package/build/impl/NpmReleasePropagator.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/impl/NpmReleasePropagator.test.ts +5 -1
- package/src/impl/NpmPropagationCoordinator.ts +2 -2
- package/src/impl/NpmReleasePropagator.ts +78 -87
|
@@ -28,6 +28,7 @@ export default class NpmReleasePropagatorTest extends AbstractPackageTest {
|
|
|
28
28
|
}
|
|
29
29
|
static async runInstallsReleaseForEachRepoPath() {
|
|
30
30
|
await this.run();
|
|
31
|
+
const actualCalls = callsToExec.filter((call) => call.command.includes(`yarn add`));
|
|
31
32
|
const expectedCalls = [
|
|
32
33
|
{
|
|
33
34
|
command: `yarn add ${this.packageName}@${this.packageVersion}`,
|
|
@@ -38,7 +39,7 @@ export default class NpmReleasePropagatorTest extends AbstractPackageTest {
|
|
|
38
39
|
options: { cwd: this.repoPaths[1] },
|
|
39
40
|
},
|
|
40
41
|
];
|
|
41
|
-
assert.isEqualDeep(
|
|
42
|
+
assert.isEqualDeep(actualCalls, expectedCalls, 'Did not install release in each repo path!');
|
|
42
43
|
}
|
|
43
44
|
static async commitsChangesToGit() {
|
|
44
45
|
await this.run();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NpmReleasePropagator.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/NpmReleasePropagator.test.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAgB,IAAI,IAAI,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAGnE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EACH,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,GACxB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,aAAa,MAAM,6BAA6B,CAAA;AACvD,OAAO,oBAGN,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,mBAAmB,MAAM,2BAA2B,CAAA;AAE3D,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAEhC,MAAM,CAAC,OAAO,OAAO,wBAAyB,SAAQ,mBAAmB;IAC7D,MAAM,CAAC,QAAQ,CAAmB;IAElC,MAAM,CAAU,SAAS,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;IAEhE,MAAM,CAAC,KAAK,CAAC,UAAU;QAC7B,MAAM,KAAK,CAAC,UAAU,EAAE,CAAA;QAExB,IAAI,CAAC,WAAW,EAAE,CAAA;QAClB,IAAI,CAAC,eAAe,EAAE,CAAA;QACtB,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAExB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAA;IAC/C,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,eAAe;QAClC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,4BAA4B,CAAC,CAAA;IAChE,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,iCAAiC;QACpD,MAAM,IAAI,CAAC,GAAG,EAAE,CAAA;QAEhB,MAAM,aAAa,GAAG;YAClB;gBACI,OAAO,EAAE,YAAY,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,EAAE;gBAC9D,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;aACtC;YACD;gBACI,OAAO,EAAE,eAAe,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,EAAE;gBACjE,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;aACtC;SACJ,CAAA;QAED,MAAM,CAAC,WAAW,CACd,
|
|
1
|
+
{"version":3,"file":"NpmReleasePropagator.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/NpmReleasePropagator.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ export default class NpmPropagationCoordinator implements PropagationCoordinator
|
|
|
19
19
|
private get maybeDependencyRange();
|
|
20
20
|
private loadCurrentPkgJson;
|
|
21
21
|
private get readFile();
|
|
22
|
-
private
|
|
22
|
+
private NpmReleasePropagator;
|
|
23
23
|
}
|
|
24
24
|
export interface PropagationCoordinator {
|
|
25
25
|
run(): Promise<void>;
|
|
@@ -24,7 +24,7 @@ export default class NpmPropagationCoordinator {
|
|
|
24
24
|
async run() {
|
|
25
25
|
await this.loadPackageJson();
|
|
26
26
|
const repoPaths = await this.determineWhereToPropagate();
|
|
27
|
-
const propagator = this.
|
|
27
|
+
const propagator = this.NpmReleasePropagator({
|
|
28
28
|
packageName: this.packageName,
|
|
29
29
|
packageVersion: this.packageVersion,
|
|
30
30
|
repoPaths,
|
|
@@ -73,7 +73,7 @@ export default class NpmPropagationCoordinator {
|
|
|
73
73
|
get readFile() {
|
|
74
74
|
return NpmPropagationCoordinator.readFile;
|
|
75
75
|
}
|
|
76
|
-
|
|
76
|
+
NpmReleasePropagator(options) {
|
|
77
77
|
return NpmReleasePropagator.Create(options);
|
|
78
78
|
}
|
|
79
79
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NpmPropagationCoordinator.js","sourceRoot":"","sources":["../../src/impl/NpmPropagationCoordinator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,OAAO,MAAM,MAAM,QAAQ,CAAA;AAE3B,OAAO,oBAGN,MAAM,2BAA2B,CAAA;AAElC,MAAM,CAAC,OAAO,OAAO,yBAAyB;IAGnC,MAAM,CAAC,KAAK,CAAoC;IAChD,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAEzB,QAAQ,CAAQ;IAChB,SAAS,CAAU;IACnB,qBAAqB,CAAS;IAC9B,eAAe,CAAS;IAExB,GAAG,CAAc;IACjB,eAAe,CAAS;IACxB,cAAc,CAAc;IAEpC,YACI,QAAgB,EAChB,SAAmB,EACnB,OAAuC;QAEvC,MAAM,EAAE,qBAAqB,GAAG,KAAK,EAAE,eAAe,GAAG,IAAI,EAAE,GAC3D,OAAO,IAAI,EAAE,CAAA;QAEjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAA;QAClD,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;IAC1C,CAAC;IAEM,MAAM,CAAC,MAAM,CAChB,QAAgB,EAChB,SAAmB,EACnB,OAAuC;QAEvC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IACjE,CAAC;IAEM,KAAK,CAAC,GAAG;QACZ,MAAM,IAAI,CAAC,eAAe,EAAE,CAAA;QAE5B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAA;QAExD,MAAM,UAAU,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"NpmPropagationCoordinator.js","sourceRoot":"","sources":["../../src/impl/NpmPropagationCoordinator.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,25 +8,21 @@ export default class NpmReleasePropagator implements ReleasePropagator {
|
|
|
8
8
|
private packageVersion;
|
|
9
9
|
private repoPaths;
|
|
10
10
|
private shouldGitCommit;
|
|
11
|
-
private currentRepoPath;
|
|
12
|
-
private currentPackageJson;
|
|
13
11
|
private metaNodeVersion;
|
|
14
12
|
protected constructor(options: ReleasePropagatorOptions);
|
|
15
13
|
static Create(options: ReleasePropagatorOptions): ReleasePropagator;
|
|
16
14
|
run(): Promise<void>;
|
|
17
15
|
private throwIfUncommittedGitChanges;
|
|
18
16
|
private generateUncommittedErrorFrom;
|
|
19
|
-
private loadCurrentPackageJson;
|
|
20
|
-
private get currentPackageJsonPath();
|
|
21
|
-
private throwIfPreviousReleaseNotFound;
|
|
22
|
-
private get dependencyRange();
|
|
23
|
-
private get devDependencyRange();
|
|
24
|
-
private get isUpToDate();
|
|
25
|
-
private installReleaseForCurrentRepo;
|
|
26
|
-
private checkForTypeErrors;
|
|
27
|
-
private rollbackInstallation;
|
|
28
|
-
private gitCommitChanges;
|
|
29
17
|
private setCurrentMetaNodeVersion;
|
|
18
|
+
private runFor;
|
|
19
|
+
private loadPackageJsonFor;
|
|
20
|
+
private throwIfNoPreviousReleaseFor;
|
|
21
|
+
private isUpToDateFor;
|
|
22
|
+
private installReleaseFor;
|
|
23
|
+
private checkTypeErrorsFor;
|
|
24
|
+
private rollbackInstallationFor;
|
|
25
|
+
private gitCommitChangesFor;
|
|
30
26
|
private get exec();
|
|
31
27
|
private get readFile();
|
|
32
28
|
private GitAutocommit;
|
|
@@ -2,7 +2,7 @@ import { exec as execSync } from 'node:child_process';
|
|
|
2
2
|
import { readFile } from 'node:fs/promises';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { promisify } from 'node:util';
|
|
5
|
-
import
|
|
5
|
+
import semver from 'semver';
|
|
6
6
|
import GitAutocommit from './GitAutocommit.js';
|
|
7
7
|
export default class NpmReleasePropagator {
|
|
8
8
|
static Class;
|
|
@@ -12,8 +12,6 @@ export default class NpmReleasePropagator {
|
|
|
12
12
|
packageVersion;
|
|
13
13
|
repoPaths;
|
|
14
14
|
shouldGitCommit;
|
|
15
|
-
currentRepoPath;
|
|
16
|
-
currentPackageJson;
|
|
17
15
|
metaNodeVersion;
|
|
18
16
|
constructor(options) {
|
|
19
17
|
const { packageName, packageVersion, repoPaths, shouldGitCommit = true, } = options;
|
|
@@ -27,27 +25,9 @@ export default class NpmReleasePropagator {
|
|
|
27
25
|
}
|
|
28
26
|
async run() {
|
|
29
27
|
await this.throwIfUncommittedGitChanges();
|
|
28
|
+
await this.setCurrentMetaNodeVersion();
|
|
30
29
|
console.info('Starting propagation...\n');
|
|
31
|
-
|
|
32
|
-
this.currentRepoPath = repoPath;
|
|
33
|
-
await this.loadCurrentPackageJson();
|
|
34
|
-
this.throwIfPreviousReleaseNotFound();
|
|
35
|
-
if (this.isUpToDate) {
|
|
36
|
-
console.info(`Already up to date, skipping ${repoPath}...`);
|
|
37
|
-
continue;
|
|
38
|
-
}
|
|
39
|
-
console.info(`Propagating to ${repoPath}...`);
|
|
40
|
-
await this.installReleaseForCurrentRepo();
|
|
41
|
-
const hasTypeErrors = await this.checkForTypeErrors();
|
|
42
|
-
if (hasTypeErrors) {
|
|
43
|
-
console.warn(`TypeScript compilation errors detected! Rolling back for ${repoPath}...`);
|
|
44
|
-
await this.rollbackInstallation();
|
|
45
|
-
continue;
|
|
46
|
-
}
|
|
47
|
-
if (this.shouldGitCommit) {
|
|
48
|
-
await this.gitCommitChanges();
|
|
49
|
-
}
|
|
50
|
-
}
|
|
30
|
+
await Promise.all(this.repoPaths.map((repoPath) => this.runFor(repoPath)));
|
|
51
31
|
console.info('\nPropagation complete!\n');
|
|
52
32
|
}
|
|
53
33
|
async throwIfUncommittedGitChanges() {
|
|
@@ -73,43 +53,61 @@ export default class NpmReleasePropagator {
|
|
|
73
53
|
Please commit or stash these changes before running propagation!
|
|
74
54
|
`;
|
|
75
55
|
}
|
|
76
|
-
async
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
56
|
+
async setCurrentMetaNodeVersion() {
|
|
57
|
+
const globalRoot = await this.exec('yarn global dir');
|
|
58
|
+
const pkgPath = path.join(globalRoot.stdout.trim(), 'node_modules', '@neurodevs', 'meta-node', 'package.json');
|
|
59
|
+
const raw = await this.readFile(pkgPath, { encoding: 'utf-8' });
|
|
60
|
+
const pkg = JSON.parse(raw);
|
|
61
|
+
this.metaNodeVersion = pkg.version;
|
|
82
62
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
63
|
+
async runFor(repoPath) {
|
|
64
|
+
const pkg = await this.loadPackageJsonFor(repoPath);
|
|
65
|
+
this.throwIfNoPreviousReleaseFor(pkg);
|
|
66
|
+
const isUpToDate = this.isUpToDateFor(pkg);
|
|
67
|
+
if (isUpToDate) {
|
|
68
|
+
console.info(`Already up to date, skipping ${repoPath}...`);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
console.info(`Propagating to ${repoPath}...`);
|
|
72
|
+
await this.installReleaseFor(repoPath, pkg);
|
|
73
|
+
const hasTypeErrors = await this.checkTypeErrorsFor(repoPath);
|
|
74
|
+
if (hasTypeErrors) {
|
|
75
|
+
console.warn(`Type errors detected! Rolling back ${repoPath}...`);
|
|
76
|
+
await this.rollbackInstallationFor(repoPath);
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
if (this.shouldGitCommit) {
|
|
80
|
+
await this.gitCommitChangesFor(repoPath);
|
|
86
81
|
}
|
|
87
82
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
get devDependencyRange() {
|
|
92
|
-
return (this.currentPackageJson?.devDependencies?.[this.packageName] ?? '');
|
|
83
|
+
async loadPackageJsonFor(repoPath) {
|
|
84
|
+
const raw = await this.readFile(`${repoPath}/package.json`, 'utf-8');
|
|
85
|
+
return JSON.parse(raw);
|
|
93
86
|
}
|
|
94
|
-
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
87
|
+
throwIfNoPreviousReleaseFor(pkg) {
|
|
88
|
+
const isDependency = Boolean(pkg.dependencies?.[this.packageName]);
|
|
89
|
+
const isDevDependency = Boolean(pkg.devDependencies?.[this.packageName]);
|
|
90
|
+
if (!(isDependency || isDevDependency)) {
|
|
91
|
+
throw new Error(`Cannot propagate release for ${this.packageName} because it is not listed in either dependencies or devDependencies! Please install it in the target repository before running propagation.`);
|
|
98
92
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
93
|
+
}
|
|
94
|
+
isUpToDateFor(pkg) {
|
|
95
|
+
const target = semver.parse(this.packageVersion);
|
|
96
|
+
const dependencyMin = semver.minVersion(pkg.dependencies?.[this.packageName] ?? '');
|
|
97
|
+
const devDependencyMin = semver.minVersion(pkg.devDependencies?.[this.packageName] ?? '');
|
|
98
|
+
return ((dependencyMin && semver.gte(dependencyMin, target)) ||
|
|
99
|
+
(devDependencyMin && semver.gte(devDependencyMin, target)));
|
|
100
|
+
}
|
|
101
|
+
async installReleaseFor(repoPath, pkg) {
|
|
102
|
+
const isDevDependency = Boolean(pkg.devDependencies?.[this.packageName]);
|
|
103
|
+
await this.exec(`yarn add ${isDevDependency ? '-D ' : ''}${this.packageName}@${this.packageVersion}`, {
|
|
104
|
+
cwd: repoPath,
|
|
107
105
|
});
|
|
108
106
|
}
|
|
109
|
-
async
|
|
107
|
+
async checkTypeErrorsFor(repoPath) {
|
|
110
108
|
try {
|
|
111
109
|
await this.exec(`npx tsc --noEmit`, {
|
|
112
|
-
cwd:
|
|
110
|
+
cwd: repoPath,
|
|
113
111
|
});
|
|
114
112
|
return false;
|
|
115
113
|
}
|
|
@@ -117,21 +115,13 @@ Please commit or stash these changes before running propagation!
|
|
|
117
115
|
return true;
|
|
118
116
|
}
|
|
119
117
|
}
|
|
120
|
-
async
|
|
118
|
+
async rollbackInstallationFor(repoPath) {
|
|
121
119
|
await this.exec(`git reset --hard && git clean -fd`, {
|
|
122
|
-
cwd:
|
|
120
|
+
cwd: repoPath,
|
|
123
121
|
});
|
|
124
122
|
}
|
|
125
|
-
async
|
|
126
|
-
await this.
|
|
127
|
-
await this.GitAutocommit(`patch: propagate ${this.packageName}@${this.packageVersion} (@neurodevs/meta-node: ${this.metaNodeVersion})`);
|
|
128
|
-
}
|
|
129
|
-
async setCurrentMetaNodeVersion() {
|
|
130
|
-
const globalRoot = await this.exec('yarn global dir');
|
|
131
|
-
const pkgPath = path.join(globalRoot.stdout.trim(), 'node_modules', '@neurodevs', 'meta-node', 'package.json');
|
|
132
|
-
const raw = await this.readFile(pkgPath, { encoding: 'utf-8' });
|
|
133
|
-
const pkg = JSON.parse(raw);
|
|
134
|
-
this.metaNodeVersion = pkg.version;
|
|
123
|
+
async gitCommitChangesFor(repoPath) {
|
|
124
|
+
await this.GitAutocommit(`patch: propagate ${this.packageName}@${this.packageVersion} (@neurodevs/meta-node: ${this.metaNodeVersion})`, repoPath);
|
|
135
125
|
}
|
|
136
126
|
get exec() {
|
|
137
127
|
return NpmReleasePropagator.exec;
|
|
@@ -139,8 +129,8 @@ Please commit or stash these changes before running propagation!
|
|
|
139
129
|
get readFile() {
|
|
140
130
|
return NpmReleasePropagator.readFile;
|
|
141
131
|
}
|
|
142
|
-
GitAutocommit(commitMessage) {
|
|
143
|
-
return GitAutocommit.Create(commitMessage,
|
|
132
|
+
GitAutocommit(commitMessage, repoPath) {
|
|
133
|
+
return GitAutocommit.Create(commitMessage, repoPath);
|
|
144
134
|
}
|
|
145
135
|
}
|
|
146
136
|
//# sourceMappingURL=NpmReleasePropagator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NpmReleasePropagator.js","sourceRoot":"","sources":["../../src/impl/NpmReleasePropagator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,OAAO,
|
|
1
|
+
{"version":3,"file":"NpmReleasePropagator.js","sourceRoot":"","sources":["../../src/impl/NpmReleasePropagator.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@neurodevs/meta-node",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.11",
|
|
4
4
|
"description": "Meta-layer utilities for maintaining Node.js package ecosystems.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"keywords": [
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
57
|
"@neurodevs/fake-node-core": "^0.10.0",
|
|
58
|
-
"@neurodevs/generate-id": "
|
|
58
|
+
"@neurodevs/generate-id": "1.1.2",
|
|
59
59
|
"@neurodevs/node-tdd": "0.2.3",
|
|
60
60
|
"@types/fs-extra": "^11.0.4",
|
|
61
61
|
"@types/node": "^24.6.2",
|
|
@@ -49,6 +49,10 @@ export default class NpmReleasePropagatorTest extends AbstractPackageTest {
|
|
|
49
49
|
protected static async runInstallsReleaseForEachRepoPath() {
|
|
50
50
|
await this.run()
|
|
51
51
|
|
|
52
|
+
const actualCalls = callsToExec.filter((call) =>
|
|
53
|
+
call.command.includes(`yarn add`)
|
|
54
|
+
)
|
|
55
|
+
|
|
52
56
|
const expectedCalls = [
|
|
53
57
|
{
|
|
54
58
|
command: `yarn add ${this.packageName}@${this.packageVersion}`,
|
|
@@ -61,7 +65,7 @@ export default class NpmReleasePropagatorTest extends AbstractPackageTest {
|
|
|
61
65
|
]
|
|
62
66
|
|
|
63
67
|
assert.isEqualDeep(
|
|
64
|
-
|
|
68
|
+
actualCalls,
|
|
65
69
|
expectedCalls,
|
|
66
70
|
'Did not install release in each repo path!'
|
|
67
71
|
)
|
|
@@ -49,7 +49,7 @@ export default class NpmPropagationCoordinator
|
|
|
49
49
|
|
|
50
50
|
const repoPaths = await this.determineWhereToPropagate()
|
|
51
51
|
|
|
52
|
-
const propagator = this.
|
|
52
|
+
const propagator = this.NpmReleasePropagator({
|
|
53
53
|
packageName: this.packageName,
|
|
54
54
|
packageVersion: this.packageVersion,
|
|
55
55
|
repoPaths,
|
|
@@ -121,7 +121,7 @@ export default class NpmPropagationCoordinator
|
|
|
121
121
|
return NpmPropagationCoordinator.readFile
|
|
122
122
|
}
|
|
123
123
|
|
|
124
|
-
private
|
|
124
|
+
private NpmReleasePropagator(options: ReleasePropagatorOptions) {
|
|
125
125
|
return NpmReleasePropagator.Create(options)
|
|
126
126
|
}
|
|
127
127
|
}
|
|
@@ -3,7 +3,7 @@ import { readFile } from 'node:fs/promises'
|
|
|
3
3
|
import path from 'node:path'
|
|
4
4
|
import { promisify } from 'node:util'
|
|
5
5
|
|
|
6
|
-
import
|
|
6
|
+
import semver from 'semver'
|
|
7
7
|
|
|
8
8
|
import GitAutocommit from './GitAutocommit.js'
|
|
9
9
|
|
|
@@ -17,8 +17,6 @@ export default class NpmReleasePropagator implements ReleasePropagator {
|
|
|
17
17
|
private repoPaths: string[]
|
|
18
18
|
private shouldGitCommit: boolean
|
|
19
19
|
|
|
20
|
-
private currentRepoPath!: string
|
|
21
|
-
private currentPackageJson!: PackageJson
|
|
22
20
|
private metaNodeVersion!: string
|
|
23
21
|
|
|
24
22
|
protected constructor(options: ReleasePropagatorOptions) {
|
|
@@ -41,38 +39,13 @@ export default class NpmReleasePropagator implements ReleasePropagator {
|
|
|
41
39
|
|
|
42
40
|
public async run() {
|
|
43
41
|
await this.throwIfUncommittedGitChanges()
|
|
42
|
+
await this.setCurrentMetaNodeVersion()
|
|
44
43
|
|
|
45
44
|
console.info('Starting propagation...\n')
|
|
46
45
|
|
|
47
|
-
|
|
48
|
-
this.
|
|
49
|
-
|
|
50
|
-
await this.loadCurrentPackageJson()
|
|
51
|
-
|
|
52
|
-
this.throwIfPreviousReleaseNotFound()
|
|
53
|
-
|
|
54
|
-
if (this.isUpToDate) {
|
|
55
|
-
console.info(`Already up to date, skipping ${repoPath}...`)
|
|
56
|
-
continue
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
console.info(`Propagating to ${repoPath}...`)
|
|
60
|
-
await this.installReleaseForCurrentRepo()
|
|
61
|
-
|
|
62
|
-
const hasTypeErrors = await this.checkForTypeErrors()
|
|
63
|
-
|
|
64
|
-
if (hasTypeErrors) {
|
|
65
|
-
console.warn(
|
|
66
|
-
`TypeScript compilation errors detected! Rolling back for ${repoPath}...`
|
|
67
|
-
)
|
|
68
|
-
await this.rollbackInstallation()
|
|
69
|
-
continue
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
if (this.shouldGitCommit) {
|
|
73
|
-
await this.gitCommitChanges()
|
|
74
|
-
}
|
|
75
|
-
}
|
|
46
|
+
await Promise.all(
|
|
47
|
+
this.repoPaths.map((repoPath) => this.runFor(repoPath))
|
|
48
|
+
)
|
|
76
49
|
|
|
77
50
|
console.info('\nPropagation complete!\n')
|
|
78
51
|
}
|
|
@@ -105,62 +78,98 @@ Please commit or stash these changes before running propagation!
|
|
|
105
78
|
`
|
|
106
79
|
}
|
|
107
80
|
|
|
108
|
-
private async
|
|
109
|
-
const
|
|
110
|
-
|
|
81
|
+
private async setCurrentMetaNodeVersion() {
|
|
82
|
+
const globalRoot = await this.exec('yarn global dir')
|
|
83
|
+
|
|
84
|
+
const pkgPath = path.join(
|
|
85
|
+
globalRoot.stdout.trim(),
|
|
86
|
+
'node_modules',
|
|
87
|
+
'@neurodevs',
|
|
88
|
+
'meta-node',
|
|
89
|
+
'package.json'
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
const raw = await this.readFile(pkgPath, { encoding: 'utf-8' })
|
|
93
|
+
const pkg = JSON.parse(raw)
|
|
94
|
+
|
|
95
|
+
this.metaNodeVersion = pkg.version
|
|
111
96
|
}
|
|
112
97
|
|
|
113
|
-
private
|
|
114
|
-
|
|
98
|
+
private async runFor(repoPath: string) {
|
|
99
|
+
const pkg = await this.loadPackageJsonFor(repoPath)
|
|
100
|
+
this.throwIfNoPreviousReleaseFor(pkg)
|
|
101
|
+
|
|
102
|
+
const isUpToDate = this.isUpToDateFor(pkg)
|
|
103
|
+
|
|
104
|
+
if (isUpToDate) {
|
|
105
|
+
console.info(`Already up to date, skipping ${repoPath}...`)
|
|
106
|
+
return
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
console.info(`Propagating to ${repoPath}...`)
|
|
110
|
+
await this.installReleaseFor(repoPath, pkg)
|
|
111
|
+
|
|
112
|
+
const hasTypeErrors = await this.checkTypeErrorsFor(repoPath)
|
|
113
|
+
|
|
114
|
+
if (hasTypeErrors) {
|
|
115
|
+
console.warn(`Type errors detected! Rolling back ${repoPath}...`)
|
|
116
|
+
await this.rollbackInstallationFor(repoPath)
|
|
117
|
+
return
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
if (this.shouldGitCommit) {
|
|
121
|
+
await this.gitCommitChangesFor(repoPath)
|
|
122
|
+
}
|
|
115
123
|
}
|
|
116
124
|
|
|
117
|
-
private
|
|
118
|
-
|
|
125
|
+
private async loadPackageJsonFor(repoPath: string) {
|
|
126
|
+
const raw = await this.readFile(`${repoPath}/package.json`, 'utf-8')
|
|
127
|
+
return JSON.parse(raw)
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
private throwIfNoPreviousReleaseFor(pkg: PackageJson) {
|
|
131
|
+
const isDependency = Boolean(pkg.dependencies?.[this.packageName])
|
|
132
|
+
const isDevDependency = Boolean(pkg.devDependencies?.[this.packageName])
|
|
133
|
+
|
|
134
|
+
if (!(isDependency || isDevDependency)) {
|
|
119
135
|
throw new Error(
|
|
120
136
|
`Cannot propagate release for ${this.packageName} because it is not listed in either dependencies or devDependencies! Please install it in the target repository before running propagation.`
|
|
121
137
|
)
|
|
122
138
|
}
|
|
123
139
|
}
|
|
124
140
|
|
|
125
|
-
private
|
|
126
|
-
|
|
127
|
-
}
|
|
141
|
+
private isUpToDateFor(pkg: PackageJson) {
|
|
142
|
+
const target = semver.parse(this.packageVersion)!
|
|
128
143
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
this.currentPackageJson?.devDependencies?.[this.packageName] ?? ''
|
|
144
|
+
const dependencyMin = semver.minVersion(
|
|
145
|
+
pkg.dependencies?.[this.packageName] ?? ''
|
|
132
146
|
)
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
private get isUpToDate() {
|
|
136
|
-
const target = parse(this.packageVersion)
|
|
137
147
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
const depMin = minVersion(this.dependencyRange ?? '')
|
|
143
|
-
const devDepMin = minVersion(this.devDependencyRange ?? '')
|
|
148
|
+
const devDependencyMin = semver.minVersion(
|
|
149
|
+
pkg.devDependencies?.[this.packageName] ?? ''
|
|
150
|
+
)
|
|
144
151
|
|
|
145
152
|
return (
|
|
146
|
-
(
|
|
147
|
-
(
|
|
153
|
+
(dependencyMin && semver.gte(dependencyMin, target)) ||
|
|
154
|
+
(devDependencyMin && semver.gte(devDependencyMin, target))
|
|
148
155
|
)
|
|
149
156
|
}
|
|
150
157
|
|
|
151
|
-
private async
|
|
158
|
+
private async installReleaseFor(repoPath: string, pkg: PackageJson) {
|
|
159
|
+
const isDevDependency = Boolean(pkg.devDependencies?.[this.packageName])
|
|
160
|
+
|
|
152
161
|
await this.exec(
|
|
153
|
-
`yarn add ${
|
|
162
|
+
`yarn add ${isDevDependency ? '-D ' : ''}${this.packageName}@${this.packageVersion}`,
|
|
154
163
|
{
|
|
155
|
-
cwd:
|
|
164
|
+
cwd: repoPath,
|
|
156
165
|
}
|
|
157
166
|
)
|
|
158
167
|
}
|
|
159
168
|
|
|
160
|
-
private async
|
|
169
|
+
private async checkTypeErrorsFor(repoPath: string) {
|
|
161
170
|
try {
|
|
162
171
|
await this.exec(`npx tsc --noEmit`, {
|
|
163
|
-
cwd:
|
|
172
|
+
cwd: repoPath,
|
|
164
173
|
})
|
|
165
174
|
return false
|
|
166
175
|
} catch {
|
|
@@ -168,37 +177,19 @@ Please commit or stash these changes before running propagation!
|
|
|
168
177
|
}
|
|
169
178
|
}
|
|
170
179
|
|
|
171
|
-
private async
|
|
180
|
+
private async rollbackInstallationFor(repoPath: string) {
|
|
172
181
|
await this.exec(`git reset --hard && git clean -fd`, {
|
|
173
|
-
cwd:
|
|
182
|
+
cwd: repoPath,
|
|
174
183
|
})
|
|
175
184
|
}
|
|
176
185
|
|
|
177
|
-
private async
|
|
178
|
-
await this.setCurrentMetaNodeVersion()
|
|
179
|
-
|
|
186
|
+
private async gitCommitChangesFor(repoPath: string) {
|
|
180
187
|
await this.GitAutocommit(
|
|
181
|
-
`patch: propagate ${this.packageName}@${this.packageVersion} (@neurodevs/meta-node: ${this.metaNodeVersion})
|
|
188
|
+
`patch: propagate ${this.packageName}@${this.packageVersion} (@neurodevs/meta-node: ${this.metaNodeVersion})`,
|
|
189
|
+
repoPath
|
|
182
190
|
)
|
|
183
191
|
}
|
|
184
192
|
|
|
185
|
-
private async setCurrentMetaNodeVersion() {
|
|
186
|
-
const globalRoot = await this.exec('yarn global dir')
|
|
187
|
-
|
|
188
|
-
const pkgPath = path.join(
|
|
189
|
-
globalRoot.stdout.trim(),
|
|
190
|
-
'node_modules',
|
|
191
|
-
'@neurodevs',
|
|
192
|
-
'meta-node',
|
|
193
|
-
'package.json'
|
|
194
|
-
)
|
|
195
|
-
|
|
196
|
-
const raw = await this.readFile(pkgPath, { encoding: 'utf-8' })
|
|
197
|
-
const pkg = JSON.parse(raw)
|
|
198
|
-
|
|
199
|
-
this.metaNodeVersion = pkg.version
|
|
200
|
-
}
|
|
201
|
-
|
|
202
193
|
private get exec() {
|
|
203
194
|
return NpmReleasePropagator.exec
|
|
204
195
|
}
|
|
@@ -207,8 +198,8 @@ Please commit or stash these changes before running propagation!
|
|
|
207
198
|
return NpmReleasePropagator.readFile
|
|
208
199
|
}
|
|
209
200
|
|
|
210
|
-
private GitAutocommit(commitMessage: string) {
|
|
211
|
-
return GitAutocommit.Create(commitMessage,
|
|
201
|
+
private GitAutocommit(commitMessage: string, repoPath: string) {
|
|
202
|
+
return GitAutocommit.Create(commitMessage, repoPath)
|
|
212
203
|
}
|
|
213
204
|
}
|
|
214
205
|
|