@packtory/cli 0.0.102 → 0.0.103
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/config-loader.js +2 -33
- package/command-line-interface/config-loader.js.map +1 -1
- package/command-line-interface/one-time-password-prompt.js +0 -31
- package/command-line-interface/one-time-password-prompt.js.map +1 -1
- package/command-line-interface/preview-io/preview-io-shared.js +2 -31
- package/command-line-interface/preview-io/preview-io-shared.js.map +1 -1
- package/command-line-interface/preview-io/preview-io.js +4 -15
- package/command-line-interface/preview-io/preview-io.js.map +1 -1
- package/command-line-interface/preview-io/preview-spawn.js +1 -26
- package/command-line-interface/preview-io/preview-spawn.js.map +1 -1
- package/command-line-interface/runner/changelog-destinations.js +5 -220
- package/command-line-interface/runner/changelog-destinations.js.map +1 -1
- package/command-line-interface/runner/changelog-handler.js +5 -79
- package/command-line-interface/runner/changelog-handler.js.map +1 -1
- package/command-line-interface/runner/changelog-pr-log-config.js +1 -147
- package/command-line-interface/runner/changelog-pr-log-config.js.map +1 -1
- package/command-line-interface/runner/command-parsing.js +0 -10
- package/command-line-interface/runner/command-parsing.js.map +1 -1
- package/command-line-interface/runner/config-inspect-handler.js +4 -79
- package/command-line-interface/runner/config-inspect-handler.js.map +1 -1
- package/command-line-interface/runner/failure-printing.js +5 -75
- package/command-line-interface/runner/failure-printing.js.map +1 -1
- package/command-line-interface/runner/github-api-request.js +0 -100
- package/command-line-interface/runner/github-api-request.js.map +1 -1
- package/command-line-interface/runner/github-release-client.js +2 -102
- package/command-line-interface/runner/github-release-client.js.map +1 -1
- package/command-line-interface/runner/github-release-notes.js +1 -74
- package/command-line-interface/runner/github-release-notes.js.map +1 -1
- package/command-line-interface/runner/github-repository.js +1 -14
- package/command-line-interface/runner/github-repository.js.map +1 -1
- package/command-line-interface/runner/pack-handler.js +4 -201
- package/command-line-interface/runner/pack-handler.js.map +1 -1
- package/command-line-interface/runner/package-dependencies-handler.js +3 -53
- package/command-line-interface/runner/package-dependencies-handler.js.map +1 -1
- package/command-line-interface/runner/package-tree-handler.js +3 -66
- package/command-line-interface/runner/package-tree-handler.js.map +1 -1
- package/command-line-interface/runner/preview-handler.js +4 -50
- package/command-line-interface/runner/preview-handler.js.map +1 -1
- package/command-line-interface/runner/progress-wiring.js +0 -32
- package/command-line-interface/runner/progress-wiring.js.map +1 -1
- package/command-line-interface/runner/publish-handler.js +2 -45
- package/command-line-interface/runner/publish-handler.js.map +1 -1
- package/command-line-interface/runner/release-diff-handler.js +3 -33
- package/command-line-interface/runner/release-diff-handler.js.map +1 -1
- package/command-line-interface/runner/release-handler.js +5 -246
- package/command-line-interface/runner/release-handler.js.map +1 -1
- package/command-line-interface/runner/release-output-files.js +2 -24
- package/command-line-interface/runner/release-output-files.js.map +1 -1
- package/command-line-interface/runner/release-plan-result-printing.js +2 -25
- package/command-line-interface/runner/release-plan-result-printing.js.map +1 -1
- package/command-line-interface/runner/release-pr-branch-commit.js +2 -108
- package/command-line-interface/runner/release-pr-branch-commit.js.map +1 -1
- package/command-line-interface/runner/release-pr-github-client.js +8 -289
- package/command-line-interface/runner/release-pr-github-client.js.map +1 -1
- package/command-line-interface/runner/release-pr-workflow-run-cancellation.js +3 -66
- package/command-line-interface/runner/release-pr-workflow-run-cancellation.js.map +1 -1
- package/command-line-interface/runner/release-pr-workflow-runs.js +1 -52
- package/command-line-interface/runner/release-pr-workflow-runs.js.map +1 -1
- package/command-line-interface/runner/release-preparation.js +4 -91
- package/command-line-interface/runner/release-preparation.js.map +1 -1
- package/command-line-interface/runner/release-publish-authorization.js +1 -66
- package/command-line-interface/runner/release-publish-authorization.js.map +1 -1
- package/command-line-interface/runner/release-pull-request-ci.js +0 -297
- package/command-line-interface/runner/release-pull-request-ci.js.map +1 -1
- package/command-line-interface/runner/release-pull-request-config.d.ts +0 -38
- package/command-line-interface/runner/release-pull-request-config.d.ts.map +1 -1
- package/command-line-interface/runner/release-pull-request-config.js +5 -51
- package/command-line-interface/runner/release-pull-request-config.js.map +1 -1
- package/command-line-interface/runner/release-pull-request-handler.js +9 -320
- package/command-line-interface/runner/release-pull-request-handler.js.map +1 -1
- package/command-line-interface/runner/release-pull-request-policy.js +0 -46
- package/command-line-interface/runner/release-pull-request-policy.js.map +1 -1
- package/command-line-interface/runner/release-pull-request-settings.js +2 -18
- package/command-line-interface/runner/release-pull-request-settings.js.map +1 -1
- package/command-line-interface/runner/report-persistence.js +2 -25
- package/command-line-interface/runner/report-persistence.js.map +1 -1
- package/command-line-interface/runner/runner-symbols.js +1 -10
- package/command-line-interface/runner/runner-symbols.js.map +1 -1
- package/command-line-interface/runner/runner.js +14 -385
- package/command-line-interface/runner/runner.js.map +1 -1
- package/command-line-interface/runner/terminal-error-chain.js +0 -101
- package/command-line-interface/runner/terminal-error-chain.js.map +1 -1
- package/command-line-interface/spinner/line-spinner-renderer.js +2 -49
- package/command-line-interface/spinner/line-spinner-renderer.js.map +1 -1
- package/command-line-interface/spinner/spinner-boot.js +1 -9
- package/command-line-interface/spinner/spinner-boot.js.map +1 -1
- package/command-line-interface/spinner/spinner-glyphs.js +1 -30
- package/command-line-interface/spinner/spinner-glyphs.js.map +1 -1
- package/command-line-interface/spinner/spinner-render-sequence.js +2 -30
- package/command-line-interface/spinner/spinner-render-sequence.js.map +1 -1
- package/command-line-interface/spinner/spinner-runtime.js +1 -30
- package/command-line-interface/spinner/spinner-runtime.js.map +1 -1
- package/command-line-interface/spinner/spinner-shared-state.js +0 -271
- package/command-line-interface/spinner/spinner-shared-state.js.map +1 -1
- package/command-line-interface/spinner/spinner-snapshots.js +1 -11
- package/command-line-interface/spinner/spinner-snapshots.js.map +1 -1
- package/command-line-interface/spinner/spinner-worker-backend.js +0 -42
- package/command-line-interface/spinner/spinner-worker-backend.js.map +1 -1
- package/command-line-interface/spinner/spinner-worker-loop.js +3 -39
- package/command-line-interface/spinner/spinner-worker-loop.js.map +1 -1
- package/command-line-interface/spinner/terminal-spinner-renderer.js +0 -54
- package/command-line-interface/spinner/terminal-spinner-renderer.js.map +1 -1
- package/common/path-tree.js +2 -100
- package/common/path-tree.js.map +1 -1
- package/package.json +2 -2
- package/packages/command-line-interface/pull-request-label-versioning.js +3 -80
- package/packages/command-line-interface/pull-request-label-versioning.js.map +1 -1
- package/packages/command-line-interface/spinner-boot.entry-point.js +3 -40
- package/packages/command-line-interface/spinner-boot.entry-point.js.map +1 -1
- package/packtory/changelog-source-file-history.js +2 -108
- package/packtory/changelog-source-file-history.js.map +1 -1
- package/packtory/packtory-changelog.js +5 -294
- package/packtory/packtory-changelog.js.map +1 -1
- package/report/html-renderer/artifact-tree-renderer.js +4 -28
- package/report/html-renderer/artifact-tree-renderer.js.map +1 -1
- package/report/html-renderer/diagnostics-renderer.js +2 -38
- package/report/html-renderer/diagnostics-renderer.js.map +1 -1
- package/report/html-renderer/diff-renderer.js +1 -28
- package/report/html-renderer/diff-renderer.js.map +1 -1
- package/report/html-renderer/eliminated-files-renderer.js +2 -15
- package/report/html-renderer/eliminated-files-renderer.js.map +1 -1
- package/report/html-renderer/html-escaping.js +0 -8
- package/report/html-renderer/html-escaping.js.map +1 -1
- package/report/html-renderer/html-primitives.js +1 -23
- package/report/html-renderer/html-primitives.js.map +1 -1
- package/report/html-renderer/html-renderer.js +4 -60
- package/report/html-renderer/html-renderer.js.map +1 -1
- package/report/html-renderer/html-styles.js +0 -176
- package/report/html-renderer/html-styles.js.map +1 -1
- package/report/html-renderer/package-renderer.js +6 -31
- package/report/html-renderer/package-renderer.js.map +1 -1
- package/report/preview/artifact-diff-builder.js +2 -19
- package/report/preview/artifact-diff-builder.js.map +1 -1
- package/report/preview/artifact-tree-builder.js +1 -19
- package/report/preview/artifact-tree-builder.js.map +1 -1
- package/report/preview/bundle-artifact-index.js +1 -15
- package/report/preview/bundle-artifact-index.js.map +1 -1
- package/report/preview/preview-document-state.js +0 -16
- package/report/preview/preview-document-state.js.map +1 -1
- package/report/preview/preview-document.js +6 -84
- package/report/preview/preview-document.js.map +1 -1
- package/report/preview/preview-result-inspectors.js +2 -33
- package/report/preview/preview-result-inspectors.js.map +1 -1
- package/report/preview/preview-summary.js +0 -25
- package/report/preview/preview-summary.js.map +1 -1
- package/report/release-diff/release-diff-document.js +2 -25
- package/report/release-diff/release-diff-document.js.map +1 -1
- package/report/release-diff/release-diff-summary.js +1 -39
- package/report/release-diff/release-diff-summary.js.map +1 -1
- package/report/terminal-renderer/terminal-artifact-renderer.js +2 -30
- package/report/terminal-renderer/terminal-artifact-renderer.js.map +1 -1
- package/report/terminal-renderer/terminal-package-dependencies-renderer.js +1 -77
- package/report/terminal-renderer/terminal-package-dependencies-renderer.js.map +1 -1
- package/report/terminal-renderer/terminal-package-renderer.js +2 -74
- package/report/terminal-renderer/terminal-package-renderer.js.map +1 -1
- package/report/terminal-renderer/terminal-package-tree-renderer.js +3 -16
- package/report/terminal-renderer/terminal-package-tree-renderer.js.map +1 -1
- package/report/terminal-renderer/terminal-preview-renderer-shared.js +3 -61
- package/report/terminal-renderer/terminal-preview-renderer-shared.js.map +1 -1
- package/report/terminal-renderer/terminal-preview-renderer.js +2 -54
- package/report/terminal-renderer/terminal-preview-renderer.js.map +1 -1
- package/report/terminal-renderer/terminal-release-diff-package-renderer.js +4 -145
- package/report/terminal-renderer/terminal-release-diff-package-renderer.js.map +1 -1
- package/report/terminal-renderer/terminal-release-diff-renderer.js +2 -48
- package/report/terminal-renderer/terminal-release-diff-renderer.js.map +1 -1
- package/sbom.cdx.json +10 -10
|
@@ -1,34 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
async function renderDocument(dependencies, document) {
|
|
5
|
-
if (document.previewable) {
|
|
6
|
-
await dependencies.pageOutput(renderTerminalReleaseDiff(document, {
|
|
7
|
-
filesOnly: dependencies.flags.filesOnly
|
|
8
|
-
}));
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
dependencies.log(renderFailureOnlyTerminalReleaseDiff(document).trimEnd());
|
|
12
|
-
}
|
|
13
|
-
async function releaseDiff(dependencies) {
|
|
14
|
-
const { packtory, spinnerRenderer, configLoader } = dependencies;
|
|
15
|
-
const config = await configLoader.load();
|
|
16
|
-
const outcome = await packtory.diffAgainstLatestPublished(config);
|
|
17
|
-
spinnerRenderer.stopAll();
|
|
18
|
-
const document = buildReleaseDiffDocument({
|
|
19
|
-
report: outcome.getReport(),
|
|
20
|
-
result: outcome.result,
|
|
21
|
-
packages: succeededResultsFrom(outcome.result)
|
|
22
|
-
});
|
|
23
|
-
await renderDocument(dependencies, document);
|
|
24
|
-
return outcome.result.isErr ? 1 : 0;
|
|
25
|
-
}
|
|
26
|
-
export async function runReleaseDiffHandler(dependencies) {
|
|
27
|
-
try {
|
|
28
|
-
return await releaseDiff(dependencies);
|
|
29
|
-
}
|
|
30
|
-
finally {
|
|
31
|
-
dependencies.spinnerRenderer.stopAll();
|
|
32
|
-
}
|
|
33
|
-
}
|
|
1
|
+
import "packtory/packtory/partial-result.js";
|
|
2
|
+
import "../../report/release-diff/release-diff-document.js";
|
|
3
|
+
import "../../report/terminal-renderer/terminal-release-diff-renderer.js";
|
|
34
4
|
//# sourceMappingURL=release-diff-handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"release-diff-handler.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/release-diff-handler.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"release-diff-handler.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/release-diff-handler.ts"],"names":[],"mappings":"AAAA,OAAqC,qCAAkC,CAAC;AAExE,OAAmE,oDAAoD,CAAC;AACxH,OAGO,kEAAkE,CAAC"}
|
|
@@ -1,247 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
const releaseCompletedMessage = 'Release completed.';
|
|
7
|
-
function toError(error) {
|
|
8
|
-
return error instanceof Error ? error : new Error(String(error));
|
|
9
|
-
}
|
|
10
|
-
function formatReleaseHandlerError(error) {
|
|
11
|
-
return formatTerminalError(toError(error));
|
|
12
|
-
}
|
|
13
|
-
function formatReleaseHandlerTrace(error) {
|
|
14
|
-
return formatTerminalErrorTrace(toError(error));
|
|
15
|
-
}
|
|
16
|
-
function hasAction(flags) {
|
|
17
|
-
return flags.publish || flags.tag || flags.push || flags.githubRelease;
|
|
18
|
-
}
|
|
19
|
-
function isPushWithoutTag(flags) {
|
|
20
|
-
return flags.push && !flags.tag;
|
|
21
|
-
}
|
|
22
|
-
function isGitHubReleaseWithoutTagPublication(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: isPushWithoutTag, message: '--push requires --tag' },
|
|
30
|
-
{ failed: isGitHubReleaseWithoutTagPublication, message: '--github-release requires --tag --push' },
|
|
31
|
-
{ failed: isReleaseWriteWithoutMutationApproval, message: 'Release writes require --no-dry-run' }
|
|
32
|
-
];
|
|
33
|
-
function collectFlagIssues(flags) {
|
|
34
|
-
return flagRules.flatMap(function (rule) {
|
|
35
|
-
return rule.failed(flags) ? [rule.message] : [];
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
function targetFromPlanPackage(packagePlan) {
|
|
39
|
-
return {
|
|
40
|
-
name: packagePlan.name,
|
|
41
|
-
version: packagePlan.nextVersion,
|
|
42
|
-
tagName: `${packagePlan.name}@${packagePlan.nextVersion}`,
|
|
43
|
-
targetHead: packagePlan.currentGitHead
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
function requireTargetHead(target) {
|
|
47
|
-
if (target.targetHead === undefined) {
|
|
48
|
-
throw new Error(`GitHub tag target for "${target.tagName}" could not be determined`);
|
|
49
|
-
}
|
|
50
|
-
return { ...target, targetHead: target.targetHead };
|
|
51
|
-
}
|
|
52
|
-
function selectChangedTargets(packages) {
|
|
53
|
-
return packages
|
|
54
|
-
.filter(function (packagePlan) {
|
|
55
|
-
return packagePlan.changed;
|
|
56
|
-
})
|
|
57
|
-
.map(targetFromPlanPackage);
|
|
58
|
-
}
|
|
59
|
-
function selectCurrentHeadPublishedTargets(packages) {
|
|
60
|
-
return packages
|
|
61
|
-
.filter(function (packagePlan) {
|
|
62
|
-
return (packagePlan.currentGitHead !== undefined &&
|
|
63
|
-
packagePlan.latestRegistryMetadata?.gitHead === packagePlan.currentGitHead);
|
|
64
|
-
})
|
|
65
|
-
.map(targetFromPlanPackage)
|
|
66
|
-
.map(requireTargetHead);
|
|
67
|
-
}
|
|
68
|
-
function mapTargetsByName(targets) {
|
|
69
|
-
return new Map(targets.map(function (target) {
|
|
70
|
-
return [target.name, target];
|
|
71
|
-
}));
|
|
72
|
-
}
|
|
73
|
-
function mergeTargets(...targetGroups) {
|
|
74
|
-
const targetsByName = new Map(targetGroups.flatMap(function (targets) {
|
|
75
|
-
return targets.map(function (target) {
|
|
76
|
-
return [target.name, target];
|
|
77
|
-
});
|
|
78
|
-
}));
|
|
79
|
-
return Array.from(targetsByName.values());
|
|
80
|
-
}
|
|
81
|
-
function assertTagRule(flags, changedTargets) {
|
|
82
|
-
if (flags.tag && !flags.publish && changedTargets.length > 0) {
|
|
83
|
-
throw new Error('--tag requires --publish unless registry latest already matches the current Git head');
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
function hasReleaseWork(flags, packages) {
|
|
87
|
-
if (selectChangedTargets(packages).length > 0) {
|
|
88
|
-
return true;
|
|
89
|
-
}
|
|
90
|
-
return (flags.tag || flags.githubRelease) && selectCurrentHeadPublishedTargets(packages).length > 0;
|
|
91
|
-
}
|
|
92
|
-
function formatPlanPackage(packagePlan) {
|
|
93
|
-
const previousVersion = packagePlan.previousVersion ?? 'unpublished';
|
|
94
|
-
return `- ${packagePlan.name}: ${previousVersion} -> ${packagePlan.nextVersion} (${packagePlan.artifactState})`;
|
|
95
|
-
}
|
|
96
|
-
function printReleasePlan(log, packages) {
|
|
97
|
-
const changedPackages = packages.filter(function (packagePlan) {
|
|
98
|
-
return packagePlan.changed;
|
|
99
|
-
});
|
|
100
|
-
if (changedPackages.length === 0) {
|
|
101
|
-
log('No packages need release.');
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
|
-
log(['Release plan:', ...changedPackages.map(formatPlanPackage)].join('\n'));
|
|
105
|
-
}
|
|
106
|
-
function readGitHubToken(dependencies) {
|
|
107
|
-
return dependencies.readEnvironmentVariable('GH_TOKEN') ?? dependencies.readEnvironmentVariable('GITHUB_TOKEN');
|
|
108
|
-
}
|
|
109
|
-
async function publishTargets(dependencies, planned, changedTargets) {
|
|
110
|
-
if (changedTargets.length === 0) {
|
|
111
|
-
return [];
|
|
112
|
-
}
|
|
113
|
-
const changedTargetsByName = mapTargetsByName(changedTargets);
|
|
114
|
-
const outcome = await dependencies.packtory.buildAndPublishAll(planned.config, {
|
|
115
|
-
dryRun: false,
|
|
116
|
-
stage: false,
|
|
117
|
-
collectReport: false
|
|
118
|
-
});
|
|
119
|
-
dependencies.spinnerRenderer.stopAll();
|
|
120
|
-
if (outcome.result.isErr) {
|
|
121
|
-
printPublishFailure(dependencies.log, outcome.result.error, false, dependencies.trace);
|
|
122
|
-
return undefined;
|
|
123
|
-
}
|
|
124
|
-
return outcome.result.value.flatMap(function (result) {
|
|
125
|
-
const plannedTarget = changedTargetsByName.get(result.bundle.name);
|
|
126
|
-
if (plannedTarget === undefined) {
|
|
127
|
-
return [];
|
|
128
|
-
}
|
|
129
|
-
return [
|
|
130
|
-
requireTargetHead({
|
|
131
|
-
name: result.bundle.name,
|
|
132
|
-
version: result.bundle.version,
|
|
133
|
-
tagName: `${result.bundle.name}@${result.bundle.version}`,
|
|
134
|
-
targetHead: plannedTarget.targetHead
|
|
135
|
-
})
|
|
136
|
-
];
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
async function createGitHubClientAsync(dependencies) {
|
|
140
|
-
const token = readGitHubToken(dependencies);
|
|
141
|
-
if (token === undefined) {
|
|
142
|
-
throw new Error('GH_TOKEN or GITHUB_TOKEN must be set to create release tags or GitHub releases');
|
|
143
|
-
}
|
|
144
|
-
return dependencies.createGitHubReleaseClient({
|
|
145
|
-
...parseGitHubRepositoryParts(await dependencies.readPackageInfo()),
|
|
146
|
-
token
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
async function preflightGitHubReleaseActions(dependencies, planned, changedTargets) {
|
|
150
|
-
if (!dependencies.flags.tag && !dependencies.flags.githubRelease) {
|
|
151
|
-
return undefined;
|
|
152
|
-
}
|
|
153
|
-
for (const target of changedTargets) {
|
|
154
|
-
requireTargetHead(target);
|
|
155
|
-
}
|
|
156
|
-
selectCurrentHeadPublishedTargets(planned.packages);
|
|
157
|
-
return await createGitHubClientAsync(dependencies);
|
|
158
|
-
}
|
|
159
|
-
async function ensureTags(client, targets) {
|
|
160
|
-
for (const target of targets) {
|
|
161
|
-
await client.ensureAnnotatedTag({
|
|
162
|
-
tagName: target.tagName,
|
|
163
|
-
message: target.tagName,
|
|
164
|
-
targetHead: target.targetHead
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
async function createGitHubReleases(dependencies, client, planned, targets) {
|
|
169
|
-
const changelog = await generateRequiredChangelog(dependencies, planned.config, planned.packages);
|
|
170
|
-
const releaseNotesByPackageName = await collectGitHubReleaseNotes(dependencies, changelog.config, targets, changelog.changelog);
|
|
171
|
-
for (const target of targets) {
|
|
172
|
-
await client.createReleaseIfMissing({
|
|
173
|
-
tagName: target.tagName,
|
|
174
|
-
name: target.tagName,
|
|
175
|
-
body: releaseNotesByPackageName.get(target.name) ?? missingGitHubReleaseNotes(target)
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
function reportFlagIssues(dependencies) {
|
|
180
|
-
const issues = collectFlagIssues(dependencies.flags);
|
|
181
|
-
if (issues.length > 0) {
|
|
182
|
-
dependencies.log(issues.join('\n'));
|
|
183
|
-
return 1;
|
|
184
|
-
}
|
|
185
|
-
return undefined;
|
|
186
|
-
}
|
|
187
|
-
function resolvePlannedReleaseExitCode(dependencies, packages) {
|
|
188
|
-
if (!hasAction(dependencies.flags)) {
|
|
189
|
-
printReleasePlan(dependencies.log, packages);
|
|
190
|
-
return 0;
|
|
191
|
-
}
|
|
192
|
-
if (!hasReleaseWork(dependencies.flags, packages)) {
|
|
193
|
-
dependencies.log('No packages need release.');
|
|
194
|
-
return 0;
|
|
195
|
-
}
|
|
196
|
-
return undefined;
|
|
197
|
-
}
|
|
198
|
-
async function finishReleaseActions(dependencies, planned, publishedTargets, client) {
|
|
199
|
-
const releaseTargets = mergeTargets(publishedTargets, selectCurrentHeadPublishedTargets(planned.packages));
|
|
200
|
-
if (releaseTargets.length === 0) {
|
|
201
|
-
return;
|
|
202
|
-
}
|
|
203
|
-
await ensureTags(client, releaseTargets);
|
|
204
|
-
if (dependencies.flags.githubRelease) {
|
|
205
|
-
await createGitHubReleases(dependencies, client, planned, releaseTargets);
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
async function runMutatingRelease(dependencies, planned) {
|
|
209
|
-
const changedTargets = selectChangedTargets(planned.packages);
|
|
210
|
-
assertTagRule(dependencies.flags, changedTargets);
|
|
211
|
-
const githubClient = await preflightGitHubReleaseActions(dependencies, planned, changedTargets);
|
|
212
|
-
const publishedTargets = await publishTargets(dependencies, planned, changedTargets);
|
|
213
|
-
if (publishedTargets === undefined) {
|
|
214
|
-
return 1;
|
|
215
|
-
}
|
|
216
|
-
if (githubClient !== undefined) {
|
|
217
|
-
await finishReleaseActions(dependencies, planned, publishedTargets, githubClient);
|
|
218
|
-
}
|
|
219
|
-
dependencies.log(releaseCompletedMessage);
|
|
220
|
-
return 0;
|
|
221
|
-
}
|
|
222
|
-
async function runRelease(dependencies) {
|
|
223
|
-
const flagExitCode = reportFlagIssues(dependencies);
|
|
224
|
-
if (flagExitCode !== undefined) {
|
|
225
|
-
return flagExitCode;
|
|
226
|
-
}
|
|
227
|
-
const planned = await loadPlannedRelease(dependencies);
|
|
228
|
-
if (planned === undefined) {
|
|
229
|
-
return 1;
|
|
230
|
-
}
|
|
231
|
-
return resolvePlannedReleaseExitCode(dependencies, planned.packages) ?? runMutatingRelease(dependencies, planned);
|
|
232
|
-
}
|
|
233
|
-
function stopSpinnersAndReturn(dependencies, exitCode) {
|
|
234
|
-
dependencies.spinnerRenderer.stopAll();
|
|
235
|
-
return exitCode;
|
|
236
|
-
}
|
|
237
|
-
export async function runReleaseHandler(dependencies) {
|
|
238
|
-
try {
|
|
239
|
-
return stopSpinnersAndReturn(dependencies, await runRelease(dependencies));
|
|
240
|
-
}
|
|
241
|
-
catch (error) {
|
|
242
|
-
const formatError = dependencies.trace ? formatReleaseHandlerTrace : formatReleaseHandlerError;
|
|
243
|
-
dependencies.log(formatError(error));
|
|
244
|
-
return stopSpinnersAndReturn(dependencies, 1);
|
|
245
|
-
}
|
|
246
|
-
}
|
|
1
|
+
import "./failure-printing.js";
|
|
2
|
+
import "./github-release-notes.js";
|
|
3
|
+
import "./github-repository.js";
|
|
4
|
+
import "./release-preparation.js";
|
|
5
|
+
import "./terminal-error-chain.js";
|
|
247
6
|
//# sourceMappingURL=release-handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"release-handler.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/release-handler.ts"],"names":[],"mappings":"AACA,
|
|
1
|
+
{"version":3,"file":"release-handler.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/release-handler.ts"],"names":[],"mappings":"AACA,OAAoC,uBAAuB,CAAC;AAE5D,OAAqE,2BAA2B,CAAC;AACjG,OAA2C,wBAAwB,CAAC;AACpE,OAKO,0BAA0B,CAAC;AAClC,OAA8D,2BAA2B,CAAC"}
|
|
@@ -1,25 +1,3 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
function normalizeRepositoryPath(filePath) {
|
|
4
|
-
return filePath.split(path.sep).join('/');
|
|
5
|
-
}
|
|
6
|
-
function toRepositoryRelativePath(workingDirectory, filePath) {
|
|
7
|
-
return normalizeRepositoryPath(path.relative(workingDirectory, filePath));
|
|
8
|
-
}
|
|
9
|
-
export function collectReleaseOutputFiles(input) {
|
|
10
|
-
return collectChangelogOutputFilePaths({ workingDirectory: input.workingDirectory }, input.config).map(function (output) {
|
|
11
|
-
return toRepositoryRelativePath(input.workingDirectory, output.filePath);
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
export function releaseCommitFilePath(workingDirectory, filePath) {
|
|
15
|
-
const normalizedWorkingDirectory = workingDirectory.replaceAll('\\', '/');
|
|
16
|
-
const normalizedFilePath = filePath.replaceAll('\\', '/');
|
|
17
|
-
const prefix = normalizedWorkingDirectory.endsWith('/')
|
|
18
|
-
? normalizedWorkingDirectory
|
|
19
|
-
: `${normalizedWorkingDirectory}/`;
|
|
20
|
-
if (normalizedFilePath.startsWith(prefix)) {
|
|
21
|
-
return normalizedFilePath.slice(prefix.length);
|
|
22
|
-
}
|
|
23
|
-
return normalizedFilePath;
|
|
24
|
-
}
|
|
1
|
+
import 'node:path';
|
|
2
|
+
import "./changelog-destinations.js";
|
|
25
3
|
//# sourceMappingURL=release-output-files.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"release-output-files.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/release-output-files.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"release-output-files.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/release-output-files.ts"],"names":[],"mappings":"AAAA,OAAiB,WAAW,CAAC;AAC7B,OAAsE,6BAA6B,CAAC"}
|
|
@@ -1,26 +1,3 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
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, trace) {
|
|
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(error.failures.map(trace ? formatTerminalErrorTraceBullet : formatTerminalErrorBullet).join('\n'));
|
|
16
|
-
}
|
|
17
|
-
export function collectReleasePlanPackages(result) {
|
|
18
|
-
if (result.isOk) {
|
|
19
|
-
return result.value.packages;
|
|
20
|
-
}
|
|
21
|
-
if (result.error.type === partialFailureType) {
|
|
22
|
-
return result.error.succeeded;
|
|
23
|
-
}
|
|
24
|
-
return [];
|
|
25
|
-
}
|
|
1
|
+
import "packtory/packtory/packtory-results.js";
|
|
2
|
+
import "./terminal-error-chain.js";
|
|
26
3
|
//# sourceMappingURL=release-plan-result-printing.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"release-plan-result-printing.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/release-plan-result-printing.ts"],"names":[],"mappings":"AACA,
|
|
1
|
+
{"version":3,"file":"release-plan-result-printing.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/release-plan-result-printing.ts"],"names":[],"mappings":"AACA,OAKO,uCAAoC,CAAC;AAC5C,OAA0E,2BAA2B,CAAC"}
|
|
@@ -1,109 +1,3 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
const missingGitHubResourceStatusCode = 404;
|
|
4
|
-
const sanitizedBranchNameLength = 80;
|
|
5
|
-
const temporaryBranchHeadLength = 12;
|
|
6
|
-
const temporaryBranchNamespace = 'packtory-release-pr-staging';
|
|
7
|
-
function sanitizeBranchName(branch) {
|
|
8
|
-
const readableName = (branch.match(/[A-Za-z0-9]+/gu) ?? [])
|
|
9
|
-
.join('-')
|
|
10
|
-
.slice(0, sanitizedBranchNameLength);
|
|
11
|
-
const branchHash = createHash('sha256').update(branch).digest('hex').slice(0, temporaryBranchHeadLength);
|
|
12
|
-
return `${readableName.length === 0 ? 'branch' : readableName}-${branchHash}`;
|
|
13
|
-
}
|
|
14
|
-
function temporaryBranchName(branch, expectedHeadOid) {
|
|
15
|
-
return [
|
|
16
|
-
temporaryBranchNamespace,
|
|
17
|
-
sanitizeBranchName(branch),
|
|
18
|
-
expectedHeadOid.slice(0, temporaryBranchHeadLength)
|
|
19
|
-
]
|
|
20
|
-
.join('-');
|
|
21
|
-
}
|
|
22
|
-
function createCommitOnBranchMutation() {
|
|
23
|
-
return `
|
|
24
|
-
mutation CreateCommitOnBranch(
|
|
25
|
-
$repositoryNameWithOwner: String!
|
|
26
|
-
$branchName: String!
|
|
27
|
-
$expectedHeadOid: GitObjectID!
|
|
28
|
-
$headline: String!
|
|
29
|
-
$additions: [FileAddition!]!
|
|
30
|
-
) {
|
|
31
|
-
createCommitOnBranch(input: {
|
|
32
|
-
branch: { repositoryNameWithOwner: $repositoryNameWithOwner, branchName: $branchName }
|
|
33
|
-
message: { headline: $headline }
|
|
34
|
-
expectedHeadOid: $expectedHeadOid
|
|
35
|
-
fileChanges: { additions: $additions }
|
|
36
|
-
}) {
|
|
37
|
-
commit {
|
|
38
|
-
oid
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
`;
|
|
43
|
-
}
|
|
44
|
-
export function createReleasePullRequestCommitClient(dependencies) {
|
|
45
|
-
async function readBranchRef(branch) {
|
|
46
|
-
const response = await resolveOptionalGitHubResponse(dependencies.git.getRef({
|
|
47
|
-
headers: dependencies.headers,
|
|
48
|
-
owner: dependencies.owner,
|
|
49
|
-
repo: dependencies.repo,
|
|
50
|
-
ref: `heads/${branch}`
|
|
51
|
-
}), missingGitHubResourceStatusCode);
|
|
52
|
-
return response?.data;
|
|
53
|
-
}
|
|
54
|
-
async function pointBranchAtHead(branch, targetHeadOid) {
|
|
55
|
-
const branchRef = await readBranchRef(branch);
|
|
56
|
-
if (branchRef === undefined) {
|
|
57
|
-
await resolveGitHubResponse(dependencies.git.createRef({
|
|
58
|
-
headers: dependencies.headers,
|
|
59
|
-
owner: dependencies.owner,
|
|
60
|
-
ref: `refs/heads/${branch}`,
|
|
61
|
-
repo: dependencies.repo,
|
|
62
|
-
sha: targetHeadOid
|
|
63
|
-
}));
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
if (branchRef.object.sha === targetHeadOid) {
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
await resolveGitHubResponse(dependencies.git.updateRef({
|
|
70
|
-
force: true,
|
|
71
|
-
headers: dependencies.headers,
|
|
72
|
-
owner: dependencies.owner,
|
|
73
|
-
ref: `heads/${branch}`,
|
|
74
|
-
repo: dependencies.repo,
|
|
75
|
-
sha: targetHeadOid
|
|
76
|
-
}));
|
|
77
|
-
}
|
|
78
|
-
async function deleteBranchRef(branch) {
|
|
79
|
-
await resolveGitHubResponseUnless(dependencies.git.deleteRef({
|
|
80
|
-
headers: dependencies.headers,
|
|
81
|
-
owner: dependencies.owner,
|
|
82
|
-
repo: dependencies.repo,
|
|
83
|
-
ref: `heads/${branch}`
|
|
84
|
-
}), isMissingGitHubReferenceError);
|
|
85
|
-
}
|
|
86
|
-
return {
|
|
87
|
-
async createCommitOnBranch(input) {
|
|
88
|
-
const temporaryBranch = temporaryBranchName(input.branch, input.expectedHeadOid);
|
|
89
|
-
await pointBranchAtHead(temporaryBranch, input.expectedHeadOid);
|
|
90
|
-
try {
|
|
91
|
-
const response = await resolveGitHubResponse(dependencies.graphql(createCommitOnBranchMutation(), {
|
|
92
|
-
additions: input.additions,
|
|
93
|
-
branchName: temporaryBranch,
|
|
94
|
-
expectedHeadOid: input.expectedHeadOid,
|
|
95
|
-
headers: dependencies.headers,
|
|
96
|
-
headline: input.message,
|
|
97
|
-
repositoryNameWithOwner: dependencies.repositoryNameWithOwner
|
|
98
|
-
}));
|
|
99
|
-
const releaseHead = response.createCommitOnBranch.commit.oid;
|
|
100
|
-
await pointBranchAtHead(input.branch, releaseHead);
|
|
101
|
-
return releaseHead;
|
|
102
|
-
}
|
|
103
|
-
finally {
|
|
104
|
-
await deleteBranchRef(temporaryBranch);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
};
|
|
108
|
-
}
|
|
1
|
+
import 'node:crypto';
|
|
2
|
+
import "./github-api-request.js";
|
|
109
3
|
//# sourceMappingURL=release-pr-branch-commit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"release-pr-branch-commit.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/release-pr-branch-commit.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"release-pr-branch-commit.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/release-pr-branch-commit.ts"],"names":[],"mappings":"AAAA,OAA2B,aAAa,CAAC;AACzC,OAKO,yBAAyB,CAAC;AA4DM"}
|