@packtory/cli 0.0.36 → 0.0.37
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/command-line-interface/runner/changelog-handler.js +109 -0
- package/command-line-interface/runner/changelog-handler.js.map +1 -0
- package/command-line-interface/runner/runner.js +23 -2
- package/command-line-interface/runner/runner.js.map +1 -1
- package/package.json +3 -2
- package/packages/command-line-interface/command-line-interface.entry-point.d.ts.map +1 -1
- package/packages/command-line-interface/command-line-interface.entry-point.js +23 -0
- package/packages/command-line-interface/command-line-interface.entry-point.js.map +1 -1
- package/packtory/packtory-changelog.js +82 -0
- package/packtory/packtory-changelog.js.map +1 -0
- package/readme.md +11 -0
- package/sbom.cdx.json +27 -10
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { defaultValidLabels } from '@pr-log/core';
|
|
2
|
+
import { normalizeRepositoryUrl } from "packtory/bundle-emitter/repository-url-normalizer.js";
|
|
3
|
+
import { partialFailureMessages } from "packtory/packtory/partial-result.js";
|
|
4
|
+
import { checksErrorType, configErrorType } from "packtory/packtory/packtory-results.js";
|
|
5
|
+
import { generateChangelog } from "../../packtory/packtory-changelog.js";
|
|
6
|
+
const labelLookupIntervalMilliseconds = 250;
|
|
7
|
+
const maximumRateLimitRetryCount = 3;
|
|
8
|
+
const githubRepositoryPattern = /^https:\/\/github\.com\/(?<owner>[^/]+)\/(?<repo>[^/]+)$/u;
|
|
9
|
+
function formatChangelogHandlerError(error) {
|
|
10
|
+
return String(error).replace(/^[A-Za-z]*Error: /u, '');
|
|
11
|
+
}
|
|
12
|
+
function githubTokenFrom(deps) {
|
|
13
|
+
return deps.readEnvironmentVariable('GH_TOKEN') ?? deps.readEnvironmentVariable('GITHUB_TOKEN');
|
|
14
|
+
}
|
|
15
|
+
function gitHubRepositoryMatchFrom(repositoryUrl) {
|
|
16
|
+
return githubRepositoryPattern.exec(String(repositoryUrl)) ?? undefined;
|
|
17
|
+
}
|
|
18
|
+
function gitHubRepositoryPartsFromGroups(groups) {
|
|
19
|
+
if (groups === undefined) {
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
return { owner: String(groups.owner), repo: String(groups.repo) };
|
|
23
|
+
}
|
|
24
|
+
function gitHubRepositoryPartsFrom(repositoryUrl) {
|
|
25
|
+
return gitHubRepositoryPartsFromGroups(gitHubRepositoryMatchFrom(repositoryUrl)?.groups);
|
|
26
|
+
}
|
|
27
|
+
function githubRepoFrom(packageInfo) {
|
|
28
|
+
const repository = gitHubRepositoryPartsFrom(normalizeRepositoryUrl(packageInfo.repository));
|
|
29
|
+
if (repository === undefined) {
|
|
30
|
+
throw new Error('package.json repository must point to a GitHub repository');
|
|
31
|
+
}
|
|
32
|
+
return `${repository.owner}/${repository.repo}`;
|
|
33
|
+
}
|
|
34
|
+
function createEngine(deps) {
|
|
35
|
+
return deps.createPrLogEngine({
|
|
36
|
+
githubToken: githubTokenFrom(deps),
|
|
37
|
+
workingDirectory: deps.workingDirectory,
|
|
38
|
+
labelLookupIntervalMilliseconds,
|
|
39
|
+
maximumRateLimitRetryCount
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
function printIssueFailure(log, title, issues) {
|
|
43
|
+
log(`${title}, there are ${issues.length} issue(s)\n\n- ${issues.join('\n- ')}`);
|
|
44
|
+
}
|
|
45
|
+
function printReleasePlanFailure(log, error) {
|
|
46
|
+
if (error.type === configErrorType) {
|
|
47
|
+
printIssueFailure(log, 'Configuration issues', error.issues);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (error.type === checksErrorType) {
|
|
51
|
+
printIssueFailure(log, 'Check issues', error.issues);
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
log(partialFailureMessages(error).join('\n'));
|
|
55
|
+
}
|
|
56
|
+
function releasePlanPackagesFrom(result) {
|
|
57
|
+
if (result.isOk) {
|
|
58
|
+
return result.value.packages;
|
|
59
|
+
}
|
|
60
|
+
if ('succeeded' in result.error) {
|
|
61
|
+
return result.error.succeeded;
|
|
62
|
+
}
|
|
63
|
+
return [];
|
|
64
|
+
}
|
|
65
|
+
async function renderChangelog(deps, packages) {
|
|
66
|
+
if (packages.length === 0) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const packageInfo = await deps.readPackageInfo();
|
|
70
|
+
const markdown = await generateChangelog({
|
|
71
|
+
packages,
|
|
72
|
+
prLogEngine: createEngine(deps),
|
|
73
|
+
githubRepo: githubRepoFrom(packageInfo),
|
|
74
|
+
packageInfo,
|
|
75
|
+
currentDate: deps.currentDate(),
|
|
76
|
+
validLabels: defaultValidLabels
|
|
77
|
+
});
|
|
78
|
+
if (markdown.length > 0) {
|
|
79
|
+
await deps.pageOutput(markdown);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function exitCodeFromReleasePlanResult(log, result) {
|
|
83
|
+
if (result.isOk) {
|
|
84
|
+
return 0;
|
|
85
|
+
}
|
|
86
|
+
printReleasePlanFailure(log, result.error);
|
|
87
|
+
return 1;
|
|
88
|
+
}
|
|
89
|
+
async function runChangelog(deps) {
|
|
90
|
+
const config = await deps.configLoader.load();
|
|
91
|
+
const outcome = await deps.packtory.planReleaseAgainstLatestPublished(config);
|
|
92
|
+
deps.spinnerRenderer.stopAll();
|
|
93
|
+
await renderChangelog(deps, releasePlanPackagesFrom(outcome.result));
|
|
94
|
+
return exitCodeFromReleasePlanResult(deps.log, outcome.result);
|
|
95
|
+
}
|
|
96
|
+
function stopSpinnersAndReturn(deps, exitCode) {
|
|
97
|
+
deps.spinnerRenderer.stopAll();
|
|
98
|
+
return exitCode;
|
|
99
|
+
}
|
|
100
|
+
export async function runChangelogHandler(deps) {
|
|
101
|
+
try {
|
|
102
|
+
return stopSpinnersAndReturn(deps, await runChangelog(deps));
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
deps.log(formatChangelogHandlerError(error));
|
|
106
|
+
return stopSpinnersAndReturn(deps, 1);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=changelog-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changelog-handler.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/changelog-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAA6C,MAAM,cAAc,CAAC;AAC7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,mDAAmD,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,OAAO,EAAE,eAAe,EAAE,eAAe,EAA2B,MAAM,oCAAoC,CAAC;AAC/G,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAwBzE,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAC5C,MAAM,0BAA0B,GAAG,CAAC,CAAC;AACrC,MAAM,uBAAuB,GAAG,2DAA2D,CAAC;AAE5F,SAAS,2BAA2B,CAAC,KAAc;IAC/C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,eAAe,CAAC,IAA2D;IAChF,OAAO,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,CAAC;AACpG,CAAC;AAED,SAAS,yBAAyB,CAAC,aAAiC;IAChE,OAAO,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,SAAS,CAAC;AAC5E,CAAC;AAED,SAAS,+BAA+B,CACpC,MAA0C;IAE1C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AACtE,CAAC;AAED,SAAS,yBAAyB,CAAC,aAAiC;IAChE,OAAO,+BAA+B,CAAC,yBAAyB,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;AAC7F,CAAC;AAED,SAAS,cAAc,CAAC,WAAoC;IACxD,MAAM,UAAU,GAAG,yBAAyB,CAAC,sBAAsB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7F,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,GAAG,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;AACpD,CAAC;AAED,SAAS,YAAY,CAAC,IAA0B;IAC5C,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAC1B,WAAW,EAAE,eAAe,CAAC,IAAI,CAAC;QAClC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,+BAA+B;QAC/B,0BAA0B;KAC7B,CAAC,CAAC;AACP,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW,EAAE,KAAa,EAAE,MAAyB;IAC5E,GAAG,CAAC,GAAG,KAAK,eAAe,MAAM,CAAC,MAAM,kBAAkB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,uBAAuB,CAAC,GAAW,EAAE,KAAyB;IACnE,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACjC,iBAAiB,CAAC,GAAG,EAAE,sBAAsB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7D,OAAO;IACX,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACjC,iBAAiB,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACrD,OAAO;IACX,CAAC;IACD,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,uBAAuB,CAAC,MAAyB;IACtD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;IACjC,CAAC;IACD,IAAI,WAAW,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;IAClC,CAAC;IACD,OAAO,EAAE,CAAC;AACd,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,IAA0B,EAAE,QAAuC;IAC9F,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO;IACX,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;IACjD,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC;QACrC,QAAQ;QACR,WAAW,EAAE,YAAY,CAAC,IAAI,CAAC;QAC/B,UAAU,EAAE,cAAc,CAAC,WAAW,CAAC;QACvC,WAAW;QACX,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;QAC/B,WAAW,EAAE,kBAAkB;KAClC,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;AACL,CAAC;AAED,SAAS,6BAA6B,CAAC,GAAW,EAAE,MAAyB;IACzE,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,CAAC;IACb,CAAC;IACD,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3C,OAAO,CAAC,CAAC;AACb,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAA0B;IAClD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAC9C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,iCAAiC,CAAC,MAAM,CAAC,CAAC;IAC9E,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;IAC/B,MAAM,eAAe,CAAC,IAAI,EAAE,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACrE,OAAO,6BAA6B,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,qBAAqB,CAAC,IAA0B,EAAE,QAAgB;IACvE,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;IAC/B,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAA0B;IAChE,IAAI,CAAC;QACD,OAAO,qBAAqB,CAAC,IAAI,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7C,OAAO,qBAAqB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;AACL,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
/* eslint-disable import/max-dependencies -- the CLI runner wires
|
|
1
|
+
/* eslint-disable import/max-dependencies -- the CLI runner wires five subcommands plus shared dependencies */
|
|
2
2
|
import { binary, command, flag, oneOf, option, positional, runSafely, string, subcommands } from 'cmd-ts';
|
|
3
|
+
import { runChangelogHandler } from "./changelog-handler.js";
|
|
3
4
|
import { getParseExitCode } from "./command-parsing.js";
|
|
4
5
|
import { runPackHandler } from "./pack-handler.js";
|
|
5
6
|
import { runPreviewHandler } from "./preview-handler.js";
|
|
@@ -7,11 +8,12 @@ import { runReleaseDiffHandler } from "./release-diff-handler.js";
|
|
|
7
8
|
import { registerProgressListeners } from "./progress-wiring.js";
|
|
8
9
|
import { runPublishHandler } from "./publish-handler.js";
|
|
9
10
|
export function createCommandLineInterfaceRunner(dependencies) {
|
|
10
|
-
const { log, packtory, progressBroadcaster, spinnerRenderer, configLoader, fileManager, pageOutput, openFile, createTemporaryFilePath } = dependencies;
|
|
11
|
+
const { log, packtory, progressBroadcaster, spinnerRenderer, configLoader, fileManager, pageOutput, openFile, createTemporaryFilePath, createPrLogEngine, currentDate, readEnvironmentVariable, readPackageInfo, workingDirectory } = dependencies;
|
|
11
12
|
let exitCode = 0;
|
|
12
13
|
const publishCommandName = 'publish';
|
|
13
14
|
const previewCommandName = 'preview';
|
|
14
15
|
const releaseDiffCommandName = 'release-diff';
|
|
16
|
+
const changelogCommandName = 'changelog';
|
|
15
17
|
const packCommandName = 'pack';
|
|
16
18
|
const defaultPackVersion = '0.0.0';
|
|
17
19
|
const baseCommand = subcommands({
|
|
@@ -69,6 +71,25 @@ export function createCommandLineInterfaceRunner(dependencies) {
|
|
|
69
71
|
});
|
|
70
72
|
}
|
|
71
73
|
}),
|
|
74
|
+
[changelogCommandName]: command({
|
|
75
|
+
name: changelogCommandName,
|
|
76
|
+
description: 'Generates grouped Markdown changelog output for the next release.',
|
|
77
|
+
args: {},
|
|
78
|
+
async handler() {
|
|
79
|
+
exitCode = await runChangelogHandler({
|
|
80
|
+
log,
|
|
81
|
+
pageOutput,
|
|
82
|
+
packtory,
|
|
83
|
+
spinnerRenderer,
|
|
84
|
+
configLoader,
|
|
85
|
+
createPrLogEngine,
|
|
86
|
+
currentDate,
|
|
87
|
+
readEnvironmentVariable,
|
|
88
|
+
readPackageInfo,
|
|
89
|
+
workingDirectory
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}),
|
|
72
93
|
[packCommandName]: command({
|
|
73
94
|
name: packCommandName,
|
|
74
95
|
description: 'Builds a single configured package and writes it as a zip, tar, or folder artifact.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/runner.ts"],"names":[],"mappings":"AAAA,8GAA8G;AAC9G,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/runner.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -7,9 +7,10 @@
|
|
|
7
7
|
"Christian Rackerseder <github@echooff.de>"
|
|
8
8
|
],
|
|
9
9
|
"dependencies": {
|
|
10
|
+
"@pr-log/core": "0.0.1",
|
|
10
11
|
"cmd-ts": "0.15.0",
|
|
11
12
|
"open": "11.0.0",
|
|
12
|
-
"packtory": "0.0.
|
|
13
|
+
"packtory": "0.0.37",
|
|
13
14
|
"remeda": "2.39.0",
|
|
14
15
|
"ts-pattern": "5.9.0",
|
|
15
16
|
"yoctocolors": "2.1.2"
|
|
@@ -45,5 +46,5 @@
|
|
|
45
46
|
"./packages/command-line-interface/spinner-worker.entry-point.js"
|
|
46
47
|
],
|
|
47
48
|
"type": "module",
|
|
48
|
-
"version": "0.0.
|
|
49
|
+
"version": "0.0.37"
|
|
49
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-line-interface.entry-point.d.ts","sourceRoot":"","sources":["../../../../../source/packages/command-line-interface/command-line-interface.entry-point.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"command-line-interface.entry-point.d.ts","sourceRoot":"","sources":["../../../../../source/packages/command-line-interface/command-line-interface.entry-point.ts"],"names":[],"mappings":";AASA,OAAO,KAAK,EAAE,cAAc,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AA0HrF,MAAM,MAAM,cAAc,GAAG,oBAAoB,CAAC"}
|
|
@@ -8,7 +8,9 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
|
|
|
8
8
|
return path;
|
|
9
9
|
};
|
|
10
10
|
import fs from 'node:fs';
|
|
11
|
+
import path from 'node:path';
|
|
11
12
|
import readline from 'node:readline/promises';
|
|
13
|
+
import { createPrLogEngine } from '@pr-log/core';
|
|
12
14
|
import { createClock } from "packtory/common/clock.js";
|
|
13
15
|
import { createLineSpinnerRenderer } from "../../command-line-interface/spinner/line-spinner-renderer.js";
|
|
14
16
|
import { createOneTimePasswordPrompt } from "../../command-line-interface/one-time-password-prompt.js";
|
|
@@ -24,6 +26,16 @@ import { awaitSpinnerWorkerTermination, createBootedSpinnerRuntime } from "./spi
|
|
|
24
26
|
async function importModule(modulePath) {
|
|
25
27
|
return import(__rewriteRelativeImportExtension(modulePath));
|
|
26
28
|
}
|
|
29
|
+
function isPackageInfo(value) {
|
|
30
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
31
|
+
}
|
|
32
|
+
function parsePackageInfo(content) {
|
|
33
|
+
const parsed = JSON.parse(content);
|
|
34
|
+
if (isPackageInfo(parsed)) {
|
|
35
|
+
return parsed;
|
|
36
|
+
}
|
|
37
|
+
throw new Error('package.json must contain an object');
|
|
38
|
+
}
|
|
27
39
|
function createSpinnerRenderer() {
|
|
28
40
|
if (!process.stdout.isTTY) {
|
|
29
41
|
return createLineSpinnerRenderer({ log: console.log });
|
|
@@ -64,6 +76,10 @@ const { packtory, progressBroadcaster } = buildPacktoryComposition({
|
|
|
64
76
|
ciEnvironment: readCiEnvironment(process.env)
|
|
65
77
|
});
|
|
66
78
|
const commandLinerInterfaceRunner = createCommandLineInterfaceRunner({
|
|
79
|
+
createPrLogEngine,
|
|
80
|
+
currentDate() {
|
|
81
|
+
return new Date(clock.getCurrentTimeInMilliseconds());
|
|
82
|
+
},
|
|
67
83
|
packtory,
|
|
68
84
|
progressBroadcaster: progressBroadcaster.consumer,
|
|
69
85
|
spinnerRenderer,
|
|
@@ -77,6 +93,13 @@ const commandLinerInterfaceRunner = createCommandLineInterfaceRunner({
|
|
|
77
93
|
},
|
|
78
94
|
openFile: previewIo.openPreviewFile,
|
|
79
95
|
createTemporaryFilePath: previewIo.createTemporaryPreviewHtmlPath,
|
|
96
|
+
readEnvironmentVariable(name) {
|
|
97
|
+
return process.env[name];
|
|
98
|
+
},
|
|
99
|
+
async readPackageInfo() {
|
|
100
|
+
return parsePackageInfo(await fileManager.readFile(path.join(process.cwd(), 'package.json')));
|
|
101
|
+
},
|
|
102
|
+
workingDirectory: process.cwd(),
|
|
80
103
|
log: console.log
|
|
81
104
|
});
|
|
82
105
|
function setExitCode(exitCode) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-line-interface.entry-point.js","sourceRoot":"","sources":["../../../../../source/packages/command-line-interface/command-line-interface.entry-point.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"command-line-interface.entry-point.js","sourceRoot":"","sources":["../../../../../source/packages/command-line-interface/command-line-interface.entry-point.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
const changelogFileName = 'CHANGELOG.md';
|
|
2
|
+
const changelogFileSuffix = `/${changelogFileName}`;
|
|
3
|
+
function changedPackagesFrom(packages) {
|
|
4
|
+
return packages.filter((packagePlan) => {
|
|
5
|
+
return packagePlan.changed;
|
|
6
|
+
});
|
|
7
|
+
}
|
|
8
|
+
function changelogPathsFrom(packages) {
|
|
9
|
+
return Array.from(new Set(packages.flatMap((packagePlan) => {
|
|
10
|
+
return packagePlan.changelogSourceFiles.filter((filePath) => {
|
|
11
|
+
return filePath === changelogFileName || filePath.endsWith(changelogFileSuffix);
|
|
12
|
+
});
|
|
13
|
+
})));
|
|
14
|
+
}
|
|
15
|
+
async function baseRefFor(prLogEngine, packagePlan) {
|
|
16
|
+
if (packagePlan.previousVersion === undefined && packagePlan.previousGitHead === undefined) {
|
|
17
|
+
const baseRef = await prLogEngine.resolveLatestSemverChangelogBaseRef();
|
|
18
|
+
return baseRef.ref;
|
|
19
|
+
}
|
|
20
|
+
const baseRef = await prLogEngine.resolveChangelogBaseRef({
|
|
21
|
+
packageName: packagePlan.name,
|
|
22
|
+
previousVersion: packagePlan.previousVersion,
|
|
23
|
+
previousGitHead: packagePlan.previousGitHead,
|
|
24
|
+
packageTagFormat: undefined,
|
|
25
|
+
explicitBaseRef: undefined
|
|
26
|
+
});
|
|
27
|
+
return baseRef.ref;
|
|
28
|
+
}
|
|
29
|
+
async function targetPullRequestsFor(input, packagePlan, ignoredAttributionPaths) {
|
|
30
|
+
const baseRef = await baseRefFor(input.prLogEngine, packagePlan);
|
|
31
|
+
const pullRequests = await input.prLogEngine.collectMergedPullRequests({
|
|
32
|
+
githubRepo: input.githubRepo,
|
|
33
|
+
baseRef
|
|
34
|
+
});
|
|
35
|
+
const changedFilesByPullRequest = await input.prLogEngine.readPullRequestChangedFiles({
|
|
36
|
+
githubRepo: input.githubRepo,
|
|
37
|
+
pullRequests
|
|
38
|
+
});
|
|
39
|
+
const packagePullRequests = input.prLogEngine.filterPullRequestsByTargetFiles({
|
|
40
|
+
targetName: packagePlan.name,
|
|
41
|
+
targetSourceFiles: packagePlan.changelogSourceFiles,
|
|
42
|
+
pullRequests,
|
|
43
|
+
changedFilesByPullRequest,
|
|
44
|
+
ignoredAttributionPaths
|
|
45
|
+
});
|
|
46
|
+
return input.prLogEngine.resolvePullRequestLabels({
|
|
47
|
+
githubRepo: input.githubRepo,
|
|
48
|
+
validLabels: input.validLabels,
|
|
49
|
+
pullRequests: packagePullRequests,
|
|
50
|
+
targetName: packagePlan.name,
|
|
51
|
+
targetScopedLabelPattern: undefined
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
async function changelogTargetFor(input, packagePlan, ignoredAttributionPaths) {
|
|
55
|
+
return {
|
|
56
|
+
packagePlan,
|
|
57
|
+
pullRequests: await targetPullRequestsFor(input, packagePlan, ignoredAttributionPaths)
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function targetSectionFrom(target) {
|
|
61
|
+
return {
|
|
62
|
+
targetName: target.packagePlan.name,
|
|
63
|
+
unreleased: false,
|
|
64
|
+
versionNumber: target.packagePlan.nextVersion,
|
|
65
|
+
mergedPullRequests: target.pullRequests
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
export async function generateChangelog(input) {
|
|
69
|
+
const packages = changedPackagesFrom(input.packages);
|
|
70
|
+
const ignoredAttributionPaths = changelogPathsFrom(packages);
|
|
71
|
+
const targets = await Promise.all(packages.map(async (packagePlan) => {
|
|
72
|
+
return changelogTargetFor(input, packagePlan, ignoredAttributionPaths);
|
|
73
|
+
}));
|
|
74
|
+
return input.prLogEngine.renderGroupedTargetChangelog({
|
|
75
|
+
packageInfo: input.packageInfo,
|
|
76
|
+
currentDate: input.currentDate,
|
|
77
|
+
validLabels: input.validLabels,
|
|
78
|
+
githubRepo: input.githubRepo,
|
|
79
|
+
targets: targets.map(targetSectionFrom)
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=packtory-changelog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packtory-changelog.js","sourceRoot":"","sources":["../../../../source/packtory/packtory-changelog.ts"],"names":[],"mappings":"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"}
|
package/readme.md
CHANGED
|
@@ -20,6 +20,7 @@ packtory <command> [options]
|
|
|
20
20
|
|
|
21
21
|
- **preview:** Runs a fresh dry-run build with report collection enabled and shows a human-oriented preview of the emitted package contents, file statuses, and changed-file diffs.
|
|
22
22
|
- **release-diff:** Runs the same dry-run build as `preview` and shows, per package, the changes between the latest version currently published on the configured registry and the bundle the next run would publish.
|
|
23
|
+
- **changelog:** Builds the next release plan, attributes merged GitHub pull requests to changed packages, and prints grouped Markdown changelog output.
|
|
23
24
|
- **publish:** Bundles and publishes npm packages based on the configuration in `packtory.config.js`.
|
|
24
25
|
- **pack:** Builds a single configured package and writes it to disk as a zip archive, tarball, or expanded folder. Intended for ad-hoc artifact use cases such as AWS Lambda deployments, container builds, or local inspection — `pack` never talks to a registry.
|
|
25
26
|
|
|
@@ -58,6 +59,16 @@ packtory <command> [options]
|
|
|
58
59
|
- `packtory release-diff` exits with code `0` on a clean run and `1` on config errors, check failures, or partial failures.
|
|
59
60
|
- `release-diff` is read-only: it never publishes and never writes to the registry. It is currently terminal-only; an HTML/`--open` variant and an `--against <version>` selector are not part of this release.
|
|
60
61
|
|
|
62
|
+
**Changelog behavior:**
|
|
63
|
+
|
|
64
|
+
- `packtory changelog` computes the same release plan used by Packtory's release planning API, skips unchanged packages, and prints one grouped Markdown changelog for packages that would publish a changed artifact.
|
|
65
|
+
- Pull requests are attributed by comparing GitHub changed files against each package's attributed source files. Changelog files named `CHANGELOG.md` are ignored as attribution inputs.
|
|
66
|
+
- The GitHub repository is read from the root `package.json` `repository` field.
|
|
67
|
+
- GitHub API requests use `GH_TOKEN` when set, otherwise `GITHUB_TOKEN`.
|
|
68
|
+
- Output is shown through `$PAGER` when possible, otherwise `less -R`, otherwise standard output.
|
|
69
|
+
- `packtory changelog` exits with code `0` on a clean run and `1` on config, release-plan, Git, GitHub, or changelog generation failures. Partial release-plan failures still render succeeded changed packages when changelog generation succeeds.
|
|
70
|
+
- `changelog` is read-only: it never writes changelog files, commits, tags, releases, deployments, registry data, or packages.
|
|
71
|
+
|
|
61
72
|
**Pack behavior:**
|
|
62
73
|
|
|
63
74
|
- `packtory pack` runs the same validate → resolve → link → checks pipeline as the other commands, then emits the selected package's bundle to the path given by `--out`. It never reads from or writes to the configured registry.
|
package/sbom.cdx.json
CHANGED
|
@@ -9,19 +9,32 @@
|
|
|
9
9
|
{
|
|
10
10
|
"type": "application",
|
|
11
11
|
"name": "packtory",
|
|
12
|
-
"version": "0.0.
|
|
12
|
+
"version": "0.0.36"
|
|
13
13
|
}
|
|
14
14
|
]
|
|
15
15
|
},
|
|
16
16
|
"component": {
|
|
17
17
|
"type": "library",
|
|
18
18
|
"name": "@packtory/cli",
|
|
19
|
-
"version": "0.0.
|
|
20
|
-
"bom-ref": "pkg:npm/@packtory/cli@0.0.
|
|
21
|
-
"purl": "pkg:npm/@packtory/cli@0.0.
|
|
19
|
+
"version": "0.0.37",
|
|
20
|
+
"bom-ref": "pkg:npm/@packtory/cli@0.0.37",
|
|
21
|
+
"purl": "pkg:npm/@packtory/cli@0.0.37"
|
|
22
22
|
}
|
|
23
23
|
},
|
|
24
24
|
"components": [
|
|
25
|
+
{
|
|
26
|
+
"type": "library",
|
|
27
|
+
"name": "@pr-log/core",
|
|
28
|
+
"version": "0.0.1",
|
|
29
|
+
"bom-ref": "pkg:npm/@pr-log/core@0.0.1",
|
|
30
|
+
"scope": "required",
|
|
31
|
+
"licenses": [
|
|
32
|
+
{
|
|
33
|
+
"expression": "MIT"
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
"purl": "pkg:npm/@pr-log/core@0.0.1"
|
|
37
|
+
},
|
|
25
38
|
{
|
|
26
39
|
"type": "library",
|
|
27
40
|
"name": "cmd-ts",
|
|
@@ -51,15 +64,15 @@
|
|
|
51
64
|
{
|
|
52
65
|
"type": "library",
|
|
53
66
|
"name": "packtory",
|
|
54
|
-
"version": "0.0.
|
|
55
|
-
"bom-ref": "pkg:npm/packtory@0.0.
|
|
67
|
+
"version": "0.0.37",
|
|
68
|
+
"bom-ref": "pkg:npm/packtory@0.0.37",
|
|
56
69
|
"scope": "required",
|
|
57
70
|
"licenses": [
|
|
58
71
|
{
|
|
59
72
|
"expression": "MIT"
|
|
60
73
|
}
|
|
61
74
|
],
|
|
62
|
-
"purl": "pkg:npm/packtory@0.0.
|
|
75
|
+
"purl": "pkg:npm/packtory@0.0.37"
|
|
63
76
|
},
|
|
64
77
|
{
|
|
65
78
|
"type": "library",
|
|
@@ -103,16 +116,20 @@
|
|
|
103
116
|
],
|
|
104
117
|
"dependencies": [
|
|
105
118
|
{
|
|
106
|
-
"ref": "pkg:npm/@packtory/cli@0.0.
|
|
119
|
+
"ref": "pkg:npm/@packtory/cli@0.0.37",
|
|
107
120
|
"dependsOn": [
|
|
121
|
+
"pkg:npm/@pr-log/core@0.0.1",
|
|
108
122
|
"pkg:npm/cmd-ts@0.15.0",
|
|
109
123
|
"pkg:npm/open@11.0.0",
|
|
110
|
-
"pkg:npm/packtory@0.0.
|
|
124
|
+
"pkg:npm/packtory@0.0.37",
|
|
111
125
|
"pkg:npm/remeda@2.39.0",
|
|
112
126
|
"pkg:npm/ts-pattern@5.9.0",
|
|
113
127
|
"pkg:npm/yoctocolors@2.1.2"
|
|
114
128
|
]
|
|
115
129
|
},
|
|
130
|
+
{
|
|
131
|
+
"ref": "pkg:npm/@pr-log/core@0.0.1"
|
|
132
|
+
},
|
|
116
133
|
{
|
|
117
134
|
"ref": "pkg:npm/cmd-ts@0.15.0"
|
|
118
135
|
},
|
|
@@ -120,7 +137,7 @@
|
|
|
120
137
|
"ref": "pkg:npm/open@11.0.0"
|
|
121
138
|
},
|
|
122
139
|
{
|
|
123
|
-
"ref": "pkg:npm/packtory@0.0.
|
|
140
|
+
"ref": "pkg:npm/packtory@0.0.37"
|
|
124
141
|
},
|
|
125
142
|
{
|
|
126
143
|
"ref": "pkg:npm/remeda@2.39.0"
|