@packtory/cli 0.0.44 → 0.0.46
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-destinations.js +42 -0
- package/command-line-interface/runner/changelog-destinations.js.map +1 -1
- package/command-line-interface/runner/release-git-client.js +15 -0
- package/command-line-interface/runner/release-git-client.js.map +1 -1
- package/command-line-interface/runner/release-output-files.js +14 -0
- package/command-line-interface/runner/release-output-files.js.map +1 -0
- package/command-line-interface/runner/release-pr-github-client.js +257 -0
- package/command-line-interface/runner/release-pr-github-client.js.map +1 -0
- package/command-line-interface/runner/release-publish-authorization.js +67 -0
- package/command-line-interface/runner/release-publish-authorization.js.map +1 -0
- package/command-line-interface/runner/release-pull-request-ci.js +105 -0
- package/command-line-interface/runner/release-pull-request-ci.js.map +1 -0
- package/command-line-interface/runner/release-pull-request-config.js +45 -0
- package/command-line-interface/runner/release-pull-request-config.js.map +1 -0
- package/command-line-interface/runner/release-pull-request-handler.js +313 -0
- package/command-line-interface/runner/release-pull-request-handler.js.map +1 -0
- package/command-line-interface/runner/release-pull-request-policy.js +47 -0
- package/command-line-interface/runner/release-pull-request-policy.js.map +1 -0
- package/command-line-interface/runner/release-pull-request-settings.js +19 -0
- package/command-line-interface/runner/release-pull-request-settings.js.map +1 -0
- package/command-line-interface/runner/runner.js +102 -3
- package/command-line-interface/runner/runner.js.map +1 -1
- package/package.json +7 -3
- 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 -5
- package/packages/command-line-interface/command-line-interface.entry-point.js.map +1 -1
- package/packages/command-line-interface/pull-request-label-versioning.js +94 -0
- package/packages/command-line-interface/pull-request-label-versioning.js.map +1 -0
- package/packtory/packtory-changelog.js +1 -2
- package/packtory/packtory-changelog.js.map +1 -1
- package/readme.md +16 -0
- package/sbom.cdx.json +79 -11
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { safeParse } from '@schema-hub/zod-error-formatter';
|
|
2
|
+
import { z } from 'zod/mini';
|
|
3
|
+
import { releasePullRequestSettingsSchema } from "./release-pull-request-settings.js";
|
|
4
|
+
const releasePullRequestConfigContainerSchema = z.readonly(z.object({ releasePullRequest: z.optional(releasePullRequestSettingsSchema) }));
|
|
5
|
+
const defaultReleasePullRequestConfig = {
|
|
6
|
+
automationAuthor: 'github-actions[bot]',
|
|
7
|
+
body: 'Updates changelogs for the next release.',
|
|
8
|
+
branch: 'release/packtory',
|
|
9
|
+
commitSubject: 'Release packages',
|
|
10
|
+
defaultBranch: 'main',
|
|
11
|
+
githubActionsCi: undefined,
|
|
12
|
+
label: 'release',
|
|
13
|
+
title: 'Prepare release'
|
|
14
|
+
};
|
|
15
|
+
function resolveGitHubActionsCiConfig(settings) {
|
|
16
|
+
if (settings === undefined) {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
deleteActionRequiredPullRequestRuns: settings.deleteActionRequiredPullRequestRuns ?? true,
|
|
21
|
+
requiredStatusContexts: settings.requiredStatusContexts,
|
|
22
|
+
workflowFile: settings.workflowFile
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function resolveStringSetting(settings, setting) {
|
|
26
|
+
return settings?.[setting] ?? defaultReleasePullRequestConfig[setting];
|
|
27
|
+
}
|
|
28
|
+
export function resolveReleasePullRequestConfig(config) {
|
|
29
|
+
const { releasePullRequest } = config;
|
|
30
|
+
return {
|
|
31
|
+
automationAuthor: resolveStringSetting(releasePullRequest, 'automationAuthor'),
|
|
32
|
+
body: resolveStringSetting(releasePullRequest, 'body'),
|
|
33
|
+
branch: resolveStringSetting(releasePullRequest, 'branch'),
|
|
34
|
+
commitSubject: resolveStringSetting(releasePullRequest, 'commitSubject'),
|
|
35
|
+
defaultBranch: resolveStringSetting(releasePullRequest, 'defaultBranch'),
|
|
36
|
+
githubActionsCi: resolveGitHubActionsCiConfig(releasePullRequest?.githubActionsCi),
|
|
37
|
+
label: resolveStringSetting(releasePullRequest, 'label'),
|
|
38
|
+
title: resolveStringSetting(releasePullRequest, 'title')
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export function parseReleasePullRequestConfigContainer(config) {
|
|
42
|
+
const result = safeParse(releasePullRequestConfigContainerSchema, config);
|
|
43
|
+
return result.success ? result.data : undefined;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=release-pull-request-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-pull-request-config.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/release-pull-request-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAC7B,OAAO,EAAE,gCAAgC,EAAmC,MAAM,oCAAoC,CAAC;AAwBvH,MAAM,uCAAuC,GAAG,CAAC,CAAC,QAAQ,CACtD,CAAC,CAAC,MAAM,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC,EAAE,CAAC,CACjF,CAAC;AAEF,MAAM,+BAA+B,GAA6B;IAC9D,gBAAgB,EAAE,qBAAqB;IACvC,IAAI,EAAE,0CAA0C;IAChD,MAAM,EAAE,kBAAkB;IAC1B,aAAa,EAAE,kBAAkB;IACjC,aAAa,EAAE,MAAM;IACrB,eAAe,EAAE,SAAS;IAC1B,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,iBAAiB;CAC3B,CAAC;AAEF,SAAS,4BAA4B,CACjC,QAAuD;IAEvD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,OAAO;QACH,mCAAmC,EAAE,QAAQ,CAAC,mCAAmC,IAAI,IAAI;QACzF,sBAAsB,EAAE,QAAQ,CAAC,sBAAsB;QACvD,YAAY,EAAE,QAAQ,CAAC,YAAY;KACtC,CAAC;AACN,CAAC;AAED,SAAS,oBAAoB,CACzB,QAAgD,EAChD,OAAwC;IAExC,OAAO,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,+BAA+B,CAAC,OAAO,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,MAAyC;IACrF,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAAC;IACtC,OAAO;QACH,gBAAgB,EAAE,oBAAoB,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;QAC9E,IAAI,EAAE,oBAAoB,CAAC,kBAAkB,EAAE,MAAM,CAAC;QACtD,MAAM,EAAE,oBAAoB,CAAC,kBAAkB,EAAE,QAAQ,CAAC;QAC1D,aAAa,EAAE,oBAAoB,CAAC,kBAAkB,EAAE,eAAe,CAAC;QACxE,aAAa,EAAE,oBAAoB,CAAC,kBAAkB,EAAE,eAAe,CAAC;QACxE,eAAe,EAAE,4BAA4B,CAAC,kBAAkB,EAAE,eAAe,CAAC;QAClF,KAAK,EAAE,oBAAoB,CAAC,kBAAkB,EAAE,OAAO,CAAC;QACxD,KAAK,EAAE,oBAAoB,CAAC,kBAAkB,EAAE,OAAO,CAAC;KAC3D,CAAC;AACN,CAAC;AAED,MAAM,UAAU,sCAAsC,CAAC,MAAe;IAClE,MAAM,MAAM,GAAG,SAAS,CAAC,uCAAuC,EAAE,MAAM,CAAC,CAAC;IAC1E,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
import { parseValidConfig } from "./changelog-destinations.js";
|
|
2
|
+
import { formatGitHubRepositoryName, parseGitHubRepositoryParts } from "./github-repository.js";
|
|
3
|
+
import { runReleaseHandler } from "./release-handler.js";
|
|
4
|
+
import { authorizeReleasePublishFromCommit, authorizeReleasePublishFromPullRequest } from "./release-publish-authorization.js";
|
|
5
|
+
import { collectReleaseOutputFiles } from "./release-output-files.js";
|
|
6
|
+
import { runConfiguredGitHubActionsCi } from "./release-pull-request-ci.js";
|
|
7
|
+
import { parseReleasePullRequestConfigContainer, resolveReleasePullRequestConfig } from "./release-pull-request-config.js";
|
|
8
|
+
import { validateReleaseMergeGroupPolicy, validateReleasePullRequestPolicy } from "./release-pull-request-policy.js";
|
|
9
|
+
function formatHandlerError(error) {
|
|
10
|
+
return error instanceof Error ? error.message : String(error);
|
|
11
|
+
}
|
|
12
|
+
function readGitHubToken(dependencies) {
|
|
13
|
+
const token = dependencies.readEnvironmentVariable('GH_TOKEN') ?? dependencies.readEnvironmentVariable('GITHUB_TOKEN');
|
|
14
|
+
if (token === undefined) {
|
|
15
|
+
throw new Error('GH_TOKEN or GITHUB_TOKEN must be set');
|
|
16
|
+
}
|
|
17
|
+
return token;
|
|
18
|
+
}
|
|
19
|
+
function parseGitHubRepositoryName(repositoryName) {
|
|
20
|
+
const ownerSeparatorIndex = repositoryName.indexOf('/');
|
|
21
|
+
const owner = repositoryName.slice(0, ownerSeparatorIndex);
|
|
22
|
+
const repo = repositoryName.slice(ownerSeparatorIndex + 1);
|
|
23
|
+
if (!repositoryName.includes('/') || owner.length === 0 || repo.length === 0 || repo.includes('/')) {
|
|
24
|
+
throw new Error('GITHUB_REPOSITORY must use owner/repo format');
|
|
25
|
+
}
|
|
26
|
+
return { owner, repo };
|
|
27
|
+
}
|
|
28
|
+
async function readGitHubRepository(dependencies) {
|
|
29
|
+
const repositoryName = dependencies.readEnvironmentVariable('GITHUB_REPOSITORY');
|
|
30
|
+
if (repositoryName !== undefined) {
|
|
31
|
+
const { owner, repo } = parseGitHubRepositoryName(repositoryName);
|
|
32
|
+
return { name: repositoryName, owner, repo };
|
|
33
|
+
}
|
|
34
|
+
const packageInfo = await dependencies.readPackageInfo();
|
|
35
|
+
const repository = parseGitHubRepositoryParts(packageInfo);
|
|
36
|
+
return { ...repository, name: formatGitHubRepositoryName(packageInfo) };
|
|
37
|
+
}
|
|
38
|
+
async function createGitHubClient(dependencies) {
|
|
39
|
+
const repository = await readGitHubRepository(dependencies);
|
|
40
|
+
return {
|
|
41
|
+
client: dependencies.createReleasePullRequestGitHubClient({
|
|
42
|
+
owner: repository.owner,
|
|
43
|
+
repo: repository.repo,
|
|
44
|
+
token: readGitHubToken(dependencies)
|
|
45
|
+
}),
|
|
46
|
+
repository: repository.name
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function isRecord(value) {
|
|
50
|
+
return typeof value === 'object' && value !== null;
|
|
51
|
+
}
|
|
52
|
+
const isGitHubEvent = isRecord;
|
|
53
|
+
function parseReleasePullRequestConfig(dependencies, rawConfig) {
|
|
54
|
+
const parsedConfig = parseValidConfig(rawConfig);
|
|
55
|
+
if (parsedConfig === undefined) {
|
|
56
|
+
throw new Error('The loaded config is invalid for release PR management');
|
|
57
|
+
}
|
|
58
|
+
const releasePullRequestConfigContainer = parseReleasePullRequestConfigContainer(rawConfig);
|
|
59
|
+
if (releasePullRequestConfigContainer === undefined) {
|
|
60
|
+
throw new Error('The loaded config is invalid for release PR management');
|
|
61
|
+
}
|
|
62
|
+
const config = resolveReleasePullRequestConfig(releasePullRequestConfigContainer);
|
|
63
|
+
return {
|
|
64
|
+
config,
|
|
65
|
+
policyConfig: {
|
|
66
|
+
allowedFiles: new Set(collectReleaseOutputFiles({ config: parsedConfig, workingDirectory: dependencies.workingDirectory })),
|
|
67
|
+
automationAuthor: config.automationAuthor,
|
|
68
|
+
branch: config.branch,
|
|
69
|
+
commitSubject: config.commitSubject,
|
|
70
|
+
defaultBranch: config.defaultBranch,
|
|
71
|
+
label: config.label,
|
|
72
|
+
title: config.title
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
async function loadReleasePullRequestConfig(dependencies) {
|
|
77
|
+
return parseReleasePullRequestConfig(dependencies, await dependencies.configLoader.load());
|
|
78
|
+
}
|
|
79
|
+
async function runPrepareRelease(dependencies) {
|
|
80
|
+
return runReleaseHandler({
|
|
81
|
+
createGitHubReleaseClient: dependencies.createGitHubReleaseClient,
|
|
82
|
+
createPrLogEngine: dependencies.createPrLogEngine,
|
|
83
|
+
currentDate: dependencies.currentDate,
|
|
84
|
+
fileManager: dependencies.fileManager,
|
|
85
|
+
flags: {
|
|
86
|
+
commit: true,
|
|
87
|
+
githubRelease: false,
|
|
88
|
+
noDryRun: true,
|
|
89
|
+
publish: false,
|
|
90
|
+
push: false,
|
|
91
|
+
tag: false,
|
|
92
|
+
writeChangelog: true
|
|
93
|
+
},
|
|
94
|
+
gitClient: dependencies.gitClient,
|
|
95
|
+
log: dependencies.log,
|
|
96
|
+
packtory: dependencies.packtory,
|
|
97
|
+
readEnvironmentVariable: dependencies.readEnvironmentVariable,
|
|
98
|
+
readPackageInfo: dependencies.readPackageInfo,
|
|
99
|
+
spinnerRenderer: dependencies.spinnerRenderer,
|
|
100
|
+
configLoader: dependencies.configLoader,
|
|
101
|
+
workingDirectory: dependencies.workingDirectory
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
async function closeReleaseState(dependencies, client, config) {
|
|
105
|
+
await client.closeOpenReleasePullRequests({ baseBranch: config.defaultBranch, releaseBranch: config.branch });
|
|
106
|
+
await dependencies.gitClient.deleteRemoteBranch(config.branch);
|
|
107
|
+
}
|
|
108
|
+
async function prepareReleasePullRequest(dependencies) {
|
|
109
|
+
const originalHead = await dependencies.gitClient.currentHead();
|
|
110
|
+
const releaseExitCode = await runPrepareRelease(dependencies);
|
|
111
|
+
if (releaseExitCode !== 0) {
|
|
112
|
+
throw new Error('Release preparation failed');
|
|
113
|
+
}
|
|
114
|
+
const releaseHead = await dependencies.gitClient.currentHead();
|
|
115
|
+
return releaseHead === originalHead ? undefined : releaseHead;
|
|
116
|
+
}
|
|
117
|
+
async function updateReleasePullRequest(input) {
|
|
118
|
+
const { client, config, dependencies, releaseHead } = input;
|
|
119
|
+
await dependencies.gitClient.pushHeadToBranch(config.branch);
|
|
120
|
+
const pullRequestNumber = await client.createOrUpdateReleasePullRequest({
|
|
121
|
+
baseBranch: config.defaultBranch,
|
|
122
|
+
body: config.body,
|
|
123
|
+
label: config.label,
|
|
124
|
+
releaseBranch: config.branch,
|
|
125
|
+
title: config.title
|
|
126
|
+
});
|
|
127
|
+
const ciSucceeded = await runConfiguredGitHubActionsCi({
|
|
128
|
+
client,
|
|
129
|
+
config,
|
|
130
|
+
headSha: releaseHead,
|
|
131
|
+
sleep: dependencies.sleep
|
|
132
|
+
});
|
|
133
|
+
dependencies.log(`Release PR #${pullRequestNumber} points at ${releaseHead}`);
|
|
134
|
+
return ciSucceeded ? 0 : 1;
|
|
135
|
+
}
|
|
136
|
+
async function finishReleasePullRequestMaintenance(input) {
|
|
137
|
+
if (input.releaseHead === undefined) {
|
|
138
|
+
await closeReleaseState(input.dependencies, input.client, input.config);
|
|
139
|
+
input.dependencies.log('No release content remains');
|
|
140
|
+
return 0;
|
|
141
|
+
}
|
|
142
|
+
return updateReleasePullRequest({
|
|
143
|
+
client: input.client,
|
|
144
|
+
config: input.config,
|
|
145
|
+
dependencies: input.dependencies,
|
|
146
|
+
releaseHead: input.releaseHead
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
async function runMaintain(dependencies) {
|
|
150
|
+
if (!dependencies.flags.noDryRun) {
|
|
151
|
+
dependencies.log('Release PR writes require --no-dry-run');
|
|
152
|
+
return 1;
|
|
153
|
+
}
|
|
154
|
+
const loadedConfig = await loadReleasePullRequestConfig(dependencies);
|
|
155
|
+
const { client } = await createGitHubClient(dependencies);
|
|
156
|
+
const releaseHead = await prepareReleasePullRequest(dependencies);
|
|
157
|
+
return finishReleasePullRequestMaintenance({ client, config: loadedConfig.config, dependencies, releaseHead });
|
|
158
|
+
}
|
|
159
|
+
function readRequiredEnvironmentVariable(dependencies, name) {
|
|
160
|
+
const value = dependencies.readEnvironmentVariable(name);
|
|
161
|
+
if (value === undefined || value.length === 0) {
|
|
162
|
+
throw new Error(`${name} must be set`);
|
|
163
|
+
}
|
|
164
|
+
return value;
|
|
165
|
+
}
|
|
166
|
+
async function readGitHubEvent(dependencies) {
|
|
167
|
+
const eventPath = readRequiredEnvironmentVariable(dependencies, 'GITHUB_EVENT_PATH');
|
|
168
|
+
const parsedEvent = JSON.parse(await dependencies.fileManager.readFile(eventPath));
|
|
169
|
+
if (!isGitHubEvent(parsedEvent)) {
|
|
170
|
+
throw new Error('GitHub event payload must be an object');
|
|
171
|
+
}
|
|
172
|
+
return parsedEvent;
|
|
173
|
+
}
|
|
174
|
+
async function toPolicyInput(input) {
|
|
175
|
+
const pullRequest = await input.client.getPullRequestHead(input.pullRequestNumber);
|
|
176
|
+
return {
|
|
177
|
+
author: pullRequest.author,
|
|
178
|
+
changedFiles: pullRequest.changedFiles,
|
|
179
|
+
expectedBaseSha: input.expectedBaseSha,
|
|
180
|
+
headRef: pullRequest.headRef,
|
|
181
|
+
labels: pullRequest.labels,
|
|
182
|
+
parentShas: pullRequest.parentShas,
|
|
183
|
+
subject: pullRequest.subject,
|
|
184
|
+
title: pullRequest.title
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
async function runPullRequestValidation(input) {
|
|
188
|
+
const pullRequestNumber = input.event.pull_request?.number;
|
|
189
|
+
if (pullRequestNumber === undefined) {
|
|
190
|
+
throw new Error('GitHub pull_request event payload is missing pull_request.number');
|
|
191
|
+
}
|
|
192
|
+
const expectedBaseSha = await input.client.getBranchHeadSha(input.config.config.defaultBranch);
|
|
193
|
+
const policyInput = await toPolicyInput({ client: input.client, expectedBaseSha, pullRequestNumber });
|
|
194
|
+
if (policyInput.labels.includes(input.config.config.label)) {
|
|
195
|
+
validateReleasePullRequestPolicy(policyInput, input.config.policyConfig);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
async function runMergeGroupValidation(input) {
|
|
199
|
+
const headSha = input.event.merge_group?.head_sha;
|
|
200
|
+
const expectedBaseSha = input.event.merge_group?.base_sha;
|
|
201
|
+
if (headSha === undefined || expectedBaseSha === undefined) {
|
|
202
|
+
throw new Error('GitHub merge_group event payload is missing merge group SHAs');
|
|
203
|
+
}
|
|
204
|
+
const pullRequests = await input.client.listCommitPullRequests(headSha);
|
|
205
|
+
const policyInputs = await Promise.all(pullRequests.map(async (pullRequest) => {
|
|
206
|
+
return toPolicyInput({ client: input.client, expectedBaseSha, pullRequestNumber: pullRequest.number });
|
|
207
|
+
}));
|
|
208
|
+
validateReleaseMergeGroupPolicy({ pullRequests: policyInputs }, input.config.policyConfig);
|
|
209
|
+
}
|
|
210
|
+
async function validateGitHubEvent(input) {
|
|
211
|
+
if (input.eventName === 'pull_request') {
|
|
212
|
+
await runPullRequestValidation(input);
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
if (input.eventName === 'merge_group') {
|
|
216
|
+
await runMergeGroupValidation(input);
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
throw new Error('release-pr validate only supports pull_request and merge_group events');
|
|
220
|
+
}
|
|
221
|
+
async function runValidate(dependencies) {
|
|
222
|
+
const loadedConfig = await loadReleasePullRequestConfig(dependencies);
|
|
223
|
+
const { client } = await createGitHubClient(dependencies);
|
|
224
|
+
const eventName = readRequiredEnvironmentVariable(dependencies, 'GITHUB_EVENT_NAME');
|
|
225
|
+
const event = await readGitHubEvent(dependencies);
|
|
226
|
+
await validateGitHubEvent({ client, config: loadedConfig, event, eventName });
|
|
227
|
+
dependencies.log('Release PR policy passed.');
|
|
228
|
+
return 0;
|
|
229
|
+
}
|
|
230
|
+
function formatAuthorizationOutput(authorization) {
|
|
231
|
+
if (!authorization.shouldPublish) {
|
|
232
|
+
return ['should_publish=false'];
|
|
233
|
+
}
|
|
234
|
+
return [
|
|
235
|
+
'should_publish=true',
|
|
236
|
+
`publish_commit_sha=${authorization.publishCommitSha}`,
|
|
237
|
+
`release_commit_sha=${authorization.releaseCommitSha}`,
|
|
238
|
+
`release_pull_request_number=${authorization.releasePullRequestNumber}`
|
|
239
|
+
];
|
|
240
|
+
}
|
|
241
|
+
async function readExistingOutput(dependencies, githubOutputPath) {
|
|
242
|
+
try {
|
|
243
|
+
return await dependencies.fileManager.readFile(githubOutputPath);
|
|
244
|
+
}
|
|
245
|
+
catch {
|
|
246
|
+
return '';
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
async function writeAuthorizationOutput(dependencies, authorization) {
|
|
250
|
+
const output = `${formatAuthorizationOutput(authorization).join('\n')}\n`;
|
|
251
|
+
const githubOutputPath = dependencies.readEnvironmentVariable('GITHUB_OUTPUT');
|
|
252
|
+
if (githubOutputPath === undefined) {
|
|
253
|
+
dependencies.log(output.trimEnd());
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
await dependencies.fileManager.writeFile(githubOutputPath, `${await readExistingOutput(dependencies, githubOutputPath)}${output}`);
|
|
257
|
+
}
|
|
258
|
+
async function authorizeManualPublish(input, releasePullRequestNumber) {
|
|
259
|
+
const refName = readRequiredEnvironmentVariable(input.dependencies, 'GITHUB_REF_NAME');
|
|
260
|
+
if (refName !== input.config.config.defaultBranch) {
|
|
261
|
+
throw new Error(`Manual release publish retries must run from ${input.config.config.defaultBranch}`);
|
|
262
|
+
}
|
|
263
|
+
return authorizeReleasePublishFromPullRequest({
|
|
264
|
+
config: input.config.policyConfig,
|
|
265
|
+
pullRequest: await input.github.client.getPullRequest(Number(releasePullRequestNumber)),
|
|
266
|
+
repository: input.github.repository
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
async function authorizePushPublish(input) {
|
|
270
|
+
const commitSha = readRequiredEnvironmentVariable(input.dependencies, 'GITHUB_SHA');
|
|
271
|
+
return authorizeReleasePublishFromCommit({
|
|
272
|
+
commitSha,
|
|
273
|
+
config: input.config.policyConfig,
|
|
274
|
+
pullRequests: await input.github.client.listCommitPullRequests(commitSha),
|
|
275
|
+
repository: input.github.repository
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
async function authorizePublish(input) {
|
|
279
|
+
const { releasePullRequestNumber } = input.dependencies.flags;
|
|
280
|
+
if (releasePullRequestNumber !== undefined) {
|
|
281
|
+
return authorizeManualPublish(input, releasePullRequestNumber);
|
|
282
|
+
}
|
|
283
|
+
return authorizePushPublish(input);
|
|
284
|
+
}
|
|
285
|
+
async function runAuthorizePublish(dependencies) {
|
|
286
|
+
const config = await loadReleasePullRequestConfig(dependencies);
|
|
287
|
+
const github = await createGitHubClient(dependencies);
|
|
288
|
+
await writeAuthorizationOutput(dependencies, await authorizePublish({ config, dependencies, github }));
|
|
289
|
+
return 0;
|
|
290
|
+
}
|
|
291
|
+
async function runReleasePullRequestCommand(dependencies) {
|
|
292
|
+
if (dependencies.flags.command === 'maintain') {
|
|
293
|
+
return runMaintain({ ...dependencies, flags: dependencies.flags });
|
|
294
|
+
}
|
|
295
|
+
if (dependencies.flags.command === 'validate') {
|
|
296
|
+
return runValidate(dependencies);
|
|
297
|
+
}
|
|
298
|
+
return runAuthorizePublish(dependencies);
|
|
299
|
+
}
|
|
300
|
+
function stopSpinnersAndReturn(dependencies, exitCode) {
|
|
301
|
+
dependencies.spinnerRenderer.stopAll();
|
|
302
|
+
return exitCode;
|
|
303
|
+
}
|
|
304
|
+
export async function runReleasePullRequestHandler(dependencies) {
|
|
305
|
+
try {
|
|
306
|
+
return stopSpinnersAndReturn(dependencies, await runReleasePullRequestCommand(dependencies));
|
|
307
|
+
}
|
|
308
|
+
catch (error) {
|
|
309
|
+
dependencies.log(formatHandlerError(error));
|
|
310
|
+
return stopSpinnersAndReturn(dependencies, 1);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
//# sourceMappingURL=release-pull-request-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-pull-request-handler.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/release-pull-request-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
function requirePolicy(condition, message) {
|
|
2
|
+
if (!condition) {
|
|
3
|
+
throw new Error(message);
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
function validateReleaseLabelSet(labels, config) {
|
|
7
|
+
requirePolicy(labels.length === 1 && labels[0] === config.label, `Release PRs must only have the ${config.label} label`);
|
|
8
|
+
}
|
|
9
|
+
function validateReleaseChangedFiles(changedFiles, config) {
|
|
10
|
+
requirePolicy(changedFiles.length > 0, 'Release PRs must change release output files');
|
|
11
|
+
for (const changedFile of changedFiles) {
|
|
12
|
+
requirePolicy(config.allowedFiles.has(changedFile), `Unexpected release PR file change: ${changedFile}`);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function validateReleaseIdentity(input, config) {
|
|
16
|
+
validateReleaseLabelSet(input.labels, config);
|
|
17
|
+
requirePolicy(input.author === config.automationAuthor, `Release PRs must be authored by ${config.automationAuthor}`);
|
|
18
|
+
requirePolicy(input.headRef === config.branch, `Release PRs must use ${config.branch}`);
|
|
19
|
+
requirePolicy(input.title === config.title, `Release PR title must be ${config.title}`);
|
|
20
|
+
requirePolicy(input.subject === config.commitSubject, `Release PR commit subject must be ${config.commitSubject}`);
|
|
21
|
+
}
|
|
22
|
+
export function validateReleasePullRequestPolicy(input, config) {
|
|
23
|
+
validateReleaseIdentity(input, config);
|
|
24
|
+
requirePolicy(input.parentShas.length === 1, 'Release PR head must have exactly one parent');
|
|
25
|
+
requirePolicy(input.parentShas[0] === input.expectedBaseSha, 'Release PR head must be based on expected main');
|
|
26
|
+
validateReleaseChangedFiles(input.changedFiles, config);
|
|
27
|
+
}
|
|
28
|
+
export function validateReleasePullRequestPublishPolicy(input, config, expectedMergeCommitSha) {
|
|
29
|
+
validateReleaseIdentity(input, config);
|
|
30
|
+
requirePolicy(input.baseRef === config.defaultBranch, `Release PR base must be ${config.defaultBranch}`);
|
|
31
|
+
requirePolicy(input.headRepository === input.repository, 'Release PRs must come from the release repository');
|
|
32
|
+
requirePolicy(input.merged, 'Release PR must be merged');
|
|
33
|
+
requirePolicy(input.mergeCommitSha === expectedMergeCommitSha, `Release PR merge commit must be ${expectedMergeCommitSha}`);
|
|
34
|
+
validateReleaseChangedFiles(input.changedFiles, config);
|
|
35
|
+
}
|
|
36
|
+
export function validateReleaseMergeGroupPolicy(input, config) {
|
|
37
|
+
const releasePullRequests = input.pullRequests.filter((pullRequest) => {
|
|
38
|
+
return pullRequest.labels.includes(config.label);
|
|
39
|
+
});
|
|
40
|
+
if (releasePullRequests.length > 0 && input.pullRequests.length !== 1) {
|
|
41
|
+
throw new Error('Release PRs must not be grouped with other pull requests');
|
|
42
|
+
}
|
|
43
|
+
for (const pullRequest of releasePullRequests) {
|
|
44
|
+
validateReleasePullRequestPolicy(pullRequest, config);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=release-pull-request-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-pull-request-policy.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/release-pull-request-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from 'zod/mini';
|
|
2
|
+
import { nonEmptyStringSchema } from "packtory/config/base-validations.js";
|
|
3
|
+
const githubActionsWorkflowDispatchSchema = z.readonly(z.strictObject({
|
|
4
|
+
trigger: z.literal('workflow-dispatch'),
|
|
5
|
+
workflowFile: nonEmptyStringSchema,
|
|
6
|
+
requiredStatusContexts: z.readonly(z.tuple([nonEmptyStringSchema], nonEmptyStringSchema)),
|
|
7
|
+
deleteActionRequiredPullRequestRuns: z.optional(z.boolean())
|
|
8
|
+
}));
|
|
9
|
+
export const releasePullRequestSettingsSchema = z.readonly(z.strictObject({
|
|
10
|
+
automationAuthor: z.optional(nonEmptyStringSchema),
|
|
11
|
+
body: z.optional(nonEmptyStringSchema),
|
|
12
|
+
branch: z.optional(nonEmptyStringSchema),
|
|
13
|
+
commitSubject: z.optional(nonEmptyStringSchema),
|
|
14
|
+
defaultBranch: z.optional(nonEmptyStringSchema),
|
|
15
|
+
githubActionsCi: z.optional(githubActionsWorkflowDispatchSchema),
|
|
16
|
+
label: z.optional(nonEmptyStringSchema),
|
|
17
|
+
title: z.optional(nonEmptyStringSchema)
|
|
18
|
+
}));
|
|
19
|
+
//# sourceMappingURL=release-pull-request-settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-pull-request-settings.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/release-pull-request-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,MAAM,mCAAmC,GAAG,CAAC,CAAC,QAAQ,CAClD,CAAC,CAAC,YAAY,CAAC;IACX,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC;IACvC,YAAY,EAAE,oBAAoB;IAClC,sBAAsB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC,CAAC;IACzF,mCAAmC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;CAC/D,CAAC,CACL,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC,QAAQ,CACtD,CAAC,CAAC,YAAY,CAAC;IACX,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAClD,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACtC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACxC,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAC/C,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAC/C,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IAChE,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACvC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;CAC1C,CAAC,CACL,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/* eslint-disable import/max-dependencies -- the CLI runner wires
|
|
2
|
-
import { binary, command, flag, oneOf, option, positional, runSafely, string, subcommands } from 'cmd-ts';
|
|
1
|
+
/* eslint-disable import/max-dependencies -- the CLI runner wires seven subcommands plus shared dependencies */
|
|
2
|
+
import { binary, command, flag, oneOf, option, optional as optionalType, positional, runSafely, string, subcommands } from 'cmd-ts';
|
|
3
3
|
import { runChangelogHandler } from "./changelog-handler.js";
|
|
4
4
|
import { getParseExitCode } from "./command-parsing.js";
|
|
5
5
|
import { runPackHandler } from "./pack-handler.js";
|
|
@@ -8,15 +8,20 @@ import { runReleaseDiffHandler } from "./release-diff-handler.js";
|
|
|
8
8
|
import { registerProgressListeners } from "./progress-wiring.js";
|
|
9
9
|
import { runPublishHandler } from "./publish-handler.js";
|
|
10
10
|
import { runReleaseHandler } from "./release-handler.js";
|
|
11
|
+
import { runReleasePullRequestHandler } from "./release-pull-request-handler.js";
|
|
11
12
|
const publishCommandName = 'publish';
|
|
12
13
|
const previewCommandName = 'preview';
|
|
13
14
|
const releaseDiffCommandName = 'release-diff';
|
|
14
15
|
const releaseCommandName = 'release';
|
|
16
|
+
const releasePullRequestCommandName = 'release-pr';
|
|
17
|
+
const authorizePublishReleasePullRequestCommandName = 'authorize-publish';
|
|
15
18
|
const changelogCommandName = 'changelog';
|
|
19
|
+
const maintainReleasePullRequestCommandName = 'maintain';
|
|
16
20
|
const packCommandName = 'pack';
|
|
21
|
+
const validateReleasePullRequestCommandName = 'validate';
|
|
17
22
|
const defaultPackVersion = '0.0.0';
|
|
18
23
|
export function createCommandLineInterfaceRunner(dependencies) {
|
|
19
|
-
const { log, packtory, progressBroadcaster, spinnerRenderer, configLoader, fileManager, pageOutput, openFile, createTemporaryFilePath, createGitHubReleaseClient, createPrLogEngine, currentDate, readEnvironmentVariable, readPackageInfo, releaseGitClient, workingDirectory } = dependencies;
|
|
24
|
+
const { log, packtory, progressBroadcaster, spinnerRenderer, configLoader, fileManager, pageOutput, openFile, createTemporaryFilePath, createGitHubReleaseClient, createReleasePullRequestGitHubClient, createPrLogEngine, currentDate, readEnvironmentVariable, readPackageInfo, releaseGitClient, sleep, workingDirectory } = dependencies;
|
|
20
25
|
let exitCode = 0;
|
|
21
26
|
const baseCommand = subcommands({
|
|
22
27
|
name: 'packtory',
|
|
@@ -103,6 +108,100 @@ export function createCommandLineInterfaceRunner(dependencies) {
|
|
|
103
108
|
});
|
|
104
109
|
}
|
|
105
110
|
}),
|
|
111
|
+
[releasePullRequestCommandName]: subcommands({
|
|
112
|
+
name: releasePullRequestCommandName,
|
|
113
|
+
cmds: {
|
|
114
|
+
[maintainReleasePullRequestCommandName]: command({
|
|
115
|
+
name: maintainReleasePullRequestCommandName,
|
|
116
|
+
description: 'Creates or updates the generated release PR.',
|
|
117
|
+
args: {
|
|
118
|
+
noDryRun: flag({ long: 'no-dry-run' })
|
|
119
|
+
},
|
|
120
|
+
async handler({ noDryRun }) {
|
|
121
|
+
exitCode = await runReleasePullRequestHandler({
|
|
122
|
+
log,
|
|
123
|
+
packtory,
|
|
124
|
+
spinnerRenderer,
|
|
125
|
+
configLoader,
|
|
126
|
+
fileManager,
|
|
127
|
+
createPrLogEngine,
|
|
128
|
+
createGitHubReleaseClient,
|
|
129
|
+
createReleasePullRequestGitHubClient,
|
|
130
|
+
currentDate,
|
|
131
|
+
readEnvironmentVariable,
|
|
132
|
+
readPackageInfo,
|
|
133
|
+
workingDirectory,
|
|
134
|
+
gitClient: releaseGitClient,
|
|
135
|
+
sleep,
|
|
136
|
+
flags: {
|
|
137
|
+
command: maintainReleasePullRequestCommandName,
|
|
138
|
+
noDryRun,
|
|
139
|
+
releasePullRequestNumber: undefined
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}),
|
|
144
|
+
[validateReleasePullRequestCommandName]: command({
|
|
145
|
+
name: validateReleasePullRequestCommandName,
|
|
146
|
+
description: 'Validates the release PR policy for the current GitHub event.',
|
|
147
|
+
args: {},
|
|
148
|
+
async handler() {
|
|
149
|
+
exitCode = await runReleasePullRequestHandler({
|
|
150
|
+
log,
|
|
151
|
+
packtory,
|
|
152
|
+
spinnerRenderer,
|
|
153
|
+
configLoader,
|
|
154
|
+
fileManager,
|
|
155
|
+
createPrLogEngine,
|
|
156
|
+
createGitHubReleaseClient,
|
|
157
|
+
createReleasePullRequestGitHubClient,
|
|
158
|
+
currentDate,
|
|
159
|
+
readEnvironmentVariable,
|
|
160
|
+
readPackageInfo,
|
|
161
|
+
workingDirectory,
|
|
162
|
+
gitClient: releaseGitClient,
|
|
163
|
+
sleep,
|
|
164
|
+
flags: {
|
|
165
|
+
command: validateReleasePullRequestCommandName,
|
|
166
|
+
releasePullRequestNumber: undefined
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
}),
|
|
171
|
+
[authorizePublishReleasePullRequestCommandName]: command({
|
|
172
|
+
name: authorizePublishReleasePullRequestCommandName,
|
|
173
|
+
description: 'Authorizes publishing from a merged release PR.',
|
|
174
|
+
args: {
|
|
175
|
+
releasePullRequestNumber: option({
|
|
176
|
+
long: 'release-pull-request',
|
|
177
|
+
type: optionalType(string)
|
|
178
|
+
})
|
|
179
|
+
},
|
|
180
|
+
async handler({ releasePullRequestNumber }) {
|
|
181
|
+
exitCode = await runReleasePullRequestHandler({
|
|
182
|
+
log,
|
|
183
|
+
packtory,
|
|
184
|
+
spinnerRenderer,
|
|
185
|
+
configLoader,
|
|
186
|
+
fileManager,
|
|
187
|
+
createPrLogEngine,
|
|
188
|
+
createGitHubReleaseClient,
|
|
189
|
+
createReleasePullRequestGitHubClient,
|
|
190
|
+
currentDate,
|
|
191
|
+
readEnvironmentVariable,
|
|
192
|
+
readPackageInfo,
|
|
193
|
+
workingDirectory,
|
|
194
|
+
gitClient: releaseGitClient,
|
|
195
|
+
sleep,
|
|
196
|
+
flags: {
|
|
197
|
+
command: authorizePublishReleasePullRequestCommandName,
|
|
198
|
+
releasePullRequestNumber
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
})
|
|
203
|
+
}
|
|
204
|
+
}),
|
|
106
205
|
[changelogCommandName]: command({
|
|
107
206
|
name: changelogCommandName,
|
|
108
207
|
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":"AAAA
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/runner.ts"],"names":[],"mappings":"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"}
|