@packtory/cli 0.0.38 → 0.0.39

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.
Files changed (30) hide show
  1. package/command-line-interface/runner/changelog-destinations.js +84 -34
  2. package/command-line-interface/runner/changelog-destinations.js.map +1 -1
  3. package/command-line-interface/runner/changelog-handler.js +15 -56
  4. package/command-line-interface/runner/changelog-handler.js.map +1 -1
  5. package/command-line-interface/runner/failure-printing.js +9 -9
  6. package/command-line-interface/runner/failure-printing.js.map +1 -1
  7. package/command-line-interface/runner/github-api-request.js +37 -0
  8. package/command-line-interface/runner/github-api-request.js.map +1 -0
  9. package/command-line-interface/runner/github-release-client.js +37 -0
  10. package/command-line-interface/runner/github-release-client.js.map +1 -0
  11. package/command-line-interface/runner/github-repository.js +15 -0
  12. package/command-line-interface/runner/github-repository.js.map +1 -0
  13. package/command-line-interface/runner/publish-handler.js +1 -1
  14. package/command-line-interface/runner/publish-handler.js.map +1 -1
  15. package/command-line-interface/runner/release-git-client.js +53 -0
  16. package/command-line-interface/runner/release-git-client.js.map +1 -0
  17. package/command-line-interface/runner/release-handler.js +324 -0
  18. package/command-line-interface/runner/release-handler.js.map +1 -0
  19. package/command-line-interface/runner/release-plan-result-printing.js +26 -0
  20. package/command-line-interface/runner/release-plan-result-printing.js.map +1 -0
  21. package/command-line-interface/runner/runner.js +40 -8
  22. package/command-line-interface/runner/runner.js.map +1 -1
  23. package/package.json +3 -2
  24. package/packages/command-line-interface/command-line-interface.entry-point.d.ts.map +1 -1
  25. package/packages/command-line-interface/command-line-interface.entry-point.js +22 -3
  26. package/packages/command-line-interface/command-line-interface.entry-point.js.map +1 -1
  27. package/packtory/packtory-changelog.js +30 -27
  28. package/packtory/packtory-changelog.js.map +1 -1
  29. package/readme.md +24 -1
  30. package/sbom.cdx.json +27 -10
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-git-client.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/release-git-client.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAqBjC,KAAK,UAAU,MAAM,CAAC,IAAkC,EAAE,IAAuB;IAC7E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACvF,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAChC,CAAC;AAED,KAAK,UAAU,mBAAmB,CAC9B,IAAkC,EAClC,IAAuB;IAEvB,IAAI,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC/B,CAAC;AACL,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAkC;IACrE,OAAO;QACH,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO;YAC3B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;YACvF,CAAC;YACD,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;YAChD,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAClD,CAAC;QAED,KAAK,CAAC,WAAW;YACb,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;YACnE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YAC3D,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,KAAK,CAAC,WAAW;YACb,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC;YAChE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;YAClF,CAAC;QACL,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU;YACxC,MAAM,WAAW,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,aAAa,OAAO,KAAK,CAAC,CAAC,CAAC;YAC1G,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACjC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;gBACtE,OAAO;YACX,CAAC;YACD,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC9C,IAAI,WAAW,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;gBACnC,OAAO;YACX,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,QAAQ,OAAO,uBAAuB,WAAW,CAAC,KAAK,cAAc,UAAU,EAAE,CAAC,CAAC;QACvG,CAAC;QAED,KAAK,CAAC,cAAc;YAChB,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;QAClD,CAAC;KACJ,CAAC;AACN,CAAC"}
@@ -0,0 +1,324 @@
1
+ import { generateChangelogOutputs } from "../../packtory/packtory-changelog.js";
2
+ import { collectGeneratedAttributionPaths, createChangelogGenerationOptions, parseValidConfig, writeConfiguredChangelogs } from "./changelog-destinations.js";
3
+ import { printPublishFailure } from "./failure-printing.js";
4
+ import { formatGitHubRepositoryName, parseGitHubRepositoryParts } from "./github-repository.js";
5
+ import { printReleasePlanFailure } from "./release-plan-result-printing.js";
6
+ const releaseCommitMessage = 'Release packages';
7
+ function formatReleaseHandlerError(error) {
8
+ return error instanceof Error ? error.message : String(error);
9
+ }
10
+ function hasAction(flags) {
11
+ return flags.writeChangelog || flags.commit || flags.publish || flags.tag || flags.push || flags.githubRelease;
12
+ }
13
+ function isCommitWithoutChangelog(flags) {
14
+ return flags.commit && !flags.writeChangelog;
15
+ }
16
+ function isChangelogPublishWithoutCommit(flags) {
17
+ return flags.writeChangelog && flags.publish && !flags.commit;
18
+ }
19
+ function isPushWithoutSource(flags) {
20
+ return flags.push && !(flags.commit || flags.tag);
21
+ }
22
+ function isGitHubReleaseWithoutGitPublication(flags) {
23
+ return flags.githubRelease && !(flags.tag && flags.push);
24
+ }
25
+ function isReleaseWriteWithoutMutationApproval(flags) {
26
+ return hasAction(flags) && !flags.noDryRun;
27
+ }
28
+ const flagRules = [
29
+ { failed: isCommitWithoutChangelog, message: '--commit requires --write-changelog' },
30
+ { failed: isChangelogPublishWithoutCommit, message: '--write-changelog --publish requires --commit' },
31
+ { failed: isPushWithoutSource, message: '--push requires --commit or --tag' },
32
+ { failed: isGitHubReleaseWithoutGitPublication, message: '--github-release requires --tag --push' },
33
+ { failed: isReleaseWriteWithoutMutationApproval, message: 'Release writes require --no-dry-run' }
34
+ ];
35
+ function collectFlagIssues(flags) {
36
+ return flagRules.flatMap((rule) => {
37
+ return rule.failed(flags) ? [rule.message] : [];
38
+ });
39
+ }
40
+ function createTargetFromPlanPackage(packagePlan) {
41
+ return {
42
+ name: packagePlan.name,
43
+ version: packagePlan.nextVersion,
44
+ tagName: `${packagePlan.name}@${packagePlan.nextVersion}`
45
+ };
46
+ }
47
+ function selectChangedTargets(packages) {
48
+ return packages
49
+ .filter((packagePlan) => {
50
+ return packagePlan.changed;
51
+ })
52
+ .map(createTargetFromPlanPackage);
53
+ }
54
+ function selectCurrentHeadPublishedTargets(packages) {
55
+ return packages
56
+ .filter((packagePlan) => {
57
+ return (packagePlan.currentGitHead !== undefined &&
58
+ packagePlan.latestRegistryMetadata?.gitHead === packagePlan.currentGitHead);
59
+ })
60
+ .map(createTargetFromPlanPackage);
61
+ }
62
+ function mapTargetsByName(targets) {
63
+ return new Map(targets.map((target) => {
64
+ return [target.name, target];
65
+ }));
66
+ }
67
+ function mergeTargets(...targetGroups) {
68
+ return Array.from(new Map(targetGroups.flatMap((targets) => {
69
+ return targets.map((target) => {
70
+ return [target.name, target];
71
+ });
72
+ })).values());
73
+ }
74
+ function assertTagRule(flags, changedTargets) {
75
+ if (flags.tag && !flags.publish && changedTargets.length > 0) {
76
+ throw new Error('--tag requires --publish unless registry latest already matches the current Git head');
77
+ }
78
+ }
79
+ function hasReleaseWork(flags, packages) {
80
+ if (selectChangedTargets(packages).length > 0) {
81
+ return true;
82
+ }
83
+ return (flags.tag || flags.githubRelease) && selectCurrentHeadPublishedTargets(packages).length > 0;
84
+ }
85
+ function formatPlanPackage(packagePlan) {
86
+ const previousVersion = packagePlan.previousVersion ?? 'unpublished';
87
+ return `- ${packagePlan.name}: ${previousVersion} -> ${packagePlan.nextVersion} (${packagePlan.artifactState})`;
88
+ }
89
+ function printReleasePlan(log, packages) {
90
+ const changedPackages = packages.filter((packagePlan) => {
91
+ return packagePlan.changed;
92
+ });
93
+ if (changedPackages.length === 0) {
94
+ log('No packages need release.');
95
+ return;
96
+ }
97
+ log(['Release plan:', ...changedPackages.map(formatPlanPackage)].join('\n'));
98
+ }
99
+ function readGitHubToken(deps) {
100
+ return deps.readEnvironmentVariable('GH_TOKEN') ?? deps.readEnvironmentVariable('GITHUB_TOKEN');
101
+ }
102
+ function createEngine(deps) {
103
+ return deps.createPrLogEngine({
104
+ githubToken: readGitHubToken(deps),
105
+ workingDirectory: deps.workingDirectory,
106
+ labelLookupIntervalMilliseconds: 250,
107
+ maximumRateLimitRetryCount: 3
108
+ });
109
+ }
110
+ async function generateReleaseChangelog(deps, config, packages) {
111
+ const packageInfo = await deps.readPackageInfo();
112
+ const engine = createEngine(deps);
113
+ const generationOptions = createChangelogGenerationOptions(config);
114
+ const changelog = await generateChangelogOutputs({
115
+ packages,
116
+ prLogEngine: engine,
117
+ explicitBaseRef: generationOptions.explicitBaseRef,
118
+ githubRepo: formatGitHubRepositoryName(packageInfo),
119
+ ignoredAttributionPaths: collectGeneratedAttributionPaths(deps, config),
120
+ packageInfo,
121
+ currentDate: deps.currentDate(),
122
+ packageTagFormat: generationOptions.packageTagFormat,
123
+ targetScopedLabelPattern: generationOptions.targetScopedLabelPattern,
124
+ validLabels: generationOptions.validLabels
125
+ });
126
+ return { changelog, config, engine };
127
+ }
128
+ async function planRelease(deps, config) {
129
+ const outcome = await deps.packtory.planReleaseAgainstLatestPublished(config);
130
+ deps.spinnerRenderer.stopAll();
131
+ if (outcome.result.isErr) {
132
+ printReleasePlanFailure(deps.log, outcome.result.error);
133
+ return undefined;
134
+ }
135
+ return outcome.result.value.packages;
136
+ }
137
+ async function publishTargets(deps, config, changedTargets) {
138
+ if (changedTargets.length === 0) {
139
+ return [];
140
+ }
141
+ const changedTargetsByName = mapTargetsByName(changedTargets);
142
+ const outcome = await deps.packtory.buildAndPublishAll(config, {
143
+ dryRun: false,
144
+ stage: false,
145
+ collectReport: false
146
+ });
147
+ deps.spinnerRenderer.stopAll();
148
+ if (outcome.result.isErr) {
149
+ printPublishFailure(deps.log, outcome.result.error, false);
150
+ return undefined;
151
+ }
152
+ return outcome.result.value.flatMap((result) => {
153
+ const plannedTarget = changedTargetsByName.get(result.bundle.name);
154
+ if (plannedTarget === undefined) {
155
+ return [];
156
+ }
157
+ return [
158
+ {
159
+ name: result.bundle.name,
160
+ version: result.bundle.version,
161
+ tagName: `${result.bundle.name}@${result.bundle.version}`
162
+ }
163
+ ];
164
+ });
165
+ }
166
+ async function ensureTags(deps, targets) {
167
+ const head = await deps.gitClient.currentHead();
168
+ for (const target of targets) {
169
+ await deps.gitClient.ensureTag(target.tagName, target.tagName, head);
170
+ }
171
+ }
172
+ async function createGitHubReleases(deps, targets, changelog) {
173
+ const token = readGitHubToken(deps);
174
+ if (token === undefined) {
175
+ throw new Error('GH_TOKEN or GITHUB_TOKEN must be set to create GitHub releases');
176
+ }
177
+ const repository = parseGitHubRepositoryParts(await deps.readPackageInfo());
178
+ const client = deps.createGitHubReleaseClient({ ...repository, token });
179
+ for (const target of targets) {
180
+ await client.createReleaseIfMissing({
181
+ tagName: target.tagName,
182
+ name: target.tagName,
183
+ body: changelog.packageMarkdownByName.get(target.name) ?? ''
184
+ });
185
+ }
186
+ }
187
+ function reportFlagIssues(deps) {
188
+ const issues = collectFlagIssues(deps.flags);
189
+ if (issues.length > 0) {
190
+ deps.log(issues.join('\n'));
191
+ return 1;
192
+ }
193
+ return undefined;
194
+ }
195
+ async function loadPlannedRelease(deps) {
196
+ const config = await deps.configLoader.load();
197
+ const packages = await planRelease(deps, config);
198
+ if (packages === undefined) {
199
+ return undefined;
200
+ }
201
+ return { config, packages };
202
+ }
203
+ function resolvePlannedReleaseExitCode(deps, packages) {
204
+ if (!hasAction(deps.flags)) {
205
+ printReleasePlan(deps.log, packages);
206
+ return 0;
207
+ }
208
+ if (!hasReleaseWork(deps.flags, packages)) {
209
+ deps.log('No packages need release.');
210
+ return 0;
211
+ }
212
+ return undefined;
213
+ }
214
+ async function generateRequiredChangelog(deps, config, packages) {
215
+ const validConfig = parseValidConfig(config);
216
+ if (validConfig === undefined) {
217
+ throw new Error('The loaded config is invalid for changelog generation');
218
+ }
219
+ return generateReleaseChangelog(deps, validConfig, packages);
220
+ }
221
+ async function commitChangelogAndReplan(deps, changelog, writtenPaths) {
222
+ await deps.gitClient.commit(writtenPaths, releaseCommitMessage);
223
+ const committedPlan = await loadPlannedRelease(deps);
224
+ return committedPlan === undefined ? undefined : { changelog, planned: committedPlan };
225
+ }
226
+ async function writeChangelogAndMaybeCommit(deps, planned) {
227
+ if (!deps.flags.writeChangelog) {
228
+ return { changelog: undefined, planned };
229
+ }
230
+ const validConfig = parseValidConfig(planned.config);
231
+ if (validConfig === undefined) {
232
+ throw new Error('The loaded config is invalid for changelog generation');
233
+ }
234
+ const changelog = await generateReleaseChangelog(deps, validConfig, planned.packages);
235
+ const writtenPaths = await writeConfiguredChangelogs(deps, changelog.config, changelog.engine, changelog.changelog);
236
+ if (!deps.flags.commit) {
237
+ return { changelog, planned };
238
+ }
239
+ return commitChangelogAndReplan(deps, changelog, writtenPaths);
240
+ }
241
+ async function publishOrRetryTargets(deps, planned, changedTargets) {
242
+ if (deps.flags.publish) {
243
+ return publishTargets(deps, planned.config, changedTargets);
244
+ }
245
+ return selectCurrentHeadPublishedTargets(planned.packages);
246
+ }
247
+ async function finishReleaseActions(deps, state, publishedTargets) {
248
+ const releaseTargets = mergeTargets(publishedTargets, selectCurrentHeadPublishedTargets(state.planned.packages));
249
+ if (deps.flags.tag) {
250
+ await ensureTags(deps, releaseTargets);
251
+ }
252
+ if (deps.flags.push) {
253
+ await deps.gitClient.pushFollowTags();
254
+ }
255
+ if (state.githubRelease) {
256
+ await createGitHubReleases(deps, releaseTargets, state.changelog.changelog);
257
+ }
258
+ }
259
+ async function createMutatingReleaseState(deps, changelogStep) {
260
+ const base = {
261
+ changedTargets: selectChangedTargets(changelogStep.planned.packages),
262
+ planned: changelogStep.planned
263
+ };
264
+ if (deps.flags.githubRelease) {
265
+ return {
266
+ ...base,
267
+ githubRelease: true,
268
+ changelog: changelogStep.changelog ??
269
+ (await generateRequiredChangelog(deps, changelogStep.planned.config, changelogStep.planned.packages))
270
+ };
271
+ }
272
+ return { ...base, githubRelease: false, changelog: changelogStep.changelog };
273
+ }
274
+ async function prepareMutatingRelease(deps, planned) {
275
+ const initialChangedTargets = selectChangedTargets(planned.packages);
276
+ assertTagRule(deps.flags, initialChangedTargets);
277
+ await deps.gitClient.ensureClean();
278
+ const changelogStep = await writeChangelogAndMaybeCommit(deps, planned);
279
+ if (changelogStep === undefined) {
280
+ return undefined;
281
+ }
282
+ return createMutatingReleaseState(deps, changelogStep);
283
+ }
284
+ async function finishAndReportRelease(deps, state, publishedTargets) {
285
+ await finishReleaseActions(deps, state, publishedTargets);
286
+ deps.log('Release completed.');
287
+ return 0;
288
+ }
289
+ async function runMutatingRelease(deps, planned) {
290
+ const state = await prepareMutatingRelease(deps, planned);
291
+ if (state === undefined) {
292
+ return 1;
293
+ }
294
+ const publishedTargets = await publishOrRetryTargets(deps, state.planned, state.changedTargets);
295
+ if (publishedTargets === undefined) {
296
+ return 1;
297
+ }
298
+ return finishAndReportRelease(deps, state, publishedTargets);
299
+ }
300
+ async function runRelease(deps) {
301
+ const flagExitCode = reportFlagIssues(deps);
302
+ if (flagExitCode !== undefined) {
303
+ return flagExitCode;
304
+ }
305
+ const planned = await loadPlannedRelease(deps);
306
+ if (planned === undefined) {
307
+ return 1;
308
+ }
309
+ return resolvePlannedReleaseExitCode(deps, planned.packages) ?? runMutatingRelease(deps, planned);
310
+ }
311
+ function stopSpinnersAndReturn(deps, exitCode) {
312
+ deps.spinnerRenderer.stopAll();
313
+ return exitCode;
314
+ }
315
+ export async function runReleaseHandler(deps) {
316
+ try {
317
+ return stopSpinnersAndReturn(deps, await runRelease(deps));
318
+ }
319
+ catch (error) {
320
+ deps.log(formatReleaseHandlerError(error));
321
+ return stopSpinnersAndReturn(deps, 1);
322
+ }
323
+ }
324
+ //# sourceMappingURL=release-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-handler.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/release-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { partialFailureMessages } from "packtory/packtory/partial-result.js";
2
+ import { checksErrorType, configErrorType } from "packtory/packtory/packtory-results.js";
3
+ function printIssueFailure(log, title, issues) {
4
+ log(`${title}, there are ${issues.length} issue(s)\n\n- ${issues.join('\n- ')}`);
5
+ }
6
+ export function printReleasePlanFailure(log, error) {
7
+ if (error.type === configErrorType) {
8
+ printIssueFailure(log, 'Configuration issues', error.issues);
9
+ return;
10
+ }
11
+ if (error.type === checksErrorType) {
12
+ printIssueFailure(log, 'Check issues', error.issues);
13
+ return;
14
+ }
15
+ log(partialFailureMessages(error).join('\n'));
16
+ }
17
+ export function collectReleasePlanPackages(result) {
18
+ if (result.isOk) {
19
+ return result.value.packages;
20
+ }
21
+ if ('succeeded' in result.error) {
22
+ return result.error.succeeded;
23
+ }
24
+ return [];
25
+ }
26
+ //# sourceMappingURL=release-plan-result-printing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-plan-result-printing.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/release-plan-result-printing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,OAAO,EAAE,eAAe,EAAE,eAAe,EAA2B,MAAM,oCAAoC,CAAC;AAI/G,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,MAAM,UAAU,uBAAuB,CAAC,GAAW,EAAE,KAAyB;IAC1E,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,MAAM,UAAU,0BAA0B,CAAC,MAAyB;IAChE,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"}
@@ -1,4 +1,4 @@
1
- /* eslint-disable import/max-dependencies -- the CLI runner wires five subcommands plus shared dependencies */
1
+ /* eslint-disable import/max-dependencies -- the CLI runner wires six subcommands plus shared dependencies */
2
2
  import { binary, command, flag, oneOf, option, positional, runSafely, string, subcommands } from 'cmd-ts';
3
3
  import { runChangelogHandler } from "./changelog-handler.js";
4
4
  import { getParseExitCode } from "./command-parsing.js";
@@ -7,15 +7,17 @@ import { runPreviewHandler } from "./preview-handler.js";
7
7
  import { runReleaseDiffHandler } from "./release-diff-handler.js";
8
8
  import { registerProgressListeners } from "./progress-wiring.js";
9
9
  import { runPublishHandler } from "./publish-handler.js";
10
+ import { runReleaseHandler } from "./release-handler.js";
11
+ const publishCommandName = 'publish';
12
+ const previewCommandName = 'preview';
13
+ const releaseDiffCommandName = 'release-diff';
14
+ const releaseCommandName = 'release';
15
+ const changelogCommandName = 'changelog';
16
+ const packCommandName = 'pack';
17
+ const defaultPackVersion = '0.0.0';
10
18
  export function createCommandLineInterfaceRunner(dependencies) {
11
- const { log, packtory, progressBroadcaster, spinnerRenderer, configLoader, fileManager, pageOutput, openFile, createTemporaryFilePath, createPrLogEngine, currentDate, readEnvironmentVariable, readPackageInfo, workingDirectory } = dependencies;
19
+ const { log, packtory, progressBroadcaster, spinnerRenderer, configLoader, fileManager, pageOutput, openFile, createTemporaryFilePath, createGitHubReleaseClient, createPrLogEngine, currentDate, readEnvironmentVariable, readPackageInfo, releaseGitClient, workingDirectory } = dependencies;
12
20
  let exitCode = 0;
13
- const publishCommandName = 'publish';
14
- const previewCommandName = 'preview';
15
- const releaseDiffCommandName = 'release-diff';
16
- const changelogCommandName = 'changelog';
17
- const packCommandName = 'pack';
18
- const defaultPackVersion = '0.0.0';
19
21
  const baseCommand = subcommands({
20
22
  name: 'packtory',
21
23
  cmds: {
@@ -71,6 +73,36 @@ export function createCommandLineInterfaceRunner(dependencies) {
71
73
  });
72
74
  }
73
75
  }),
76
+ [releaseCommandName]: command({
77
+ name: releaseCommandName,
78
+ description: 'Plans or runs a release workflow.',
79
+ args: {
80
+ writeChangelog: flag({ long: 'write-changelog' }),
81
+ commit: flag({ long: 'commit' }),
82
+ publish: flag({ long: 'publish' }),
83
+ tag: flag({ long: 'tag' }),
84
+ push: flag({ long: 'push' }),
85
+ githubRelease: flag({ long: 'github-release' }),
86
+ noDryRun: flag({ long: 'no-dry-run' })
87
+ },
88
+ async handler({ writeChangelog, commit, publish, tag, push, githubRelease, noDryRun }) {
89
+ exitCode = await runReleaseHandler({
90
+ log,
91
+ packtory,
92
+ spinnerRenderer,
93
+ configLoader,
94
+ fileManager,
95
+ createPrLogEngine,
96
+ createGitHubReleaseClient,
97
+ currentDate,
98
+ readEnvironmentVariable,
99
+ readPackageInfo,
100
+ workingDirectory,
101
+ gitClient: releaseGitClient,
102
+ flags: { writeChangelog, commit, publish, tag, push, githubRelease, noDryRun }
103
+ });
104
+ }
105
+ }),
74
106
  [changelogCommandName]: command({
75
107
  name: changelogCommandName,
76
108
  description: 'Generates grouped Markdown changelog output for the next release.',
@@ -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,11 +7,12 @@
7
7
  "Christian Rackerseder <github@echooff.de>"
8
8
  ],
9
9
  "dependencies": {
10
+ "@octokit/core": "7.0.6",
10
11
  "@pr-log/core": "0.0.2",
11
12
  "@schema-hub/zod-error-formatter": "0.0.11",
12
13
  "cmd-ts": "0.15.0",
13
14
  "open": "11.0.0",
14
- "packtory": "0.0.38",
15
+ "packtory": "0.0.39",
15
16
  "remeda": "2.39.0",
16
17
  "ts-pattern": "5.9.0",
17
18
  "yoctocolors": "2.1.2"
@@ -47,5 +48,5 @@
47
48
  "./packages/command-line-interface/spinner-worker.entry-point.js"
48
49
  ],
49
50
  "type": "module",
50
- "version": "0.0.38"
51
+ "version": "0.0.39"
51
52
  }
@@ -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":";AASA,OAAO,KAAK,EAAE,cAAc,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AA0HrF,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":";AAUA,OAAO,KAAK,EAAE,cAAc,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAmJrF,MAAM,MAAM,cAAc,GAAG,oBAAoB,CAAC"}
@@ -10,6 +10,7 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
10
10
  import fs from 'node:fs';
11
11
  import path from 'node:path';
12
12
  import readline from 'node:readline/promises';
13
+ import { execFile } from 'node:child_process';
13
14
  import { createPrLogEngine } from '@pr-log/core';
14
15
  import { createClock } from "packtory/common/clock.js";
15
16
  import { createLineSpinnerRenderer } from "../../command-line-interface/spinner/line-spinner-renderer.js";
@@ -20,6 +21,8 @@ import { createTerminalSpinnerRenderer } from "../../command-line-interface/spin
20
21
  import { createWorkerSpinnerBackend } from "../../command-line-interface/spinner/spinner-worker-backend.js";
21
22
  import { createConfigLoader } from "../../command-line-interface/config-loader.js";
22
23
  import { createDefaultPreviewIo } from "../../command-line-interface/preview-io/preview-io.js";
24
+ import { createGitHubReleaseClient } from "../../command-line-interface/runner/github-release-client.js";
25
+ import { createReleaseGitClient } from "../../command-line-interface/runner/release-git-client.js";
23
26
  import { readCiEnvironment } from "packtory/bundle-emitter/repository-coherence.js";
24
27
  import { buildPacktoryComposition } from "packtory/packages/packtory.composition.js";
25
28
  import { awaitSpinnerWorkerTermination, createBootedSpinnerRuntime } from "./spinner-boot.entry-point.js";
@@ -44,6 +47,17 @@ function createSpinnerRenderer() {
44
47
  backend: createWorkerSpinnerBackend({ runtime: createBootedSpinnerRuntime() })
45
48
  });
46
49
  }
50
+ async function runGitCommand(command, args) {
51
+ return new Promise((resolve, reject) => {
52
+ execFile(command, Array.from(args), (error, stdout, stderr) => {
53
+ if (error !== null) {
54
+ reject(error instanceof Error ? error : new Error('Git command failed'));
55
+ return;
56
+ }
57
+ resolve({ stdout, stderr });
58
+ });
59
+ });
60
+ }
47
61
  const spinnerRenderer = createSpinnerRenderer();
48
62
  const clock = createClock();
49
63
  const fileManager = createFileManager({ hostFileSystem: fs.promises });
@@ -75,15 +89,19 @@ const { packtory, progressBroadcaster } = buildPacktoryComposition({
75
89
  promptForOneTimePassword,
76
90
  ciEnvironment: readCiEnvironment(process.env)
77
91
  });
92
+ const workingDirectory = process.cwd();
78
93
  const commandLinerInterfaceRunner = createCommandLineInterfaceRunner({
79
94
  createPrLogEngine,
95
+ createGitHubReleaseClient: (context) => {
96
+ return createGitHubReleaseClient({ ...context, fetch: globalThis.fetch });
97
+ },
80
98
  currentDate() {
81
99
  return new Date(clock.getCurrentTimeInMilliseconds());
82
100
  },
83
101
  packtory,
84
102
  progressBroadcaster: progressBroadcaster.consumer,
85
103
  spinnerRenderer,
86
- configLoader: createConfigLoader({ currentWorkingDirectory: process.cwd(), importModule }),
104
+ configLoader: createConfigLoader({ currentWorkingDirectory: workingDirectory, importModule }),
87
105
  fileManager,
88
106
  pageOutput: async (content) => {
89
107
  const didPage = await previewIo.pagePreviewOutput(content);
@@ -97,9 +115,10 @@ const commandLinerInterfaceRunner = createCommandLineInterfaceRunner({
97
115
  return process.env[name];
98
116
  },
99
117
  async readPackageInfo() {
100
- return parsePackageInfo(await fileManager.readFile(path.join(process.cwd(), 'package.json')));
118
+ return parsePackageInfo(await fileManager.readFile(path.join(workingDirectory, 'package.json')));
101
119
  },
102
- workingDirectory: process.cwd(),
120
+ releaseGitClient: createReleaseGitClient({ repositoryFolder: workingDirectory, runGitCommand }),
121
+ workingDirectory,
103
122
  log: console.log
104
123
  });
105
124
  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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"}