@neurodevs/meta-node 0.17.1 → 0.18.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/build/__tests__/impl/NpmPropagationCoordinator.test.d.ts +1 -0
- package/build/__tests__/impl/NpmPropagationCoordinator.test.js +12 -0
- package/build/__tests__/impl/NpmPropagationCoordinator.test.js.map +1 -1
- package/build/__tests__/impl/NpmReleasePropagator.test.d.ts +2 -0
- package/build/__tests__/impl/NpmReleasePropagator.test.js +23 -2
- package/build/__tests__/impl/NpmReleasePropagator.test.js.map +1 -1
- package/build/impl/NpmPropagationCoordinator.d.ts +2 -0
- package/build/impl/NpmPropagationCoordinator.js +4 -1
- package/build/impl/NpmPropagationCoordinator.js.map +1 -1
- package/build/impl/NpmReleasePropagator.d.ts +6 -3
- package/build/impl/NpmReleasePropagator.js +33 -15
- package/build/impl/NpmReleasePropagator.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/impl/NpmPropagationCoordinator.test.ts +16 -0
- package/src/__tests__/impl/NpmReleasePropagator.test.ts +37 -2
- package/src/impl/NpmPropagationCoordinator.ts +6 -1
- package/src/impl/NpmReleasePropagator.ts +53 -18
|
@@ -8,6 +8,7 @@ export default class NpmPropagationCoordinatorTest extends AbstractPackageTest {
|
|
|
8
8
|
protected static createsInstance(): Promise<void>;
|
|
9
9
|
protected static propagatesToCorrectRepoPaths(): Promise<void>;
|
|
10
10
|
protected static propagatesMajorsIfPassedOptionalParameter(): Promise<void>;
|
|
11
|
+
protected static passesShouldGitCommitParameterToPropagator(): Promise<void>;
|
|
11
12
|
private static run;
|
|
12
13
|
private static setFakeReadFile;
|
|
13
14
|
private static setFakeReleasePropagator;
|
|
@@ -48,6 +48,7 @@ export default class NpmPropagationCoordinatorTest extends AbstractPackageTest {
|
|
|
48
48
|
packageName: this.scopedName,
|
|
49
49
|
packageVersion: this.packageVersion,
|
|
50
50
|
repoPaths: [this.repoPaths[0], this.repoPaths[1]],
|
|
51
|
+
shouldGitCommit: true,
|
|
51
52
|
}, 'Incorrect repo paths propagated to!');
|
|
52
53
|
}
|
|
53
54
|
static async propagatesMajorsIfPassedOptionalParameter() {
|
|
@@ -63,8 +64,16 @@ export default class NpmPropagationCoordinatorTest extends AbstractPackageTest {
|
|
|
63
64
|
this.repoPaths[1],
|
|
64
65
|
this.repoPaths[2],
|
|
65
66
|
],
|
|
67
|
+
shouldGitCommit: true,
|
|
66
68
|
}, 'Did not propagate majors!');
|
|
67
69
|
}
|
|
70
|
+
static async passesShouldGitCommitParameterToPropagator() {
|
|
71
|
+
const instance = this.NpmPropagationCoordinator({
|
|
72
|
+
shouldGitCommit: false,
|
|
73
|
+
});
|
|
74
|
+
await instance.run();
|
|
75
|
+
assert.isFalse(FakeReleasePropagator.callsToConstructor[0]?.shouldGitCommit, 'Did not pass shouldGitCommit parameter to propagator!');
|
|
76
|
+
}
|
|
68
77
|
static async run() {
|
|
69
78
|
await this.instance.run();
|
|
70
79
|
}
|
|
@@ -93,4 +102,7 @@ __decorate([
|
|
|
93
102
|
__decorate([
|
|
94
103
|
test()
|
|
95
104
|
], NpmPropagationCoordinatorTest, "propagatesMajorsIfPassedOptionalParameter", null);
|
|
105
|
+
__decorate([
|
|
106
|
+
test()
|
|
107
|
+
], NpmPropagationCoordinatorTest, "passesShouldGitCommitParameterToPropagator", null);
|
|
96
108
|
//# sourceMappingURL=NpmPropagationCoordinator.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NpmPropagationCoordinator.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/NpmPropagationCoordinator.test.ts"],"names":[],"mappings":";;;;;;AAEA,OAAO,EACH,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,GACxB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,yBAGN,MAAM,yCAAyC,CAAA;AAChD,OAAO,oBAAoB,MAAM,oCAAoC,CAAA;AACrE,OAAO,qBAAqB,MAAM,8DAA8D,CAAA;AAEhG,OAAO,mBAAmB,MAAM,2BAA2B,CAAA;AAE3D,MAAM,CAAC,OAAO,OAAO,6BAA8B,SAAQ,mBAAmB;IAClE,MAAM,CAAC,QAAQ,CAAwB;IAEvC,MAAM,CAAU,QAAQ,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAA;IAErE,MAAM,CAAU,SAAS,GAAG;QAChC,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,QAAQ;KAChB,CAAA;IAEO,MAAM,CAAU,QAAQ,GAAG;QAC/B,IAAI,CAAC,mBAAmB,CAAC;YACrB,YAAY,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE;SAChD,CAAC;QACF,IAAI,CAAC,mBAAmB,CAAC;YACrB,eAAe,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE;SACnD,CAAC;QACF,IAAI,CAAC,mBAAmB,CAAC;YACrB,YAAY,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE;SAChD,CAAC;QACF,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;KAC7D,CAAA;IAES,MAAM,CAAC,KAAK,CAAC,UAAU;QAC7B,MAAM,KAAK,CAAC,UAAU,EAAE,CAAA;QAExB,IAAI,CAAC,eAAe,EAAE,CAAA;QACtB,IAAI,CAAC,wBAAwB,EAAE,CAAA;QAE/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAA;IACpD,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,4BAA4B;QAC/C,MAAM,IAAI,CAAC,GAAG,EAAE,CAAA;QAEhB,MAAM,CAAC,WAAW,CACd,qBAAqB,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAC3C;YACI,WAAW,EAAE,IAAI,CAAC,UAAU;YAC5B,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,SAAS,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"NpmPropagationCoordinator.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/NpmPropagationCoordinator.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,8 @@ export default class NpmReleasePropagatorTest extends AbstractPackageTest {
|
|
|
6
6
|
protected static createsInstance(): Promise<void>;
|
|
7
7
|
protected static runInstallsReleaseForEachRepoPath(): Promise<void>;
|
|
8
8
|
protected static commitsChangesToGit(): Promise<void>;
|
|
9
|
+
protected static doesNotInstallIfAlreadyUpToDate(): Promise<void>;
|
|
10
|
+
protected static doesNotCommitIfPassedOptionalParameter(): Promise<void>;
|
|
9
11
|
protected static throwsIfRepoDoesNotHavePreviousRelease(): Promise<void>;
|
|
10
12
|
protected static throwsIfGitHasUncommittedChanges(): Promise<void>;
|
|
11
13
|
private static run;
|
|
@@ -53,6 +53,21 @@ export default class NpmReleasePropagatorTest extends AbstractPackageTest {
|
|
|
53
53
|
},
|
|
54
54
|
], 'Did not commit changes to git for each repo path!');
|
|
55
55
|
}
|
|
56
|
+
static async doesNotInstallIfAlreadyUpToDate() {
|
|
57
|
+
setFakeReadFileResult(`${this.repoPaths[0]}/package.json`, JSON.stringify(this.generatePackageJson({
|
|
58
|
+
dependencies: {
|
|
59
|
+
[this.packageName]: this.packageVersion,
|
|
60
|
+
},
|
|
61
|
+
})));
|
|
62
|
+
await this.run();
|
|
63
|
+
const execCalls = callsToExec.filter((call) => call.command.includes(`yarn add`));
|
|
64
|
+
assert.isEqual(execCalls.length, 1, 'Should not have installed update!');
|
|
65
|
+
}
|
|
66
|
+
static async doesNotCommitIfPassedOptionalParameter() {
|
|
67
|
+
const instance = this.NpmReleasePropagator({ shouldGitCommit: false });
|
|
68
|
+
await instance.run();
|
|
69
|
+
assert.isEqual(FakeAutocommit.callsToConstructor.length, 0, 'Should not have committed changes!');
|
|
70
|
+
}
|
|
56
71
|
static async throwsIfRepoDoesNotHavePreviousRelease() {
|
|
57
72
|
const missingPackageName = this.generateId();
|
|
58
73
|
this.instance = this.NpmReleasePropagator({
|
|
@@ -90,12 +105,12 @@ Please commit or stash these changes before running propagation!
|
|
|
90
105
|
resetCallsToReadFile();
|
|
91
106
|
setFakeReadFileResult(`${this.repoPaths[0]}/package.json`, JSON.stringify(this.generatePackageJson({
|
|
92
107
|
dependencies: {
|
|
93
|
-
[this.packageName]:
|
|
108
|
+
[this.packageName]: '2.0.0',
|
|
94
109
|
},
|
|
95
110
|
})));
|
|
96
111
|
setFakeReadFileResult(`${this.repoPaths[1]}/package.json`, JSON.stringify(this.generatePackageJson({
|
|
97
112
|
devDependencies: {
|
|
98
|
-
[this.packageName]:
|
|
113
|
+
[this.packageName]: '2.0.0',
|
|
99
114
|
},
|
|
100
115
|
})));
|
|
101
116
|
}
|
|
@@ -121,6 +136,12 @@ __decorate([
|
|
|
121
136
|
__decorate([
|
|
122
137
|
test()
|
|
123
138
|
], NpmReleasePropagatorTest, "commitsChangesToGit", null);
|
|
139
|
+
__decorate([
|
|
140
|
+
test()
|
|
141
|
+
], NpmReleasePropagatorTest, "doesNotInstallIfAlreadyUpToDate", null);
|
|
142
|
+
__decorate([
|
|
143
|
+
test()
|
|
144
|
+
], NpmReleasePropagatorTest, "doesNotCommitIfPassedOptionalParameter", null);
|
|
124
145
|
__decorate([
|
|
125
146
|
test()
|
|
126
147
|
], NpmReleasePropagatorTest, "throwsIfRepoDoesNotHavePreviousRelease", null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NpmReleasePropagator.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/NpmReleasePropagator.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"NpmReleasePropagator.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/NpmReleasePropagator.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ export default class NpmPropagationCoordinator implements PropagationCoordinator
|
|
|
5
5
|
private repoPath;
|
|
6
6
|
private repoPaths;
|
|
7
7
|
private shouldPropagateMajors;
|
|
8
|
+
private shouldGitCommit;
|
|
8
9
|
private pkg;
|
|
9
10
|
private currentRepoPath;
|
|
10
11
|
private currentPkgJson;
|
|
@@ -26,4 +27,5 @@ export interface PropagationCoordinator {
|
|
|
26
27
|
export type PropagationCoordinatorConstructor = new (repoPath: string, repoPaths: string[], options?: PropagationCoordinatorOptions) => PropagationCoordinator;
|
|
27
28
|
export interface PropagationCoordinatorOptions {
|
|
28
29
|
shouldPropagateMajors?: boolean;
|
|
30
|
+
shouldGitCommit?: boolean;
|
|
29
31
|
}
|
|
@@ -7,14 +7,16 @@ export default class NpmPropagationCoordinator {
|
|
|
7
7
|
repoPath;
|
|
8
8
|
repoPaths;
|
|
9
9
|
shouldPropagateMajors;
|
|
10
|
+
shouldGitCommit;
|
|
10
11
|
pkg;
|
|
11
12
|
currentRepoPath;
|
|
12
13
|
currentPkgJson;
|
|
13
14
|
constructor(repoPath, repoPaths, options) {
|
|
14
|
-
const { shouldPropagateMajors = false } = options ?? {};
|
|
15
|
+
const { shouldPropagateMajors = false, shouldGitCommit = true } = options ?? {};
|
|
15
16
|
this.repoPath = repoPath;
|
|
16
17
|
this.repoPaths = repoPaths;
|
|
17
18
|
this.shouldPropagateMajors = shouldPropagateMajors;
|
|
19
|
+
this.shouldGitCommit = shouldGitCommit;
|
|
18
20
|
}
|
|
19
21
|
static Create(repoPath, repoPaths, options) {
|
|
20
22
|
return new (this.Class ?? this)(repoPath, repoPaths, options);
|
|
@@ -26,6 +28,7 @@ export default class NpmPropagationCoordinator {
|
|
|
26
28
|
packageName: this.packageName,
|
|
27
29
|
packageVersion: this.packageVersion,
|
|
28
30
|
repoPaths,
|
|
31
|
+
shouldGitCommit: this.shouldGitCommit,
|
|
29
32
|
});
|
|
30
33
|
await propagator.run();
|
|
31
34
|
}
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"NpmPropagationCoordinator.js","sourceRoot":"","sources":["../../src/impl/NpmPropagationCoordinator.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ export default class NpmReleasePropagator implements ReleasePropagator {
|
|
|
7
7
|
private packageName;
|
|
8
8
|
private packageVersion;
|
|
9
9
|
private repoPaths;
|
|
10
|
+
private shouldGitCommit;
|
|
10
11
|
private currentRepoPath;
|
|
11
12
|
private currentPackageJson;
|
|
12
13
|
private metaNodeVersion;
|
|
@@ -15,11 +16,12 @@ export default class NpmReleasePropagator implements ReleasePropagator {
|
|
|
15
16
|
run(): Promise<void>;
|
|
16
17
|
private throwIfUncommittedGitChanges;
|
|
17
18
|
private generateUncommittedErrorFrom;
|
|
18
|
-
private throwIfPreviousReleaseNotFound;
|
|
19
19
|
private loadCurrentPackageJson;
|
|
20
20
|
private get currentPackageJsonPath();
|
|
21
|
-
private
|
|
22
|
-
private get
|
|
21
|
+
private throwIfPreviousReleaseNotFound;
|
|
22
|
+
private get dependencyRange();
|
|
23
|
+
private get devDependencyRange();
|
|
24
|
+
private get isUpToDate();
|
|
23
25
|
private installReleaseForCurrentRepo;
|
|
24
26
|
private gitCommitChanges;
|
|
25
27
|
private setCurrentMetaNodeVersion;
|
|
@@ -35,6 +37,7 @@ export interface ReleasePropagatorOptions {
|
|
|
35
37
|
packageName: string;
|
|
36
38
|
packageVersion: string;
|
|
37
39
|
repoPaths: string[];
|
|
40
|
+
shouldGitCommit?: boolean;
|
|
38
41
|
}
|
|
39
42
|
export interface PackageJson {
|
|
40
43
|
name: string;
|
|
@@ -2,6 +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 { parse, minVersion, gte } from 'semver';
|
|
5
6
|
import GitAutocommit from './GitAutocommit.js';
|
|
6
7
|
export default class NpmReleasePropagator {
|
|
7
8
|
static Class;
|
|
@@ -10,14 +11,16 @@ export default class NpmReleasePropagator {
|
|
|
10
11
|
packageName;
|
|
11
12
|
packageVersion;
|
|
12
13
|
repoPaths;
|
|
14
|
+
shouldGitCommit;
|
|
13
15
|
currentRepoPath;
|
|
14
16
|
currentPackageJson;
|
|
15
17
|
metaNodeVersion;
|
|
16
18
|
constructor(options) {
|
|
17
|
-
const { packageName, packageVersion, repoPaths } = options;
|
|
19
|
+
const { packageName, packageVersion, repoPaths, shouldGitCommit = true, } = options;
|
|
18
20
|
this.packageName = packageName;
|
|
19
21
|
this.packageVersion = packageVersion;
|
|
20
22
|
this.repoPaths = repoPaths;
|
|
23
|
+
this.shouldGitCommit = shouldGitCommit;
|
|
21
24
|
}
|
|
22
25
|
static Create(options) {
|
|
23
26
|
return new (this.Class ?? this)(options);
|
|
@@ -25,11 +28,17 @@ export default class NpmReleasePropagator {
|
|
|
25
28
|
async run() {
|
|
26
29
|
await this.throwIfUncommittedGitChanges();
|
|
27
30
|
for (const repoPath of this.repoPaths) {
|
|
28
|
-
console.log(`Propagating to ${repoPath}...`);
|
|
29
31
|
this.currentRepoPath = repoPath;
|
|
30
|
-
await this.
|
|
32
|
+
await this.loadCurrentPackageJson();
|
|
33
|
+
this.throwIfPreviousReleaseNotFound();
|
|
34
|
+
if (this.isUpToDate) {
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
console.log(`Propagating to ${repoPath}...`);
|
|
31
38
|
await this.installReleaseForCurrentRepo();
|
|
32
|
-
|
|
39
|
+
if (this.shouldGitCommit) {
|
|
40
|
+
await this.gitCommitChanges();
|
|
41
|
+
}
|
|
33
42
|
}
|
|
34
43
|
}
|
|
35
44
|
async throwIfUncommittedGitChanges() {
|
|
@@ -55,12 +64,6 @@ export default class NpmReleasePropagator {
|
|
|
55
64
|
Please commit or stash these changes before running propagation!
|
|
56
65
|
`;
|
|
57
66
|
}
|
|
58
|
-
async throwIfPreviousReleaseNotFound() {
|
|
59
|
-
await this.loadCurrentPackageJson();
|
|
60
|
-
if (!(this.isDependency || this.isDevDependency)) {
|
|
61
|
-
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.`);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
67
|
async loadCurrentPackageJson() {
|
|
65
68
|
const raw = await this.readFile(this.currentPackageJsonPath, 'utf-8');
|
|
66
69
|
this.currentPackageJson = JSON.parse(raw);
|
|
@@ -68,14 +71,29 @@ Please commit or stash these changes before running propagation!
|
|
|
68
71
|
get currentPackageJsonPath() {
|
|
69
72
|
return `${this.currentRepoPath}/package.json`;
|
|
70
73
|
}
|
|
71
|
-
|
|
72
|
-
|
|
74
|
+
throwIfPreviousReleaseNotFound() {
|
|
75
|
+
if (!(this.dependencyRange || this.devDependencyRange)) {
|
|
76
|
+
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.`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
get dependencyRange() {
|
|
80
|
+
return this.currentPackageJson?.dependencies?.[this.packageName] ?? '';
|
|
81
|
+
}
|
|
82
|
+
get devDependencyRange() {
|
|
83
|
+
return (this.currentPackageJson?.devDependencies?.[this.packageName] ?? '');
|
|
73
84
|
}
|
|
74
|
-
get
|
|
75
|
-
|
|
85
|
+
get isUpToDate() {
|
|
86
|
+
const target = parse(this.packageVersion);
|
|
87
|
+
if (!target) {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
const depMin = minVersion(this.dependencyRange ?? '');
|
|
91
|
+
const devDepMin = minVersion(this.devDependencyRange ?? '');
|
|
92
|
+
return ((depMin && gte(depMin, target)) ||
|
|
93
|
+
(devDepMin && gte(devDepMin, target)));
|
|
76
94
|
}
|
|
77
95
|
async installReleaseForCurrentRepo() {
|
|
78
|
-
await this.exec(`yarn add ${this.
|
|
96
|
+
await this.exec(`yarn add ${this.devDependencyRange ? '-D ' : ''}${this.packageName}@${this.packageVersion}`, {
|
|
79
97
|
cwd: this.currentRepoPath,
|
|
80
98
|
});
|
|
81
99
|
}
|
|
@@ -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,aAAa,MAAM,oBAAoB,CAAA;AAE9C,MAAM,CAAC,OAAO,OAAO,oBAAoB;IAC9B,MAAM,CAAC,KAAK,CAA+B;IAC3C,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;IACjC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAEzB,WAAW,CAAQ;IACnB,cAAc,CAAQ;IACtB,SAAS,CAAU;
|
|
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.
|
|
3
|
+
"version": "0.18.0",
|
|
4
4
|
"description": "Meta-layer utilities for maintaining Node.js package ecosystems.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"keywords": [
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"devDependencies": {
|
|
57
57
|
"@neurodevs/fake-node-core": "^0.7.3",
|
|
58
58
|
"@neurodevs/generate-id": "^1.0.9",
|
|
59
|
-
"@neurodevs/node-tdd": "
|
|
59
|
+
"@neurodevs/node-tdd": "0.2.3",
|
|
60
60
|
"@types/fs-extra": "^11.0.4",
|
|
61
61
|
"@types/node": "^24.6.2",
|
|
62
62
|
"@types/node-fetch": "^2.6.13",
|
|
@@ -67,6 +67,7 @@ export default class NpmPropagationCoordinatorTest extends AbstractPackageTest {
|
|
|
67
67
|
packageName: this.scopedName,
|
|
68
68
|
packageVersion: this.packageVersion,
|
|
69
69
|
repoPaths: [this.repoPaths[0], this.repoPaths[1]],
|
|
70
|
+
shouldGitCommit: true,
|
|
70
71
|
},
|
|
71
72
|
'Incorrect repo paths propagated to!'
|
|
72
73
|
)
|
|
@@ -90,11 +91,26 @@ export default class NpmPropagationCoordinatorTest extends AbstractPackageTest {
|
|
|
90
91
|
this.repoPaths[1],
|
|
91
92
|
this.repoPaths[2],
|
|
92
93
|
],
|
|
94
|
+
shouldGitCommit: true,
|
|
93
95
|
},
|
|
94
96
|
'Did not propagate majors!'
|
|
95
97
|
)
|
|
96
98
|
}
|
|
97
99
|
|
|
100
|
+
@test()
|
|
101
|
+
protected static async passesShouldGitCommitParameterToPropagator() {
|
|
102
|
+
const instance = this.NpmPropagationCoordinator({
|
|
103
|
+
shouldGitCommit: false,
|
|
104
|
+
})
|
|
105
|
+
|
|
106
|
+
await instance.run()
|
|
107
|
+
|
|
108
|
+
assert.isFalse(
|
|
109
|
+
FakeReleasePropagator.callsToConstructor[0]?.shouldGitCommit,
|
|
110
|
+
'Did not pass shouldGitCommit parameter to propagator!'
|
|
111
|
+
)
|
|
112
|
+
}
|
|
113
|
+
|
|
98
114
|
private static async run() {
|
|
99
115
|
await this.instance.run()
|
|
100
116
|
}
|
|
@@ -85,6 +85,41 @@ export default class NpmReleasePropagatorTest extends AbstractPackageTest {
|
|
|
85
85
|
)
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
+
@test()
|
|
89
|
+
protected static async doesNotInstallIfAlreadyUpToDate() {
|
|
90
|
+
setFakeReadFileResult(
|
|
91
|
+
`${this.repoPaths[0]}/package.json`,
|
|
92
|
+
JSON.stringify(
|
|
93
|
+
this.generatePackageJson({
|
|
94
|
+
dependencies: {
|
|
95
|
+
[this.packageName]: this.packageVersion,
|
|
96
|
+
},
|
|
97
|
+
})
|
|
98
|
+
)
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
await this.run()
|
|
102
|
+
|
|
103
|
+
const execCalls = callsToExec.filter((call) =>
|
|
104
|
+
call.command.includes(`yarn add`)
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
assert.isEqual(execCalls.length, 1, 'Should not have installed update!')
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
@test()
|
|
111
|
+
protected static async doesNotCommitIfPassedOptionalParameter() {
|
|
112
|
+
const instance = this.NpmReleasePropagator({ shouldGitCommit: false })
|
|
113
|
+
|
|
114
|
+
await instance.run()
|
|
115
|
+
|
|
116
|
+
assert.isEqual(
|
|
117
|
+
FakeAutocommit.callsToConstructor.length,
|
|
118
|
+
0,
|
|
119
|
+
'Should not have committed changes!'
|
|
120
|
+
)
|
|
121
|
+
}
|
|
122
|
+
|
|
88
123
|
@test()
|
|
89
124
|
protected static async throwsIfRepoDoesNotHavePreviousRelease() {
|
|
90
125
|
const missingPackageName = this.generateId()
|
|
@@ -139,7 +174,7 @@ Please commit or stash these changes before running propagation!
|
|
|
139
174
|
JSON.stringify(
|
|
140
175
|
this.generatePackageJson({
|
|
141
176
|
dependencies: {
|
|
142
|
-
[this.packageName]:
|
|
177
|
+
[this.packageName]: '2.0.0',
|
|
143
178
|
},
|
|
144
179
|
})
|
|
145
180
|
)
|
|
@@ -150,7 +185,7 @@ Please commit or stash these changes before running propagation!
|
|
|
150
185
|
JSON.stringify(
|
|
151
186
|
this.generatePackageJson({
|
|
152
187
|
devDependencies: {
|
|
153
|
-
[this.packageName]:
|
|
188
|
+
[this.packageName]: '2.0.0',
|
|
154
189
|
},
|
|
155
190
|
})
|
|
156
191
|
)
|
|
@@ -16,6 +16,7 @@ export default class NpmPropagationCoordinator
|
|
|
16
16
|
private repoPath: string
|
|
17
17
|
private repoPaths: string[]
|
|
18
18
|
private shouldPropagateMajors: boolean
|
|
19
|
+
private shouldGitCommit: boolean
|
|
19
20
|
|
|
20
21
|
private pkg!: PackageJson
|
|
21
22
|
private currentRepoPath!: string
|
|
@@ -26,11 +27,13 @@ export default class NpmPropagationCoordinator
|
|
|
26
27
|
repoPaths: string[],
|
|
27
28
|
options?: PropagationCoordinatorOptions
|
|
28
29
|
) {
|
|
29
|
-
const { shouldPropagateMajors = false
|
|
30
|
+
const { shouldPropagateMajors = false, shouldGitCommit = true } =
|
|
31
|
+
options ?? {}
|
|
30
32
|
|
|
31
33
|
this.repoPath = repoPath
|
|
32
34
|
this.repoPaths = repoPaths
|
|
33
35
|
this.shouldPropagateMajors = shouldPropagateMajors
|
|
36
|
+
this.shouldGitCommit = shouldGitCommit
|
|
34
37
|
}
|
|
35
38
|
|
|
36
39
|
public static Create(
|
|
@@ -50,6 +53,7 @@ export default class NpmPropagationCoordinator
|
|
|
50
53
|
packageName: this.packageName,
|
|
51
54
|
packageVersion: this.packageVersion,
|
|
52
55
|
repoPaths,
|
|
56
|
+
shouldGitCommit: this.shouldGitCommit,
|
|
53
57
|
})
|
|
54
58
|
|
|
55
59
|
await propagator.run()
|
|
@@ -130,4 +134,5 @@ export type PropagationCoordinatorConstructor = new (
|
|
|
130
134
|
|
|
131
135
|
export interface PropagationCoordinatorOptions {
|
|
132
136
|
shouldPropagateMajors?: boolean
|
|
137
|
+
shouldGitCommit?: boolean
|
|
133
138
|
}
|
|
@@ -3,6 +3,8 @@ import { readFile } from 'node:fs/promises'
|
|
|
3
3
|
import path from 'node:path'
|
|
4
4
|
import { promisify } from 'node:util'
|
|
5
5
|
|
|
6
|
+
import { parse, minVersion, gte } from 'semver'
|
|
7
|
+
|
|
6
8
|
import GitAutocommit from './GitAutocommit.js'
|
|
7
9
|
|
|
8
10
|
export default class NpmReleasePropagator implements ReleasePropagator {
|
|
@@ -13,17 +15,24 @@ export default class NpmReleasePropagator implements ReleasePropagator {
|
|
|
13
15
|
private packageName: string
|
|
14
16
|
private packageVersion: string
|
|
15
17
|
private repoPaths: string[]
|
|
18
|
+
private shouldGitCommit: boolean
|
|
16
19
|
|
|
17
20
|
private currentRepoPath!: string
|
|
18
21
|
private currentPackageJson!: PackageJson
|
|
19
22
|
private metaNodeVersion!: string
|
|
20
23
|
|
|
21
24
|
protected constructor(options: ReleasePropagatorOptions) {
|
|
22
|
-
const {
|
|
25
|
+
const {
|
|
26
|
+
packageName,
|
|
27
|
+
packageVersion,
|
|
28
|
+
repoPaths,
|
|
29
|
+
shouldGitCommit = true,
|
|
30
|
+
} = options
|
|
23
31
|
|
|
24
32
|
this.packageName = packageName
|
|
25
33
|
this.packageVersion = packageVersion
|
|
26
34
|
this.repoPaths = repoPaths
|
|
35
|
+
this.shouldGitCommit = shouldGitCommit
|
|
27
36
|
}
|
|
28
37
|
|
|
29
38
|
public static Create(options: ReleasePropagatorOptions) {
|
|
@@ -34,13 +43,22 @@ export default class NpmReleasePropagator implements ReleasePropagator {
|
|
|
34
43
|
await this.throwIfUncommittedGitChanges()
|
|
35
44
|
|
|
36
45
|
for (const repoPath of this.repoPaths) {
|
|
37
|
-
console.log(`Propagating to ${repoPath}...`)
|
|
38
46
|
this.currentRepoPath = repoPath
|
|
39
47
|
|
|
40
|
-
await this.
|
|
48
|
+
await this.loadCurrentPackageJson()
|
|
41
49
|
|
|
50
|
+
this.throwIfPreviousReleaseNotFound()
|
|
51
|
+
|
|
52
|
+
if (this.isUpToDate) {
|
|
53
|
+
continue
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
console.log(`Propagating to ${repoPath}...`)
|
|
42
57
|
await this.installReleaseForCurrentRepo()
|
|
43
|
-
|
|
58
|
+
|
|
59
|
+
if (this.shouldGitCommit) {
|
|
60
|
+
await this.gitCommitChanges()
|
|
61
|
+
}
|
|
44
62
|
}
|
|
45
63
|
}
|
|
46
64
|
|
|
@@ -72,36 +90,52 @@ Please commit or stash these changes before running propagation!
|
|
|
72
90
|
`
|
|
73
91
|
}
|
|
74
92
|
|
|
75
|
-
private async
|
|
76
|
-
await this.
|
|
93
|
+
private async loadCurrentPackageJson() {
|
|
94
|
+
const raw = await this.readFile(this.currentPackageJsonPath, 'utf-8')
|
|
95
|
+
this.currentPackageJson = JSON.parse(raw)
|
|
96
|
+
}
|
|
77
97
|
|
|
78
|
-
|
|
98
|
+
private get currentPackageJsonPath() {
|
|
99
|
+
return `${this.currentRepoPath}/package.json`
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
private throwIfPreviousReleaseNotFound() {
|
|
103
|
+
if (!(this.dependencyRange || this.devDependencyRange)) {
|
|
79
104
|
throw new Error(
|
|
80
105
|
`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.`
|
|
81
106
|
)
|
|
82
107
|
}
|
|
83
108
|
}
|
|
84
109
|
|
|
85
|
-
private
|
|
86
|
-
|
|
87
|
-
this.currentPackageJson = JSON.parse(raw)
|
|
110
|
+
private get dependencyRange() {
|
|
111
|
+
return this.currentPackageJson?.dependencies?.[this.packageName] ?? ''
|
|
88
112
|
}
|
|
89
113
|
|
|
90
|
-
private get
|
|
91
|
-
return
|
|
114
|
+
private get devDependencyRange() {
|
|
115
|
+
return (
|
|
116
|
+
this.currentPackageJson?.devDependencies?.[this.packageName] ?? ''
|
|
117
|
+
)
|
|
92
118
|
}
|
|
93
119
|
|
|
94
|
-
private get
|
|
95
|
-
|
|
96
|
-
|
|
120
|
+
private get isUpToDate() {
|
|
121
|
+
const target = parse(this.packageVersion)
|
|
122
|
+
|
|
123
|
+
if (!target) {
|
|
124
|
+
return false
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
const depMin = minVersion(this.dependencyRange ?? '')
|
|
128
|
+
const devDepMin = minVersion(this.devDependencyRange ?? '')
|
|
97
129
|
|
|
98
|
-
|
|
99
|
-
|
|
130
|
+
return (
|
|
131
|
+
(depMin && gte(depMin, target)) ||
|
|
132
|
+
(devDepMin && gte(devDepMin, target))
|
|
133
|
+
)
|
|
100
134
|
}
|
|
101
135
|
|
|
102
136
|
private async installReleaseForCurrentRepo() {
|
|
103
137
|
await this.exec(
|
|
104
|
-
`yarn add ${this.
|
|
138
|
+
`yarn add ${this.devDependencyRange ? '-D ' : ''}${this.packageName}@${this.packageVersion}`,
|
|
105
139
|
{
|
|
106
140
|
cwd: this.currentRepoPath,
|
|
107
141
|
}
|
|
@@ -158,6 +192,7 @@ export interface ReleasePropagatorOptions {
|
|
|
158
192
|
packageName: string
|
|
159
193
|
packageVersion: string
|
|
160
194
|
repoPaths: string[]
|
|
195
|
+
shouldGitCommit?: boolean
|
|
161
196
|
}
|
|
162
197
|
|
|
163
198
|
export interface PackageJson {
|