release-monorepo-semantically 1.5.2 → 1.6.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/index.d.ts.map +1 -1
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/plugins/GithubPlugin.d.ts +18 -0
- package/dist/plugins/GithubPlugin.d.ts.map +1 -0
- package/dist/plugins/GithubPlugin.js +48 -0
- package/dist/plugins/GithubPlugin.js.map +1 -0
- package/dist/plugins/GithubPlugin.spec.d.ts +2 -0
- package/dist/plugins/GithubPlugin.spec.d.ts.map +1 -0
- package/dist/plugins/GithubPlugin.spec.js +114 -0
- package/dist/plugins/GithubPlugin.spec.js.map +1 -0
- package/dist/plugins/PackageJsonPlugin.spec.d.ts +2 -0
- package/dist/plugins/PackageJsonPlugin.spec.d.ts.map +1 -0
- package/dist/plugins/PackageJsonPlugin.spec.js +70 -0
- package/dist/plugins/PackageJsonPlugin.spec.js.map +1 -0
- package/dist/services/ChangelogView.spec.d.ts +2 -0
- package/dist/services/ChangelogView.spec.d.ts.map +1 -0
- package/dist/services/ChangelogView.spec.js +56 -0
- package/dist/services/ChangelogView.spec.js.map +1 -0
- package/dist/services/GitService.spec.js +34 -0
- package/dist/services/GitService.spec.js.map +1 -1
- package/dist/services/GithubReleaseView.d.ts +17 -0
- package/dist/services/GithubReleaseView.d.ts.map +1 -0
- package/dist/services/GithubReleaseView.js +17 -0
- package/dist/services/GithubReleaseView.js.map +1 -0
- package/dist/services/GithubReleaseView.spec.d.ts +2 -0
- package/dist/services/GithubReleaseView.spec.d.ts.map +1 -0
- package/dist/services/GithubReleaseView.spec.js +27 -0
- package/dist/services/GithubReleaseView.spec.js.map +1 -0
- package/dist/services/GithubService.d.ts +13 -0
- package/dist/services/GithubService.d.ts.map +1 -0
- package/dist/services/GithubService.js +39 -0
- package/dist/services/GithubService.js.map +1 -0
- package/dist/services/NodeFileSystemService.spec.d.ts +2 -0
- package/dist/services/NodeFileSystemService.spec.d.ts.map +1 -0
- package/dist/services/NodeFileSystemService.spec.js +62 -0
- package/dist/services/NodeFileSystemService.spec.js.map +1 -0
- package/dist/utils.spec.d.ts +2 -0
- package/dist/utils.spec.d.ts.map +1 -0
- package/dist/utils.spec.js +28 -0
- package/dist/utils.spec.js.map +1 -0
- package/package.json +2 -1
- package/templates/github-release-notes.hbs +21 -0
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,UAAU,EAAqB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,UAAU,EAAqB,MAAM,cAAc,CAAC;AA2B7D,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CA8B1D;AAYD,wBAAgB,MAAM,CAAC,GAAG,SAAgB,EAAE,OAAO,WAAwB,GAAG,MAAM,CA6CnF;AAED,eAAe,MAAM,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -20,6 +20,9 @@ const ChangelogPlugin_1 = require("./plugins/ChangelogPlugin");
|
|
|
20
20
|
const GitPlugin_1 = require("./plugins/GitPlugin");
|
|
21
21
|
const NpmPlugin_1 = require("./plugins/NpmPlugin");
|
|
22
22
|
const PackageJsonPlugin_1 = require("./plugins/PackageJsonPlugin");
|
|
23
|
+
const GithubPlugin_1 = require("./plugins/GithubPlugin");
|
|
24
|
+
const GithubService_1 = require("./services/GithubService");
|
|
25
|
+
const GithubReleaseView_1 = require("./services/GithubReleaseView");
|
|
23
26
|
function createProgram() {
|
|
24
27
|
return new commander_1.Command()
|
|
25
28
|
.name('monorepo-semantic-release')
|
|
@@ -82,11 +85,19 @@ function runCli(cwd = process.cwd(), cliArgs = process.argv.slice(2)) {
|
|
|
82
85
|
const renderService = new HandlebarsRenderService_1.HandlebarsRenderService(cwd, node_path_1.default.resolve(__dirname, '..'));
|
|
83
86
|
const changelogView = new ChangelogView_1.ChangelogView(templateOverrides.changelogTemplate, renderService);
|
|
84
87
|
const releaseCommitView = new ReleaseCommitView_1.ReleaseCommitView(templateOverrides.releaseCommitTemplate, renderService);
|
|
88
|
+
const githubReleaseView = new GithubReleaseView_1.GithubReleaseView(undefined, renderService);
|
|
85
89
|
const packageManager = new PackageManager_1.PackageManager();
|
|
90
|
+
const githubService = new GithubService_1.GithubService();
|
|
91
|
+
const githubConfig = {
|
|
92
|
+
isGithubActions: process.env.GITHUB_ACTIONS === 'true',
|
|
93
|
+
repository: process.env.GITHUB_REPOSITORY,
|
|
94
|
+
token: process.env.GITHUB_TOKEN,
|
|
95
|
+
};
|
|
86
96
|
const controller = new MonorepoController_1.MonorepoController([
|
|
87
97
|
new PackageJsonPlugin_1.PackageJsonPlugin(fsService, logger),
|
|
88
98
|
new ChangelogPlugin_1.ChangelogPlugin('CHANGELOG.md', changelogView, fsService, logger),
|
|
89
99
|
new GitPlugin_1.GitPlugin(vcsService, releaseCommitView, logger),
|
|
100
|
+
new GithubPlugin_1.GithubPlugin(githubService, logger, githubConfig, githubReleaseView),
|
|
90
101
|
new NpmPlugin_1.NpmPlugin(packageManager, logger),
|
|
91
102
|
], fsService, vcsService, logger);
|
|
92
103
|
controller.discoverPackages(cwd);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ReleaseCompletePluginContext, ReleasePlugin } from './ReleasePlugin';
|
|
2
|
+
import { GithubService } from '../services/GithubService';
|
|
3
|
+
import { ConsoleLogger } from '../services/ConsoleLogger';
|
|
4
|
+
import { GithubReleaseView } from '../services/GithubReleaseView';
|
|
5
|
+
export interface GithubPluginConfig {
|
|
6
|
+
isGithubActions: boolean;
|
|
7
|
+
repository?: string;
|
|
8
|
+
token?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare class GithubPlugin implements ReleasePlugin {
|
|
11
|
+
private readonly githubService;
|
|
12
|
+
private readonly logger;
|
|
13
|
+
private readonly config;
|
|
14
|
+
private readonly githubReleaseView;
|
|
15
|
+
constructor(githubService: GithubService, logger: ConsoleLogger, config: GithubPluginConfig, githubReleaseView: GithubReleaseView);
|
|
16
|
+
onReleaseComplete(context: ReleaseCompletePluginContext): void;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=GithubPlugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GithubPlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/GithubPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,YAAa,YAAW,aAAa;IAE9C,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAHjB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,kBAAkB,EAC1B,iBAAiB,EAAE,iBAAiB;IAGvD,iBAAiB,CAAC,OAAO,EAAE,4BAA4B,GAAG,IAAI;CAmC/D"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GithubPlugin = void 0;
|
|
4
|
+
class GithubPlugin {
|
|
5
|
+
githubService;
|
|
6
|
+
logger;
|
|
7
|
+
config;
|
|
8
|
+
githubReleaseView;
|
|
9
|
+
constructor(githubService, logger, config, githubReleaseView) {
|
|
10
|
+
this.githubService = githubService;
|
|
11
|
+
this.logger = logger;
|
|
12
|
+
this.config = config;
|
|
13
|
+
this.githubReleaseView = githubReleaseView;
|
|
14
|
+
}
|
|
15
|
+
onReleaseComplete(context) {
|
|
16
|
+
if (context.dryRun || context.noPush) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (!this.config.isGithubActions || !this.config.repository || !this.config.token) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (!this.githubService.isCliAvailable()) {
|
|
23
|
+
throw new Error('GitHub release creation requires `gh` CLI when running in GitHub Actions');
|
|
24
|
+
}
|
|
25
|
+
for (const pkg of context.releasedPackages) {
|
|
26
|
+
const version = context.releasedVersions.get(pkg.name);
|
|
27
|
+
if (!version) {
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
this.githubService.createRelease({
|
|
31
|
+
repository: this.config.repository,
|
|
32
|
+
token: this.config.token,
|
|
33
|
+
tagName: `${pkg.name}@${version}`,
|
|
34
|
+
title: `${pkg.name} v${version}`,
|
|
35
|
+
notes: this.githubReleaseView.render({
|
|
36
|
+
packageName: pkg.name,
|
|
37
|
+
version,
|
|
38
|
+
commits: context.releasedCommits.get(pkg.name) ?? [],
|
|
39
|
+
dependencyUpdates: pkg.getDependencyUpdates(context.releasedVersions),
|
|
40
|
+
}),
|
|
41
|
+
prerelease: version.includes('-'),
|
|
42
|
+
});
|
|
43
|
+
this.logger.info(`RELEASE ${pkg.name}@${version}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.GithubPlugin = GithubPlugin;
|
|
48
|
+
//# sourceMappingURL=GithubPlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GithubPlugin.js","sourceRoot":"","sources":["../../src/plugins/GithubPlugin.ts"],"names":[],"mappings":";;;AAWA,MAAa,YAAY;IAEJ;IACA;IACA;IACA;IAJnB,YACmB,aAA4B,EAC5B,MAAqB,EACrB,MAA0B,EAC1B,iBAAoC;QAHpC,kBAAa,GAAb,aAAa,CAAe;QAC5B,WAAM,GAAN,MAAM,CAAe;QACrB,WAAM,GAAN,MAAM,CAAoB;QAC1B,sBAAiB,GAAjB,iBAAiB,CAAmB;IACpD,CAAC;IAEJ,iBAAiB,CAAC,OAAqC;QACrD,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACrC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;QAC9F,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,SAAS;YACX,CAAC;YAED,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;gBAC/B,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;gBAClC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;gBACxB,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,OAAO,EAAE;gBACjC,KAAK,EAAE,GAAG,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE;gBAChC,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;oBACnC,WAAW,EAAE,GAAG,CAAC,IAAI;oBACrB,OAAO;oBACP,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;oBACpD,iBAAiB,EAAE,GAAG,CAAC,oBAAoB,CAAC,OAAO,CAAC,gBAAgB,CAAC;iBACtE,CAAC;gBACF,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;aAClC,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;CACF;AA3CD,oCA2CC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GithubPlugin.spec.d.ts","sourceRoot":"","sources":["../../src/plugins/GithubPlugin.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const GithubPlugin_1 = require("./GithubPlugin");
|
|
5
|
+
const NpmPackage_1 = require("../models/NpmPackage");
|
|
6
|
+
const ConventionalCommit_1 = require("../models/ConventionalCommit");
|
|
7
|
+
(0, vitest_1.describe)('GithubPlugin', () => {
|
|
8
|
+
(0, vitest_1.it)('given github actions and released packages when release completes then github releases are created', () => {
|
|
9
|
+
const github = {
|
|
10
|
+
isCliAvailable: vitest_1.vi.fn().mockReturnValue(true),
|
|
11
|
+
createRelease: vitest_1.vi.fn(),
|
|
12
|
+
};
|
|
13
|
+
const logger = {
|
|
14
|
+
info: vitest_1.vi.fn(),
|
|
15
|
+
};
|
|
16
|
+
const githubReleaseView = {
|
|
17
|
+
render: vitest_1.vi.fn().mockReturnValue('rendered release notes'),
|
|
18
|
+
};
|
|
19
|
+
const plugin = new GithubPlugin_1.GithubPlugin(github, logger, {
|
|
20
|
+
isGithubActions: true,
|
|
21
|
+
repository: 'acme/repo',
|
|
22
|
+
token: 'token',
|
|
23
|
+
}, githubReleaseView);
|
|
24
|
+
const pkg = NpmPackage_1.NpmPackage.createFromPackage({
|
|
25
|
+
name: 'pkg-a',
|
|
26
|
+
version: '1.0.0',
|
|
27
|
+
dependencies: {
|
|
28
|
+
'pkg-b': '^1.0.0',
|
|
29
|
+
},
|
|
30
|
+
}, '/repo/packages/pkg-a');
|
|
31
|
+
plugin.onReleaseComplete?.({
|
|
32
|
+
dryRun: false,
|
|
33
|
+
noPush: false,
|
|
34
|
+
noPublish: false,
|
|
35
|
+
releasedPackages: [pkg],
|
|
36
|
+
releasedVersions: new Map([
|
|
37
|
+
['pkg-a', '1.0.1'],
|
|
38
|
+
['pkg-b', '1.1.0'],
|
|
39
|
+
]),
|
|
40
|
+
releasedCommits: new Map([['pkg-a', [ConventionalCommit_1.ConventionalCommit.parse('fix(pkg-a): bug fix')]]]),
|
|
41
|
+
});
|
|
42
|
+
(0, vitest_1.expect)(github.isCliAvailable).toHaveBeenCalledTimes(1);
|
|
43
|
+
(0, vitest_1.expect)(github.createRelease).toHaveBeenCalledWith(vitest_1.expect.objectContaining({
|
|
44
|
+
repository: 'acme/repo',
|
|
45
|
+
token: 'token',
|
|
46
|
+
tagName: 'pkg-a@1.0.1',
|
|
47
|
+
title: 'pkg-a v1.0.1',
|
|
48
|
+
notes: 'rendered release notes',
|
|
49
|
+
}));
|
|
50
|
+
(0, vitest_1.expect)(githubReleaseView.render).toHaveBeenCalledWith({
|
|
51
|
+
packageName: 'pkg-a',
|
|
52
|
+
version: '1.0.1',
|
|
53
|
+
commits: [ConventionalCommit_1.ConventionalCommit.parse('fix(pkg-a): bug fix')],
|
|
54
|
+
dependencyUpdates: [
|
|
55
|
+
{
|
|
56
|
+
packageName: 'pkg-b',
|
|
57
|
+
oldVersion: '^1.0.0',
|
|
58
|
+
newVersion: '1.1.0',
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
});
|
|
62
|
+
(0, vitest_1.expect)(logger.info).toHaveBeenCalledWith('RELEASE pkg-a@1.0.1');
|
|
63
|
+
});
|
|
64
|
+
(0, vitest_1.it)('given dry run, no push, or missing github config when release completes then github releases are skipped', () => {
|
|
65
|
+
const github = {
|
|
66
|
+
isCliAvailable: vitest_1.vi.fn().mockReturnValue(true),
|
|
67
|
+
createRelease: vitest_1.vi.fn(),
|
|
68
|
+
};
|
|
69
|
+
const logger = {
|
|
70
|
+
info: vitest_1.vi.fn(),
|
|
71
|
+
};
|
|
72
|
+
const githubReleaseView = {
|
|
73
|
+
render: vitest_1.vi.fn(),
|
|
74
|
+
};
|
|
75
|
+
const plugin = new GithubPlugin_1.GithubPlugin(github, logger, {
|
|
76
|
+
isGithubActions: true,
|
|
77
|
+
repository: 'acme/repo',
|
|
78
|
+
token: 'token',
|
|
79
|
+
}, githubReleaseView);
|
|
80
|
+
const pkg = NpmPackage_1.NpmPackage.createFromPackage({ name: 'pkg-a', version: '1.0.0' }, '/repo/packages/pkg-a');
|
|
81
|
+
plugin.onReleaseComplete?.({
|
|
82
|
+
dryRun: true,
|
|
83
|
+
noPush: false,
|
|
84
|
+
noPublish: false,
|
|
85
|
+
releasedPackages: [pkg],
|
|
86
|
+
releasedVersions: new Map([['pkg-a', '1.0.1']]),
|
|
87
|
+
releasedCommits: new Map(),
|
|
88
|
+
});
|
|
89
|
+
plugin.onReleaseComplete?.({
|
|
90
|
+
dryRun: false,
|
|
91
|
+
noPush: true,
|
|
92
|
+
noPublish: false,
|
|
93
|
+
releasedPackages: [pkg],
|
|
94
|
+
releasedVersions: new Map([['pkg-a', '1.0.1']]),
|
|
95
|
+
releasedCommits: new Map(),
|
|
96
|
+
});
|
|
97
|
+
const pluginWithMissingConfig = new GithubPlugin_1.GithubPlugin(github, logger, {
|
|
98
|
+
isGithubActions: false,
|
|
99
|
+
repository: undefined,
|
|
100
|
+
token: undefined,
|
|
101
|
+
}, githubReleaseView);
|
|
102
|
+
pluginWithMissingConfig.onReleaseComplete?.({
|
|
103
|
+
dryRun: false,
|
|
104
|
+
noPush: false,
|
|
105
|
+
noPublish: false,
|
|
106
|
+
releasedPackages: [pkg],
|
|
107
|
+
releasedVersions: new Map([['pkg-a', '1.0.1']]),
|
|
108
|
+
releasedCommits: new Map(),
|
|
109
|
+
});
|
|
110
|
+
(0, vitest_1.expect)(github.createRelease).not.toHaveBeenCalled();
|
|
111
|
+
(0, vitest_1.expect)(githubReleaseView.render).not.toHaveBeenCalled();
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
//# sourceMappingURL=GithubPlugin.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GithubPlugin.spec.js","sourceRoot":"","sources":["../../src/plugins/GithubPlugin.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PackageJsonPlugin.spec.d.ts","sourceRoot":"","sources":["../../src/plugins/PackageJsonPlugin.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const PackageJsonPlugin_1 = require("./PackageJsonPlugin");
|
|
5
|
+
const NpmPackage_1 = require("../models/NpmPackage");
|
|
6
|
+
(0, vitest_1.describe)('PackageJsonPlugin', () => {
|
|
7
|
+
(0, vitest_1.it)('given dependency version updates when package is released then package.json is rewritten and logged', () => {
|
|
8
|
+
const fileSystemService = {
|
|
9
|
+
readPackageJsonOrFail: vitest_1.vi.fn().mockReturnValue({
|
|
10
|
+
name: 'pkg-a',
|
|
11
|
+
version: '1.0.0',
|
|
12
|
+
dependencies: { 'pkg-b': '^1.0.0' },
|
|
13
|
+
}),
|
|
14
|
+
writeToPackageJsonOrFail: vitest_1.vi.fn(),
|
|
15
|
+
};
|
|
16
|
+
const logger = {
|
|
17
|
+
info: vitest_1.vi.fn(),
|
|
18
|
+
};
|
|
19
|
+
const plugin = new PackageJsonPlugin_1.PackageJsonPlugin(fileSystemService, logger);
|
|
20
|
+
const pkg = NpmPackage_1.NpmPackage.createFromPackage({
|
|
21
|
+
name: 'pkg-a',
|
|
22
|
+
version: '1.0.0',
|
|
23
|
+
dependencies: { 'pkg-b': '^1.0.0' },
|
|
24
|
+
}, '/repo/packages/pkg-a');
|
|
25
|
+
plugin.onPackageReleased?.({
|
|
26
|
+
dryRun: false,
|
|
27
|
+
noPush: false,
|
|
28
|
+
noPublish: false,
|
|
29
|
+
pkg,
|
|
30
|
+
releasedVersions: new Map([['pkg-b', '1.1.0']]),
|
|
31
|
+
releasedPackages: [pkg],
|
|
32
|
+
releasedCommits: [],
|
|
33
|
+
});
|
|
34
|
+
(0, vitest_1.expect)(fileSystemService.readPackageJsonOrFail).toHaveBeenCalledWith('/repo/packages/pkg-a');
|
|
35
|
+
(0, vitest_1.expect)(fileSystemService.writeToPackageJsonOrFail).toHaveBeenCalledWith('/repo/packages/pkg-a', {
|
|
36
|
+
name: 'pkg-a',
|
|
37
|
+
version: '1.0.0',
|
|
38
|
+
dependencies: { 'pkg-b': '1.1.0' },
|
|
39
|
+
});
|
|
40
|
+
(0, vitest_1.expect)(logger.info).toHaveBeenCalledWith('WRITE pkg-a package.json');
|
|
41
|
+
});
|
|
42
|
+
(0, vitest_1.it)('given no dependency changes when package is released then package.json is not rewritten', () => {
|
|
43
|
+
const fileSystemService = {
|
|
44
|
+
readPackageJsonOrFail: vitest_1.vi.fn(),
|
|
45
|
+
writeToPackageJsonOrFail: vitest_1.vi.fn(),
|
|
46
|
+
};
|
|
47
|
+
const logger = {
|
|
48
|
+
info: vitest_1.vi.fn(),
|
|
49
|
+
};
|
|
50
|
+
const plugin = new PackageJsonPlugin_1.PackageJsonPlugin(fileSystemService, logger);
|
|
51
|
+
const pkg = NpmPackage_1.NpmPackage.createFromPackage({
|
|
52
|
+
name: 'pkg-a',
|
|
53
|
+
version: '1.0.0',
|
|
54
|
+
dependencies: { 'pkg-b': '1.0.0' },
|
|
55
|
+
}, '/repo/packages/pkg-a');
|
|
56
|
+
plugin.onPackageReleased?.({
|
|
57
|
+
dryRun: false,
|
|
58
|
+
noPush: false,
|
|
59
|
+
noPublish: false,
|
|
60
|
+
pkg,
|
|
61
|
+
releasedVersions: new Map([['pkg-b', '1.0.0']]),
|
|
62
|
+
releasedPackages: [pkg],
|
|
63
|
+
releasedCommits: [],
|
|
64
|
+
});
|
|
65
|
+
(0, vitest_1.expect)(fileSystemService.readPackageJsonOrFail).not.toHaveBeenCalled();
|
|
66
|
+
(0, vitest_1.expect)(fileSystemService.writeToPackageJsonOrFail).not.toHaveBeenCalled();
|
|
67
|
+
(0, vitest_1.expect)(logger.info).not.toHaveBeenCalled();
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
//# sourceMappingURL=PackageJsonPlugin.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PackageJsonPlugin.spec.js","sourceRoot":"","sources":["../../src/plugins/PackageJsonPlugin.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChangelogView.spec.d.ts","sourceRoot":"","sources":["../../src/services/ChangelogView.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const ChangelogView_1 = require("./ChangelogView");
|
|
5
|
+
const NpmPackage_1 = require("../models/NpmPackage");
|
|
6
|
+
const ConventionalCommit_1 = require("../models/ConventionalCommit");
|
|
7
|
+
(0, vitest_1.describe)('ChangelogView', () => {
|
|
8
|
+
(0, vitest_1.it)('given released package context when changelog is rendered then entry data is provided for templates', () => {
|
|
9
|
+
const renderService = {
|
|
10
|
+
render: vitest_1.vi.fn().mockReturnValue('rendered'),
|
|
11
|
+
};
|
|
12
|
+
const view = new ChangelogView_1.ChangelogView('templates/custom.hbs', renderService);
|
|
13
|
+
const pkg = NpmPackage_1.NpmPackage.createFromPackage({
|
|
14
|
+
name: 'pkg-a',
|
|
15
|
+
version: '1.0.0',
|
|
16
|
+
dependencies: { 'pkg-b': '^1.0.0' },
|
|
17
|
+
}, '/repo/packages/pkg-a');
|
|
18
|
+
const commits = [
|
|
19
|
+
ConventionalCommit_1.ConventionalCommit.parse('feat(pkg-a): add feature'),
|
|
20
|
+
ConventionalCommit_1.ConventionalCommit.parse('fix(pkg-a): fix bug'),
|
|
21
|
+
ConventionalCommit_1.ConventionalCommit.parse('perf(pkg-a): speed up'),
|
|
22
|
+
];
|
|
23
|
+
const output = view.render({
|
|
24
|
+
pkg,
|
|
25
|
+
releasedCommits: commits,
|
|
26
|
+
releasedPackages: [pkg],
|
|
27
|
+
releasedVersions: new Map([
|
|
28
|
+
['pkg-a', '1.1.0'],
|
|
29
|
+
['pkg-b', '1.1.0'],
|
|
30
|
+
]),
|
|
31
|
+
existing: 'existing body',
|
|
32
|
+
});
|
|
33
|
+
(0, vitest_1.expect)(output).toBe('rendered');
|
|
34
|
+
(0, vitest_1.expect)(renderService.render).toHaveBeenCalledWith('templates/custom.hbs', vitest_1.expect.objectContaining({
|
|
35
|
+
pkg,
|
|
36
|
+
releasedCommits: commits,
|
|
37
|
+
existing: 'existing body',
|
|
38
|
+
entry: vitest_1.expect.objectContaining({
|
|
39
|
+
version: '1.1.0',
|
|
40
|
+
oldVersion: '1.0.0',
|
|
41
|
+
}),
|
|
42
|
+
}));
|
|
43
|
+
const passedEntry = renderService.render.mock.calls[0][1].entry;
|
|
44
|
+
(0, vitest_1.expect)(passedEntry.fixes).toHaveLength(1);
|
|
45
|
+
(0, vitest_1.expect)(passedEntry.features).toHaveLength(1);
|
|
46
|
+
(0, vitest_1.expect)(passedEntry.performance).toHaveLength(1);
|
|
47
|
+
(0, vitest_1.expect)(passedEntry.dependencyUpdates).toEqual([
|
|
48
|
+
{
|
|
49
|
+
packageName: 'pkg-b',
|
|
50
|
+
oldVersion: '^1.0.0',
|
|
51
|
+
newVersion: '1.1.0',
|
|
52
|
+
},
|
|
53
|
+
]);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
//# sourceMappingURL=ChangelogView.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChangelogView.spec.js","sourceRoot":"","sources":["../../src/services/ChangelogView.spec.ts"],"names":[],"mappings":";;AAAA,mCAAkD;AAClD,mDAAgD;AAChD,qDAAkD;AAClD,qEAAkE;AAElE,IAAA,iBAAQ,EAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,IAAA,WAAE,EAAC,qGAAqG,EAAE,GAAG,EAAE;QAC7G,MAAM,aAAa,GAAG;YACpB,MAAM,EAAE,WAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC;SAC5C,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,6BAAa,CAAC,sBAAsB,EAAE,aAAsB,CAAC,CAAC;QAC/E,MAAM,GAAG,GAAG,uBAAU,CAAC,iBAAiB,CACtC;YACE,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,OAAO;YAChB,YAAY,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;SACpC,EACD,sBAAsB,CACvB,CAAC;QACF,MAAM,OAAO,GAAG;YACd,uCAAkB,CAAC,KAAK,CAAC,0BAA0B,CAAC;YACpD,uCAAkB,CAAC,KAAK,CAAC,qBAAqB,CAAC;YAC/C,uCAAkB,CAAC,KAAK,CAAC,uBAAuB,CAAC;SAClD,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YACzB,GAAG;YACH,eAAe,EAAE,OAAO;YACxB,gBAAgB,EAAE,CAAC,GAAG,CAAC;YACvB,gBAAgB,EAAE,IAAI,GAAG,CAAC;gBACxB,CAAC,OAAO,EAAE,OAAO,CAAC;gBAClB,CAAC,OAAO,EAAE,OAAO,CAAC;aACnB,CAAC;YACF,QAAQ,EAAE,eAAe;SAC1B,CAAC,CAAC;QAEH,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChC,IAAA,eAAM,EAAC,aAAa,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAC/C,sBAAsB,EACtB,eAAM,CAAC,gBAAgB,CAAC;YACtB,GAAG;YACH,eAAe,EAAE,OAAO;YACxB,QAAQ,EAAE,eAAe;YACzB,KAAK,EAAE,eAAM,CAAC,gBAAgB,CAAC;gBAC7B,OAAO,EAAE,OAAO;gBAChB,UAAU,EAAE,OAAO;aACpB,CAAC;SACH,CAAC,CACH,CAAC;QAEF,MAAM,WAAW,GAAI,aAAa,CAAC,MAAmC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9F,IAAA,eAAM,EAAC,WAAW,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAA,eAAM,EAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7C,IAAA,eAAM,EAAC,WAAW,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChD,IAAA,eAAM,EAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC;YAC5C;gBACE,WAAW,EAAE,OAAO;gBACpB,UAAU,EAAE,QAAQ;gBACpB,UAAU,EAAE,OAAO;aACpB;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -19,5 +19,39 @@ vitest_1.vi.mock('node:child_process', () => ({
|
|
|
19
19
|
stdio: ['pipe', 'inherit', 'inherit'],
|
|
20
20
|
});
|
|
21
21
|
});
|
|
22
|
+
(0, vitest_1.it)('given an existing tag when commit history is queried then commits are read from tag range', () => {
|
|
23
|
+
vitest_1.vi.mocked(node_child_process_1.execSync).mockReturnValueOnce('refs/tags/pkg-a@1.0.0\n').mockReturnValueOnce('abcd123 fix(pkg-a): bug fix\n');
|
|
24
|
+
const service = new GitService_1.GitService();
|
|
25
|
+
const commits = service.findManyCommitsSinceTag('pkg-a@1.0.0');
|
|
26
|
+
(0, vitest_1.expect)(node_child_process_1.execSync).toHaveBeenNthCalledWith(1, 'git rev-parse --verify --quiet refs/tags/pkg-a@1.0.0', { encoding: 'utf-8' });
|
|
27
|
+
(0, vitest_1.expect)(node_child_process_1.execSync).toHaveBeenNthCalledWith(2, 'git log pkg-a@1.0.0..HEAD --format="%H %s"', { encoding: 'utf-8' });
|
|
28
|
+
(0, vitest_1.expect)(commits).toHaveLength(1);
|
|
29
|
+
(0, vitest_1.expect)(commits[0].type).toBe('fix');
|
|
30
|
+
(0, vitest_1.expect)(commits[0].hash).toBe('abcd123');
|
|
31
|
+
});
|
|
32
|
+
(0, vitest_1.it)('given a missing tag when commit history is queried then full history is read from HEAD', () => {
|
|
33
|
+
vitest_1.vi.mocked(node_child_process_1.execSync)
|
|
34
|
+
.mockImplementationOnce(() => {
|
|
35
|
+
throw new Error('missing tag');
|
|
36
|
+
})
|
|
37
|
+
.mockReturnValueOnce('');
|
|
38
|
+
const service = new GitService_1.GitService();
|
|
39
|
+
const commits = service.findManyCommitsSinceTag('pkg-a@1.0.0');
|
|
40
|
+
(0, vitest_1.expect)(node_child_process_1.execSync).toHaveBeenNthCalledWith(2, 'git log HEAD --format="%H %s"', { encoding: 'utf-8' });
|
|
41
|
+
(0, vitest_1.expect)(commits).toEqual([]);
|
|
42
|
+
});
|
|
43
|
+
(0, vitest_1.it)('given push with and without tags when push runs then tag push is conditional', () => {
|
|
44
|
+
const service = new GitService_1.GitService();
|
|
45
|
+
service.push(false);
|
|
46
|
+
service.push(true);
|
|
47
|
+
(0, vitest_1.expect)(node_child_process_1.execSync).toHaveBeenNthCalledWith(1, 'git push');
|
|
48
|
+
(0, vitest_1.expect)(node_child_process_1.execSync).toHaveBeenNthCalledWith(2, 'git push');
|
|
49
|
+
(0, vitest_1.expect)(node_child_process_1.execSync).toHaveBeenNthCalledWith(3, 'git push --tags');
|
|
50
|
+
});
|
|
51
|
+
(0, vitest_1.it)('given a tag name when createTag runs then git tag command is executed', () => {
|
|
52
|
+
const service = new GitService_1.GitService();
|
|
53
|
+
service.createTag('pkg-a@1.0.1');
|
|
54
|
+
(0, vitest_1.expect)(node_child_process_1.execSync).toHaveBeenCalledWith('git tag pkg-a@1.0.1');
|
|
55
|
+
});
|
|
22
56
|
});
|
|
23
57
|
//# sourceMappingURL=GitService.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitService.spec.js","sourceRoot":"","sources":["../../src/services/GitService.spec.ts"],"names":[],"mappings":";;AAAA,mCAA8D;AAC9D,2DAA8C;AAC9C,6CAA0C;AAE1C,WAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;IACnC,QAAQ,EAAE,WAAE,CAAC,EAAE,EAAE;CAClB,CAAC,CAAC,CAAC;AAEJ,IAAA,iBAAQ,EAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAA,mBAAU,EAAC,GAAG,EAAE;QACd,WAAE,CAAC,MAAM,CAAC,6BAAQ,CAAC,CAAC,SAAS,EAAE,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,0FAA0F,EAAE,GAAG,EAAE;QAClG,MAAM,OAAO,GAAG,IAAI,uBAAU,EAAE,CAAC;QAEjC,OAAO,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC;QAEzD,IAAA,eAAM,EAAC,6BAAQ,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QACzD,IAAA,eAAM,EAAC,6BAAQ,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE,+BAA+B,EAAE;YAC3E,KAAK,EAAE,wCAAwC;YAC/C,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC;SACtC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"GitService.spec.js","sourceRoot":"","sources":["../../src/services/GitService.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { HandlebarsRenderService } from './HandlebarsRenderService';
|
|
2
|
+
import { ConventionalCommit } from '../models/ConventionalCommit';
|
|
3
|
+
import { DependencyVersionChange } from '../models/ReleaseTypes';
|
|
4
|
+
export declare const DEFAULT_GITHUB_RELEASE_NOTES_TEMPLATE = "templates/github-release-notes.hbs";
|
|
5
|
+
export interface GithubReleaseViewContext extends Record<string, unknown> {
|
|
6
|
+
packageName: string;
|
|
7
|
+
version: string;
|
|
8
|
+
commits: ConventionalCommit[];
|
|
9
|
+
dependencyUpdates: DependencyVersionChange[];
|
|
10
|
+
}
|
|
11
|
+
export declare class GithubReleaseView {
|
|
12
|
+
private readonly templatePath;
|
|
13
|
+
private readonly renderService;
|
|
14
|
+
constructor(templatePath: string | undefined, renderService: HandlebarsRenderService);
|
|
15
|
+
render(context: GithubReleaseViewContext): string;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=GithubReleaseView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GithubReleaseView.d.ts","sourceRoot":"","sources":["../../src/services/GithubReleaseView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,eAAO,MAAM,qCAAqC,uCAAuC,CAAC;AAE1F,MAAM,WAAW,wBAAyB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACvE,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,iBAAiB,EAAE,uBAAuB,EAAE,CAAC;CAC9C;AAED,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa;gBADb,YAAY,oBAAwC,EACpD,aAAa,EAAE,uBAAuB;IAGzD,MAAM,CAAC,OAAO,EAAE,wBAAwB,GAAG,MAAM;CAGlD"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GithubReleaseView = exports.DEFAULT_GITHUB_RELEASE_NOTES_TEMPLATE = void 0;
|
|
4
|
+
exports.DEFAULT_GITHUB_RELEASE_NOTES_TEMPLATE = 'templates/github-release-notes.hbs';
|
|
5
|
+
class GithubReleaseView {
|
|
6
|
+
templatePath;
|
|
7
|
+
renderService;
|
|
8
|
+
constructor(templatePath = exports.DEFAULT_GITHUB_RELEASE_NOTES_TEMPLATE, renderService) {
|
|
9
|
+
this.templatePath = templatePath;
|
|
10
|
+
this.renderService = renderService;
|
|
11
|
+
}
|
|
12
|
+
render(context) {
|
|
13
|
+
return this.renderService.render(this.templatePath, context);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.GithubReleaseView = GithubReleaseView;
|
|
17
|
+
//# sourceMappingURL=GithubReleaseView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GithubReleaseView.js","sourceRoot":"","sources":["../../src/services/GithubReleaseView.ts"],"names":[],"mappings":";;;AAIa,QAAA,qCAAqC,GAAG,oCAAoC,CAAC;AAS1F,MAAa,iBAAiB;IAET;IACA;IAFnB,YACmB,eAAe,6CAAqC,EACpD,aAAsC;QADtC,iBAAY,GAAZ,YAAY,CAAwC;QACpD,kBAAa,GAAb,aAAa,CAAyB;IACtD,CAAC;IAEJ,MAAM,CAAC,OAAiC;QACtC,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;CACF;AATD,8CASC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GithubReleaseView.spec.d.ts","sourceRoot":"","sources":["../../src/services/GithubReleaseView.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const GithubReleaseView_1 = require("./GithubReleaseView");
|
|
5
|
+
const ConventionalCommit_1 = require("../models/ConventionalCommit");
|
|
6
|
+
(0, vitest_1.describe)('GithubReleaseView', () => {
|
|
7
|
+
(0, vitest_1.it)('renders release notes through configured template', () => {
|
|
8
|
+
const renderService = {
|
|
9
|
+
render: vitest_1.vi.fn().mockReturnValue('notes'),
|
|
10
|
+
};
|
|
11
|
+
const view = new GithubReleaseView_1.GithubReleaseView('templates/github-release-notes.hbs', renderService);
|
|
12
|
+
const result = view.render({
|
|
13
|
+
packageName: 'pkg-a',
|
|
14
|
+
version: '1.0.1',
|
|
15
|
+
commits: [ConventionalCommit_1.ConventionalCommit.parse('fix(pkg-a): bug fix')],
|
|
16
|
+
dependencyUpdates: [],
|
|
17
|
+
});
|
|
18
|
+
(0, vitest_1.expect)(result).toBe('notes');
|
|
19
|
+
(0, vitest_1.expect)(renderService.render).toHaveBeenCalledWith('templates/github-release-notes.hbs', {
|
|
20
|
+
packageName: 'pkg-a',
|
|
21
|
+
version: '1.0.1',
|
|
22
|
+
commits: [ConventionalCommit_1.ConventionalCommit.parse('fix(pkg-a): bug fix')],
|
|
23
|
+
dependencyUpdates: [],
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=GithubReleaseView.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GithubReleaseView.spec.js","sourceRoot":"","sources":["../../src/services/GithubReleaseView.spec.ts"],"names":[],"mappings":";;AAAA,mCAAkD;AAClD,2DAAwD;AACxD,qEAAkE;AAElE,IAAA,iBAAQ,EAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAA,WAAE,EAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,aAAa,GAAG;YACpB,MAAM,EAAE,WAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC;SACzC,CAAC;QACF,MAAM,IAAI,GAAG,IAAI,qCAAiB,CAAC,oCAAoC,EAAE,aAAsB,CAAC,CAAC;QAEjG,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YACzB,WAAW,EAAE,OAAO;YACpB,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,CAAC,uCAAkB,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;YAC1D,iBAAiB,EAAE,EAAE;SACtB,CAAC,CAAC;QAEH,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,aAAa,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,oCAAoC,EAAE;YACtF,WAAW,EAAE,OAAO;YACpB,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,CAAC,uCAAkB,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;YAC1D,iBAAiB,EAAE,EAAE;SACtB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface GithubReleaseCreateOptions {
|
|
2
|
+
repository: string;
|
|
3
|
+
token: string;
|
|
4
|
+
tagName: string;
|
|
5
|
+
title: string;
|
|
6
|
+
notes: string;
|
|
7
|
+
prerelease?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare class GithubService {
|
|
10
|
+
isCliAvailable(): boolean;
|
|
11
|
+
createRelease(options: GithubReleaseCreateOptions): void;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=GithubService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GithubService.d.ts","sourceRoot":"","sources":["../../src/services/GithubService.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,qBAAa,aAAa;IACxB,cAAc,IAAI,OAAO;IASzB,aAAa,CAAC,OAAO,EAAE,0BAA0B,GAAG,IAAI;CAuBzD"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GithubService = void 0;
|
|
4
|
+
const node_child_process_1 = require("node:child_process");
|
|
5
|
+
class GithubService {
|
|
6
|
+
isCliAvailable() {
|
|
7
|
+
try {
|
|
8
|
+
(0, node_child_process_1.execFileSync)('gh', ['--version'], { stdio: 'pipe' });
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
createRelease(options) {
|
|
16
|
+
const args = ['release', 'create', options.tagName, '--repo', options.repository, '--title', options.title, '--notes', options.notes];
|
|
17
|
+
if (options.prerelease) {
|
|
18
|
+
args.push('--prerelease');
|
|
19
|
+
}
|
|
20
|
+
try {
|
|
21
|
+
(0, node_child_process_1.execFileSync)('gh', args, {
|
|
22
|
+
stdio: 'pipe',
|
|
23
|
+
env: {
|
|
24
|
+
...process.env,
|
|
25
|
+
GH_TOKEN: options.token,
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
const message = error.stderr?.toString() ?? error.message ?? '';
|
|
31
|
+
if (message.includes('already_exists') || message.includes('already exists')) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
throw error;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.GithubService = GithubService;
|
|
39
|
+
//# sourceMappingURL=GithubService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GithubService.js","sourceRoot":"","sources":["../../src/services/GithubService.ts"],"names":[],"mappings":";;;AAAA,2DAAkD;AAWlD,MAAa,aAAa;IACxB,cAAc;QACZ,IAAI,CAAC;YACH,IAAA,iCAAY,EAAC,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,aAAa,CAAC,OAAmC;QAC/C,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAEtI,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5B,CAAC;QAED,IAAI,CAAC;YACH,IAAA,iCAAY,EAAC,IAAI,EAAE,IAAI,EAAE;gBACvB,KAAK,EAAE,MAAM;gBACb,GAAG,EAAE;oBACH,GAAG,OAAO,CAAC,GAAG;oBACd,QAAQ,EAAE,OAAO,CAAC,KAAK;iBACxB;aACF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAI,KAA+C,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAK,KAA8B,CAAC,OAAO,IAAI,EAAE,CAAC;YACrI,IAAI,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC7E,OAAO;YACT,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF;AAjCD,sCAiCC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeFileSystemService.spec.d.ts","sourceRoot":"","sources":["../../src/services/NodeFileSystemService.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,62 @@
|
|
|
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
|
+
const vitest_1 = require("vitest");
|
|
7
|
+
const node_fs_1 = require("node:fs");
|
|
8
|
+
const node_os_1 = require("node:os");
|
|
9
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
+
const NodeFileSystemService_1 = require("./NodeFileSystemService");
|
|
11
|
+
(0, vitest_1.describe)('NodeFileSystemService', () => {
|
|
12
|
+
const tempRoots = [];
|
|
13
|
+
(0, vitest_1.afterEach)(() => {
|
|
14
|
+
for (const root of tempRoots.splice(0)) {
|
|
15
|
+
(0, node_fs_1.rmSync)(root, { recursive: true, force: true });
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
(0, vitest_1.it)('given file content when read and write methods are used then values are persisted and retrieved', () => {
|
|
19
|
+
const root = (0, node_fs_1.mkdtempSync)(node_path_1.default.join((0, node_os_1.tmpdir)(), 'node-fs-service-'));
|
|
20
|
+
tempRoots.push(root);
|
|
21
|
+
const service = new NodeFileSystemService_1.NodeFileSystemService();
|
|
22
|
+
const sampleFile = node_path_1.default.join(root, 'sample.txt');
|
|
23
|
+
service.writeFile(sampleFile, 'hello');
|
|
24
|
+
(0, vitest_1.expect)(service.fileExists(sampleFile)).toBe(true);
|
|
25
|
+
(0, vitest_1.expect)(service.readFile(sampleFile)).toBe('hello');
|
|
26
|
+
});
|
|
27
|
+
(0, vitest_1.it)('given package json path forms when package json methods run then directory and file paths are supported', () => {
|
|
28
|
+
const root = (0, node_fs_1.mkdtempSync)(node_path_1.default.join((0, node_os_1.tmpdir)(), 'node-fs-service-'));
|
|
29
|
+
tempRoots.push(root);
|
|
30
|
+
const service = new NodeFileSystemService_1.NodeFileSystemService();
|
|
31
|
+
const pkgDir = node_path_1.default.join(root, 'pkg-a');
|
|
32
|
+
(0, node_fs_1.mkdirSync)(pkgDir, { recursive: true });
|
|
33
|
+
(0, node_fs_1.writeFileSync)(node_path_1.default.join(pkgDir, 'package.json'), '{"name":"pkg-a","version":"1.0.0"}\n');
|
|
34
|
+
service.writeToPackageJsonOrFail(pkgDir, { name: 'pkg-a', version: '1.0.1' });
|
|
35
|
+
(0, vitest_1.expect)(service.readPackageJsonOrFail(pkgDir)).toEqual({ name: 'pkg-a', version: '1.0.1' });
|
|
36
|
+
(0, vitest_1.expect)(service.readPackageJsonOrFail(node_path_1.default.join(pkgDir, 'package.json'))).toEqual({ name: 'pkg-a', version: '1.0.1' });
|
|
37
|
+
});
|
|
38
|
+
(0, vitest_1.it)('given workspace globs with duplicate matches when package json files are discovered then unique package directories are returned', () => {
|
|
39
|
+
const root = (0, node_fs_1.mkdtempSync)(node_path_1.default.join((0, node_os_1.tmpdir)(), 'node-fs-service-'));
|
|
40
|
+
tempRoots.push(root);
|
|
41
|
+
const service = new NodeFileSystemService_1.NodeFileSystemService();
|
|
42
|
+
const pkgA = node_path_1.default.join(root, 'packages', 'a');
|
|
43
|
+
const pkgB = node_path_1.default.join(root, 'packages', 'b');
|
|
44
|
+
(0, node_fs_1.mkdirSync)(pkgA, { recursive: true });
|
|
45
|
+
(0, node_fs_1.mkdirSync)(pkgB, { recursive: true });
|
|
46
|
+
(0, node_fs_1.writeFileSync)(node_path_1.default.join(pkgA, 'package.json'), '{"name":"pkg-a","version":"1.0.0"}\n');
|
|
47
|
+
(0, node_fs_1.writeFileSync)(node_path_1.default.join(pkgB, 'package.json'), '{"name":"pkg-b","version":"1.0.0"}\n');
|
|
48
|
+
const discovered = service.findManyPackageJsonByGlob(['packages/*', 'packages/*/package.json'], root);
|
|
49
|
+
(0, vitest_1.expect)(discovered.map(([pkgPath]) => pkgPath).sort()).toEqual([pkgA, pkgB]);
|
|
50
|
+
(0, vitest_1.expect)(discovered.map(([, pkg]) => pkg.name).sort()).toEqual(['pkg-a', 'pkg-b']);
|
|
51
|
+
});
|
|
52
|
+
(0, vitest_1.it)('given json file when readJson is called then parsed content is returned', () => {
|
|
53
|
+
const root = (0, node_fs_1.mkdtempSync)(node_path_1.default.join((0, node_os_1.tmpdir)(), 'node-fs-service-'));
|
|
54
|
+
tempRoots.push(root);
|
|
55
|
+
const service = new NodeFileSystemService_1.NodeFileSystemService();
|
|
56
|
+
const jsonPath = node_path_1.default.join(root, 'config.json');
|
|
57
|
+
(0, node_fs_1.writeFileSync)(jsonPath, '{"a":1,"b":"ok"}\n');
|
|
58
|
+
(0, vitest_1.expect)(service.readJson(jsonPath)).toEqual({ a: 1, b: 'ok' });
|
|
59
|
+
(0, vitest_1.expect)((0, node_fs_1.readFileSync)(jsonPath, 'utf-8')).toContain('"a":1');
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
//# sourceMappingURL=NodeFileSystemService.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeFileSystemService.spec.js","sourceRoot":"","sources":["../../src/services/NodeFileSystemService.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.spec.d.ts","sourceRoot":"","sources":["../src/utils.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const utils_1 = require("./utils");
|
|
5
|
+
(0, vitest_1.describe)('uniqBy', () => {
|
|
6
|
+
(0, vitest_1.it)('given duplicate values when uniqBy runs then it keeps first occurrence by predicate', () => {
|
|
7
|
+
const items = [
|
|
8
|
+
{ id: 'a', value: 1 },
|
|
9
|
+
{ id: 'a', value: 2 },
|
|
10
|
+
{ id: 'b', value: 3 },
|
|
11
|
+
];
|
|
12
|
+
const result = (0, utils_1.uniqBy)(items, (left, right) => left.id === right.id);
|
|
13
|
+
(0, vitest_1.expect)(result).toEqual([
|
|
14
|
+
{ id: 'a', value: 1 },
|
|
15
|
+
{ id: 'b', value: 3 },
|
|
16
|
+
]);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
(0, vitest_1.describe)('isPresent', () => {
|
|
20
|
+
(0, vitest_1.it)('given nullable values when isPresent checks then it returns false only for null and undefined', () => {
|
|
21
|
+
(0, vitest_1.expect)((0, utils_1.isPresent)(undefined)).toBe(false);
|
|
22
|
+
(0, vitest_1.expect)((0, utils_1.isPresent)(null)).toBe(false);
|
|
23
|
+
(0, vitest_1.expect)((0, utils_1.isPresent)(0)).toBe(true);
|
|
24
|
+
(0, vitest_1.expect)((0, utils_1.isPresent)('')).toBe(true);
|
|
25
|
+
(0, vitest_1.expect)((0, utils_1.isPresent)(false)).toBe(true);
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
//# sourceMappingURL=utils.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.spec.js","sourceRoot":"","sources":["../src/utils.spec.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,mCAA4C;AAE5C,IAAA,iBAAQ,EAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,IAAA,WAAE,EAAC,qFAAqF,EAAE,GAAG,EAAE;QAC7F,MAAM,KAAK,GAAG;YACZ,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE;YACrB,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE;YACrB,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE;SACtB,CAAC;QAEF,MAAM,MAAM,GAAG,IAAA,cAAM,EAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;QAEpE,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE;YACrB,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE;SACtB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,iBAAQ,EAAC,WAAW,EAAE,GAAG,EAAE;IACzB,IAAA,WAAE,EAAC,+FAA+F,EAAE,GAAG,EAAE;QACvG,IAAA,eAAM,EAAC,IAAA,iBAAS,EAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,IAAA,eAAM,EAAC,IAAA,iBAAS,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,IAAA,eAAM,EAAC,IAAA,iBAAS,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,IAAA,eAAM,EAAC,IAAA,iBAAS,EAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,IAAA,eAAM,EAAC,IAAA,iBAAS,EAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "release-monorepo-semantically",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"description": "cli commands to manage versioning of package in monorepo and generate changelog",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"author": "",
|
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
"@semantic-release/npm": "^13.1.5",
|
|
52
52
|
"@semantic-release/release-notes-generator": "^14.1.0",
|
|
53
53
|
"@types/node": "^22.16.0",
|
|
54
|
+
"@vitest/coverage-v8": "^4.0.18",
|
|
54
55
|
"eslint": "^9.39.2",
|
|
55
56
|
"husky": "^9.1.7",
|
|
56
57
|
"lint-staged": "^16.2.7",
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
## {{packageName}}@{{version}}
|
|
2
|
+
{{#if commits}}
|
|
3
|
+
|
|
4
|
+
### Changes
|
|
5
|
+
{{#each commits}}
|
|
6
|
+
- {{this.type}}{{#if this.isBreaking}}!{{/if}}: {{this.subject}}
|
|
7
|
+
{{/each}}
|
|
8
|
+
{{/if}}
|
|
9
|
+
{{#if dependencyUpdates}}
|
|
10
|
+
|
|
11
|
+
### Dependencies
|
|
12
|
+
{{#each dependencyUpdates}}
|
|
13
|
+
- update {{this.packageName}} from {{this.oldVersion}} to {{this.newVersion}}
|
|
14
|
+
{{/each}}
|
|
15
|
+
{{/if}}
|
|
16
|
+
{{#unless commits}}
|
|
17
|
+
{{#unless dependencyUpdates}}
|
|
18
|
+
|
|
19
|
+
- No direct changes in this release
|
|
20
|
+
{{/unless}}
|
|
21
|
+
{{/unless}}
|