@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.
@@ -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":"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"}
@@ -1,5 +1,6 @@
1
- /* eslint-disable import/max-dependencies -- the CLI runner wires four subcommands plus shared dependencies */
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":"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"}
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.36",
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.36"
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":";AAOA,OAAO,KAAK,EAAE,cAAc,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAmGrF,MAAM,MAAM,cAAc,GAAG,oBAAoB,CAAC"}
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":"AA0BA,MAAM,iBAAiB,GAAG,cAAc,CAAC;AACzC,MAAM,mBAAmB,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAEpD,SAAS,mBAAmB,CAAC,QAAuC;IAChE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE;QACnC,OAAO,WAAW,CAAC,OAAO,CAAC;IAC/B,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAuC;IAC/D,OAAO,KAAK,CAAC,IAAI,CACb,IAAI,GAAG,CACH,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;QAC7B,OAAO,WAAW,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;YACxD,OAAO,QAAQ,KAAK,iBAAiB,IAAI,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CACL,CACJ,CAAC;AACN,CAAC;AAED,KAAK,UAAU,UAAU,CACrB,WAAkD,EAClD,WAA+B;IAE/B,IAAI,WAAW,CAAC,eAAe,KAAK,SAAS,IAAI,WAAW,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QACzF,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,mCAAmC,EAAE,CAAC;QACxE,OAAO,OAAO,CAAC,GAAG,CAAC;IACvB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,uBAAuB,CAAC;QACtD,WAAW,EAAE,WAAW,CAAC,IAAI;QAC7B,eAAe,EAAE,WAAW,CAAC,eAAe;QAC5C,eAAe,EAAE,WAAW,CAAC,eAAe;QAC5C,gBAAgB,EAAE,SAAS;QAC3B,eAAe,EAAE,SAAS;KAC7B,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,GAAG,CAAC;AACvB,CAAC;AAED,KAAK,UAAU,qBAAqB,CAChC,KAA6B,EAC7B,WAA+B,EAC/B,uBAA0C;IAE1C,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACjE,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,yBAAyB,CAAC;QACnE,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,OAAO;KACV,CAAC,CAAC;IACH,MAAM,yBAAyB,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,2BAA2B,CAAC;QAClF,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,YAAY;KACf,CAAC,CAAC;IACH,MAAM,mBAAmB,GAAG,KAAK,CAAC,WAAW,CAAC,+BAA+B,CAAC;QAC1E,UAAU,EAAE,WAAW,CAAC,IAAI;QAC5B,iBAAiB,EAAE,WAAW,CAAC,oBAAoB;QACnD,YAAY;QACZ,yBAAyB;QACzB,uBAAuB;KAC1B,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC,WAAW,CAAC,wBAAwB,CAAC;QAC9C,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,YAAY,EAAE,mBAAmB;QACjC,UAAU,EAAE,WAAW,CAAC,IAAI;QAC5B,wBAAwB,EAAE,SAAS;KACtC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC7B,KAA6B,EAC7B,WAA+B,EAC/B,uBAA0C;IAE1C,OAAO;QACH,WAAW;QACX,YAAY,EAAE,MAAM,qBAAqB,CAAC,KAAK,EAAE,WAAW,EAAE,uBAAuB,CAAC;KACzF,CAAC;AACN,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAuB;IAC9C,OAAO;QACH,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI;QACnC,UAAU,EAAE,KAAK;QACjB,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,WAAW;QAC7C,kBAAkB,EAAE,MAAM,CAAC,YAAY;KAC1C,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAA6B;IACjE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACrD,MAAM,uBAAuB,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE;QAC/B,OAAO,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,uBAAuB,CAAC,CAAC;IAC3E,CAAC,CAAC,CACL,CAAC;IAEF,OAAO,KAAK,CAAC,WAAW,CAAC,4BAA4B,CAAC;QAClD,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;KAC1C,CAAC,CAAC;AACP,CAAC"}
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.35"
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.36",
20
- "bom-ref": "pkg:npm/@packtory/cli@0.0.36",
21
- "purl": "pkg:npm/@packtory/cli@0.0.36"
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.36",
55
- "bom-ref": "pkg:npm/packtory@0.0.36",
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.36"
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.36",
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.36",
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.36"
140
+ "ref": "pkg:npm/packtory@0.0.37"
124
141
  },
125
142
  {
126
143
  "ref": "pkg:npm/remeda@2.39.0"