@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.
- package/command-line-interface/runner/changelog-destinations.js +84 -34
- package/command-line-interface/runner/changelog-destinations.js.map +1 -1
- package/command-line-interface/runner/changelog-handler.js +15 -56
- package/command-line-interface/runner/changelog-handler.js.map +1 -1
- package/command-line-interface/runner/failure-printing.js +9 -9
- package/command-line-interface/runner/failure-printing.js.map +1 -1
- package/command-line-interface/runner/github-api-request.js +37 -0
- package/command-line-interface/runner/github-api-request.js.map +1 -0
- package/command-line-interface/runner/github-release-client.js +37 -0
- package/command-line-interface/runner/github-release-client.js.map +1 -0
- package/command-line-interface/runner/github-repository.js +15 -0
- package/command-line-interface/runner/github-repository.js.map +1 -0
- package/command-line-interface/runner/publish-handler.js +1 -1
- package/command-line-interface/runner/publish-handler.js.map +1 -1
- package/command-line-interface/runner/release-git-client.js +53 -0
- package/command-line-interface/runner/release-git-client.js.map +1 -0
- package/command-line-interface/runner/release-handler.js +324 -0
- package/command-line-interface/runner/release-handler.js.map +1 -0
- package/command-line-interface/runner/release-plan-result-printing.js +26 -0
- package/command-line-interface/runner/release-plan-result-printing.js.map +1 -0
- package/command-line-interface/runner/runner.js +40 -8
- package/command-line-interface/runner/runner.js.map +1 -1
- package/package.json +3 -2
- package/packages/command-line-interface/command-line-interface.entry-point.d.ts.map +1 -1
- package/packages/command-line-interface/command-line-interface.entry-point.js +22 -3
- package/packages/command-line-interface/command-line-interface.entry-point.js.map +1 -1
- package/packtory/packtory-changelog.js +30 -27
- package/packtory/packtory-changelog.js.map +1 -1
- package/readme.md +24 -1
- package/sbom.cdx.json +27 -10
|
@@ -1,56 +1,86 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
|
+
import { defaultValidLabels } from '@pr-log/core';
|
|
2
3
|
import { safeParse } from '@schema-hub/zod-error-formatter';
|
|
3
4
|
import { packtoryConfigSchema } from "packtory/config/packtory-config-schema.js";
|
|
4
5
|
export function parseValidConfig(config) {
|
|
5
6
|
const result = safeParse(packtoryConfigSchema, config);
|
|
6
7
|
return result.success ? result.data : undefined;
|
|
7
8
|
}
|
|
8
|
-
function
|
|
9
|
+
export function createChangelogGenerationOptions(config) {
|
|
10
|
+
return {
|
|
11
|
+
explicitBaseRef: config.changelog?.explicitBaseRef,
|
|
12
|
+
packageTagFormat: config.changelog?.packageTagFormat,
|
|
13
|
+
targetScopedLabelPattern: config.changelog?.targetScopedLabelPattern,
|
|
14
|
+
validLabels: new Map([...defaultValidLabels, ...Object.entries(config.changelog?.labels ?? {})])
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function normalizeConfiguredPath(filePath) {
|
|
9
18
|
return filePath.split(/[/\\]/u).join(path.sep);
|
|
10
19
|
}
|
|
11
|
-
function
|
|
12
|
-
return path.resolve(deps.workingDirectory,
|
|
20
|
+
function resolveRepositoryPath(deps, filePath) {
|
|
21
|
+
return path.resolve(deps.workingDirectory, normalizeConfiguredPath(filePath));
|
|
13
22
|
}
|
|
14
|
-
function
|
|
23
|
+
function resolvePackageSourcesFolder(packageConfig, config) {
|
|
15
24
|
const sourcesFolder = packageConfig.sourcesFolder ?? config.commonPackageSettings?.sourcesFolder;
|
|
16
25
|
if (sourcesFolder === undefined) {
|
|
17
26
|
throw new Error(`Config for package "${packageConfig.name}" is missing the sources folder`);
|
|
18
27
|
}
|
|
19
28
|
return sourcesFolder;
|
|
20
29
|
}
|
|
21
|
-
function
|
|
30
|
+
function mapPackageConfigByName(config) {
|
|
22
31
|
return new Map(config.packages.map((packageConfig) => {
|
|
23
32
|
return [packageConfig.name, packageConfig];
|
|
24
33
|
}));
|
|
25
34
|
}
|
|
26
|
-
function
|
|
27
|
-
return path.resolve(deps.workingDirectory,
|
|
35
|
+
function resolvePackageFilePath(deps, config, packageConfig, outputPath) {
|
|
36
|
+
return path.resolve(deps.workingDirectory, normalizeConfiguredPath(resolvePackageSourcesFolder(packageConfig, config)), normalizeConfiguredPath(outputPath));
|
|
37
|
+
}
|
|
38
|
+
function resolveExplicitPackageFilePath(deps, output, packageName) {
|
|
39
|
+
const outputPath = output.paths[packageName];
|
|
40
|
+
if (outputPath === undefined) {
|
|
41
|
+
throw new Error(`Changelog output path for package "${packageName}" is missing`);
|
|
42
|
+
}
|
|
43
|
+
return resolveRepositoryPath(deps, outputPath);
|
|
44
|
+
}
|
|
45
|
+
function hasSharedPackagePath(output) {
|
|
46
|
+
return 'path' in output;
|
|
47
|
+
}
|
|
48
|
+
function hasExplicitPackagePaths(output) {
|
|
49
|
+
return 'paths' in output;
|
|
28
50
|
}
|
|
29
|
-
function
|
|
51
|
+
function resolveRepositoryRelativePath(deps, filePath) {
|
|
30
52
|
const relativePath = path.relative(deps.workingDirectory, filePath);
|
|
31
53
|
if (relativePath.startsWith('..') || path.isAbsolute(relativePath)) {
|
|
32
54
|
return undefined;
|
|
33
55
|
}
|
|
34
56
|
return relativePath.split(path.sep).join('/');
|
|
35
57
|
}
|
|
36
|
-
export function
|
|
58
|
+
export function collectGeneratedAttributionPaths(deps, config) {
|
|
37
59
|
if (config.changelog === undefined) {
|
|
38
60
|
return [];
|
|
39
61
|
}
|
|
62
|
+
if (config.changelog.outputs === undefined) {
|
|
63
|
+
return [];
|
|
64
|
+
}
|
|
40
65
|
const paths = config.changelog.outputs
|
|
41
66
|
.filter((output) => {
|
|
42
67
|
return output.kind !== 'github-release';
|
|
43
68
|
})
|
|
44
69
|
.flatMap((output) => {
|
|
45
70
|
if (output.kind === 'repository-file') {
|
|
46
|
-
return [
|
|
71
|
+
return [resolveRepositoryPath(deps, output.path)];
|
|
72
|
+
}
|
|
73
|
+
if (hasExplicitPackagePaths(output)) {
|
|
74
|
+
return Object.values(output.paths).map((outputPath) => {
|
|
75
|
+
return resolveRepositoryPath(deps, outputPath);
|
|
76
|
+
});
|
|
47
77
|
}
|
|
48
78
|
return config.packages.map((packageConfig) => {
|
|
49
|
-
return
|
|
79
|
+
return resolvePackageFilePath(deps, config, packageConfig, output.path);
|
|
50
80
|
});
|
|
51
81
|
});
|
|
52
82
|
return Array.from(new Set(paths.flatMap((filePath) => {
|
|
53
|
-
const relativePath =
|
|
83
|
+
const relativePath = resolveRepositoryRelativePath(deps, filePath);
|
|
54
84
|
return relativePath === undefined ? [] : [relativePath];
|
|
55
85
|
})));
|
|
56
86
|
}
|
|
@@ -60,33 +90,44 @@ export function shouldPageGroupedChangelog(outputs) {
|
|
|
60
90
|
return output.kind === 'github-release';
|
|
61
91
|
}));
|
|
62
92
|
}
|
|
63
|
-
function
|
|
93
|
+
function collectRepositoryDestinations(deps, outputs, changelog) {
|
|
64
94
|
return outputs.flatMap((output) => {
|
|
65
95
|
if (output.kind !== 'repository-file') {
|
|
66
96
|
return [];
|
|
67
97
|
}
|
|
68
|
-
return [{ filePath:
|
|
98
|
+
return [{ filePath: resolveRepositoryPath(deps, output.path), generatedMarkdown: changelog.groupedMarkdown }];
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
function collectPackageDestinationsWithSharedPath(deps, config, output, changelog) {
|
|
102
|
+
const packageConfigsByName = mapPackageConfigByName(config);
|
|
103
|
+
return Array.from(changelog.packageMarkdownByName, ([packageName, generatedMarkdown]) => {
|
|
104
|
+
const packageConfig = packageConfigsByName.get(packageName);
|
|
105
|
+
if (packageConfig === undefined) {
|
|
106
|
+
throw new Error(`Config for package "${packageName}" is missing`);
|
|
107
|
+
}
|
|
108
|
+
return { filePath: resolvePackageFilePath(deps, config, packageConfig, output.path), generatedMarkdown };
|
|
69
109
|
});
|
|
70
110
|
}
|
|
71
|
-
function
|
|
72
|
-
|
|
111
|
+
function collectPackageDestinationsWithExplicitPaths(deps, output, changelog) {
|
|
112
|
+
return Array.from(changelog.packageMarkdownByName, ([packageName, generatedMarkdown]) => {
|
|
113
|
+
return { filePath: resolveExplicitPackageFilePath(deps, output, packageName), generatedMarkdown };
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
function collectPackageDestinations(deps, config, outputs, changelog) {
|
|
73
117
|
return outputs.flatMap((output) => {
|
|
74
118
|
if (output.kind !== 'package-file') {
|
|
75
119
|
return [];
|
|
76
120
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
}
|
|
82
|
-
return [{ filePath: packageFilePath(deps, config, packageConfig, output.path), generatedMarkdown }];
|
|
83
|
-
});
|
|
121
|
+
if (hasSharedPackagePath(output)) {
|
|
122
|
+
return collectPackageDestinationsWithSharedPath(deps, config, output, changelog);
|
|
123
|
+
}
|
|
124
|
+
return collectPackageDestinationsWithExplicitPaths(deps, output, changelog);
|
|
84
125
|
});
|
|
85
126
|
}
|
|
86
127
|
function isMissingFileError(error) {
|
|
87
128
|
return Reflect.get(new Object(error), 'code') === 'ENOENT';
|
|
88
129
|
}
|
|
89
|
-
async function
|
|
130
|
+
async function readChangelogMarkdown(fileManager, filePath) {
|
|
90
131
|
try {
|
|
91
132
|
return await fileManager.readFile(filePath);
|
|
92
133
|
}
|
|
@@ -99,25 +140,34 @@ async function existingChangelogMarkdown(fileManager, filePath) {
|
|
|
99
140
|
}
|
|
100
141
|
async function writeChangelogDestination(deps, prLogEngine, destination) {
|
|
101
142
|
if (destination.generatedMarkdown.length === 0) {
|
|
102
|
-
return;
|
|
143
|
+
return undefined;
|
|
103
144
|
}
|
|
104
|
-
const existingChangelogMarkdownValue = await
|
|
145
|
+
const existingChangelogMarkdownValue = await readChangelogMarkdown(deps.fileManager, destination.filePath);
|
|
105
146
|
await deps.fileManager.writeFile(destination.filePath, prLogEngine.updateChangelog({
|
|
106
147
|
existingChangelogMarkdown: existingChangelogMarkdownValue,
|
|
107
148
|
generatedChangelogMarkdown: destination.generatedMarkdown
|
|
108
149
|
}));
|
|
150
|
+
return destination.filePath;
|
|
109
151
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
152
|
+
function collectChangelogDestinations(deps, config, changelog) {
|
|
153
|
+
const outputs = config.changelog?.outputs;
|
|
154
|
+
if (outputs === undefined) {
|
|
155
|
+
return [];
|
|
113
156
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
...
|
|
117
|
-
...packageDestinations(deps, config, outputs, changelog)
|
|
157
|
+
return [
|
|
158
|
+
...collectRepositoryDestinations(deps, outputs, changelog),
|
|
159
|
+
...collectPackageDestinations(deps, config, outputs, changelog)
|
|
118
160
|
];
|
|
161
|
+
}
|
|
162
|
+
export async function writeConfiguredChangelogs(deps, config, prLogEngine, changelog) {
|
|
163
|
+
const destinations = collectChangelogDestinations(deps, config, changelog);
|
|
164
|
+
const writtenPaths = [];
|
|
119
165
|
for (const destination of destinations) {
|
|
120
|
-
await writeChangelogDestination(deps, prLogEngine, destination);
|
|
166
|
+
const writtenPath = await writeChangelogDestination(deps, prLogEngine, destination);
|
|
167
|
+
if (writtenPath !== undefined) {
|
|
168
|
+
writtenPaths.push(writtenPath);
|
|
169
|
+
}
|
|
121
170
|
}
|
|
171
|
+
return writtenPaths;
|
|
122
172
|
}
|
|
123
173
|
//# sourceMappingURL=changelog-destinations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changelog-destinations.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/changelog-destinations.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"changelog-destinations.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/changelog-destinations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,89 +1,48 @@
|
|
|
1
|
-
import { defaultValidLabels } from '@pr-log/core';
|
|
2
|
-
import { normalizeRepositoryUrl } from "packtory/bundle-emitter/repository-url-normalizer.js";
|
|
3
|
-
import { partialFailureMessages } from "packtory/packtory/partial-result.js";
|
|
4
|
-
import { checksErrorType, configErrorType } from "packtory/packtory/packtory-results.js";
|
|
5
1
|
import { generateChangelogOutputs } from "../../packtory/packtory-changelog.js";
|
|
6
|
-
import {
|
|
2
|
+
import { createChangelogGenerationOptions, collectGeneratedAttributionPaths, parseValidConfig, shouldPageGroupedChangelog, writeConfiguredChangelogs } from "./changelog-destinations.js";
|
|
3
|
+
import { formatGitHubRepositoryName } from "./github-repository.js";
|
|
4
|
+
import { printReleasePlanFailure, collectReleasePlanPackages } from "./release-plan-result-printing.js";
|
|
7
5
|
const labelLookupIntervalMilliseconds = 250;
|
|
8
6
|
const maximumRateLimitRetryCount = 3;
|
|
9
|
-
const githubRepositoryPattern = /^https:\/\/github\.com\/(?<owner>[^/]+)\/(?<repo>[^/]+)$/u;
|
|
10
7
|
function formatChangelogHandlerError(error) {
|
|
11
8
|
return String(error).replace(/^[A-Za-z]*Error: /u, '');
|
|
12
9
|
}
|
|
13
|
-
function
|
|
10
|
+
function readGitHubToken(deps) {
|
|
14
11
|
return deps.readEnvironmentVariable('GH_TOKEN') ?? deps.readEnvironmentVariable('GITHUB_TOKEN');
|
|
15
12
|
}
|
|
16
|
-
function gitHubRepositoryMatchFrom(repositoryUrl) {
|
|
17
|
-
return githubRepositoryPattern.exec(String(repositoryUrl)) ?? undefined;
|
|
18
|
-
}
|
|
19
|
-
function gitHubRepositoryPartsFromGroups(groups) {
|
|
20
|
-
if (groups === undefined) {
|
|
21
|
-
return undefined;
|
|
22
|
-
}
|
|
23
|
-
return { owner: String(groups.owner), repo: String(groups.repo) };
|
|
24
|
-
}
|
|
25
|
-
function gitHubRepositoryPartsFrom(repositoryUrl) {
|
|
26
|
-
return gitHubRepositoryPartsFromGroups(gitHubRepositoryMatchFrom(repositoryUrl)?.groups);
|
|
27
|
-
}
|
|
28
|
-
function githubRepoFrom(packageInfo) {
|
|
29
|
-
const repository = gitHubRepositoryPartsFrom(normalizeRepositoryUrl(packageInfo.repository));
|
|
30
|
-
if (repository === undefined) {
|
|
31
|
-
throw new Error('package.json repository must point to a GitHub repository');
|
|
32
|
-
}
|
|
33
|
-
return `${repository.owner}/${repository.repo}`;
|
|
34
|
-
}
|
|
35
13
|
function createEngine(deps) {
|
|
36
14
|
return deps.createPrLogEngine({
|
|
37
|
-
githubToken:
|
|
15
|
+
githubToken: readGitHubToken(deps),
|
|
38
16
|
workingDirectory: deps.workingDirectory,
|
|
39
17
|
labelLookupIntervalMilliseconds,
|
|
40
18
|
maximumRateLimitRetryCount
|
|
41
19
|
});
|
|
42
20
|
}
|
|
43
|
-
function printIssueFailure(log, title, issues) {
|
|
44
|
-
log(`${title}, there are ${issues.length} issue(s)\n\n- ${issues.join('\n- ')}`);
|
|
45
|
-
}
|
|
46
|
-
function printReleasePlanFailure(log, error) {
|
|
47
|
-
if (error.type === configErrorType) {
|
|
48
|
-
printIssueFailure(log, 'Configuration issues', error.issues);
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
if (error.type === checksErrorType) {
|
|
52
|
-
printIssueFailure(log, 'Check issues', error.issues);
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
log(partialFailureMessages(error).join('\n'));
|
|
56
|
-
}
|
|
57
|
-
function releasePlanPackagesFrom(result) {
|
|
58
|
-
if (result.isOk) {
|
|
59
|
-
return result.value.packages;
|
|
60
|
-
}
|
|
61
|
-
if ('succeeded' in result.error) {
|
|
62
|
-
return result.error.succeeded;
|
|
63
|
-
}
|
|
64
|
-
return [];
|
|
65
|
-
}
|
|
66
21
|
async function renderChangelog(deps, config, packages) {
|
|
67
22
|
if (packages.length === 0) {
|
|
68
23
|
return;
|
|
69
24
|
}
|
|
70
25
|
const packageInfo = await deps.readPackageInfo();
|
|
71
26
|
const prLogEngine = createEngine(deps);
|
|
27
|
+
const generationOptions = createChangelogGenerationOptions(config);
|
|
72
28
|
const changelog = await generateChangelogOutputs({
|
|
73
29
|
packages,
|
|
74
30
|
prLogEngine,
|
|
75
|
-
|
|
76
|
-
|
|
31
|
+
explicitBaseRef: generationOptions.explicitBaseRef,
|
|
32
|
+
githubRepo: formatGitHubRepositoryName(packageInfo),
|
|
33
|
+
ignoredAttributionPaths: collectGeneratedAttributionPaths(deps, config),
|
|
77
34
|
packageInfo,
|
|
35
|
+
packageTagFormat: generationOptions.packageTagFormat,
|
|
78
36
|
currentDate: deps.currentDate(),
|
|
79
|
-
|
|
37
|
+
targetScopedLabelPattern: generationOptions.targetScopedLabelPattern,
|
|
38
|
+
validLabels: generationOptions.validLabels
|
|
80
39
|
});
|
|
81
40
|
if (shouldPageGroupedChangelog(config.changelog?.outputs) && changelog.groupedMarkdown.length > 0) {
|
|
82
41
|
await deps.pageOutput(changelog.groupedMarkdown);
|
|
83
42
|
}
|
|
84
43
|
await writeConfiguredChangelogs(deps, config, prLogEngine, changelog);
|
|
85
44
|
}
|
|
86
|
-
function
|
|
45
|
+
function resolveReleasePlanExitCode(log, result) {
|
|
87
46
|
if (result.isOk) {
|
|
88
47
|
return 0;
|
|
89
48
|
}
|
|
@@ -96,9 +55,9 @@ async function runChangelog(deps) {
|
|
|
96
55
|
deps.spinnerRenderer.stopAll();
|
|
97
56
|
const validConfig = parseValidConfig(config);
|
|
98
57
|
if (validConfig !== undefined) {
|
|
99
|
-
await renderChangelog(deps, validConfig,
|
|
58
|
+
await renderChangelog(deps, validConfig, collectReleasePlanPackages(outcome.result));
|
|
100
59
|
}
|
|
101
|
-
return
|
|
60
|
+
return resolveReleasePlanExitCode(deps.log, outcome.result);
|
|
102
61
|
}
|
|
103
62
|
function stopSpinnersAndReturn(deps, exitCode) {
|
|
104
63
|
deps.spinnerRenderer.stopAll();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changelog-handler.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/changelog-handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"changelog-handler.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/changelog-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,11 +19,11 @@ function formatStageReceipt(result) {
|
|
|
19
19
|
function isStagedResult(result) {
|
|
20
20
|
return result.publication.type === 'staged';
|
|
21
21
|
}
|
|
22
|
-
function
|
|
22
|
+
function selectStagedResults(results) {
|
|
23
23
|
return results.filter(isStagedResult);
|
|
24
24
|
}
|
|
25
25
|
function printStagedPackageList(log, results) {
|
|
26
|
-
const stagedResults =
|
|
26
|
+
const stagedResults = selectStagedResults(results);
|
|
27
27
|
if (stagedResults.length === 0) {
|
|
28
28
|
return;
|
|
29
29
|
}
|
|
@@ -33,8 +33,8 @@ function printIssueSummary(log, title, issues) {
|
|
|
33
33
|
const header = `${getErrorSymbol()} ${title}, there are ${issues.length} issue(s)`;
|
|
34
34
|
log(`${header}\n\n- ${issues.join('\n- ')}`);
|
|
35
35
|
}
|
|
36
|
-
function
|
|
37
|
-
const stagedResults =
|
|
36
|
+
function formatStageSuccessSummary(results) {
|
|
37
|
+
const stagedResults = selectStagedResults(results);
|
|
38
38
|
if (stagedResults.length === 0) {
|
|
39
39
|
return (`${getSuccessSymbol()} Success: no packages were staged; ` +
|
|
40
40
|
`all ${results.length} package(s) were already up-to-date`);
|
|
@@ -43,7 +43,7 @@ function stageSuccessSummary(results) {
|
|
|
43
43
|
const unchangedSuffix = unchangedCount === 0 ? '' : `; ${dim(String(unchangedCount))} already up-to-date`;
|
|
44
44
|
return `${getSuccessSymbol()} Success: staged ${stagedResults.length} package(s)${unchangedSuffix}`;
|
|
45
45
|
}
|
|
46
|
-
function printPartialErrorSummary(log, error,
|
|
46
|
+
function printPartialErrorSummary(log, error, stage) {
|
|
47
47
|
const total = error.succeeded.length + error.failures.length;
|
|
48
48
|
const failureCount = red(String(error.failures.length));
|
|
49
49
|
const successCount = green(String(error.succeeded.length));
|
|
@@ -53,14 +53,14 @@ function printPartialErrorSummary(log, error, flags) {
|
|
|
53
53
|
return `- ${message}`;
|
|
54
54
|
});
|
|
55
55
|
log([summary, ...details].join('\n'));
|
|
56
|
-
if (
|
|
56
|
+
if (stage) {
|
|
57
57
|
printStagedPackageList(log, error.succeeded);
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
-
export function printPublishFailure(log, error,
|
|
60
|
+
export function printPublishFailure(log, error, stage) {
|
|
61
61
|
match(error)
|
|
62
62
|
.with({ type: partialFailureType }, (partialError) => {
|
|
63
|
-
printPartialErrorSummary(log, partialError,
|
|
63
|
+
printPartialErrorSummary(log, partialError, stage);
|
|
64
64
|
})
|
|
65
65
|
.otherwise((issueError) => {
|
|
66
66
|
printIssueSummary(log, issueTitleByType[issueError.type], issueError.issues);
|
|
@@ -71,7 +71,7 @@ export function printSuccessSummary(log, results, flags) {
|
|
|
71
71
|
log(`${getSuccessSymbol()} Success: all ${results.length} package(s) have been published`);
|
|
72
72
|
return;
|
|
73
73
|
}
|
|
74
|
-
log(
|
|
74
|
+
log(formatStageSuccessSummary(results));
|
|
75
75
|
printStagedPackageList(log, results);
|
|
76
76
|
}
|
|
77
77
|
//# sourceMappingURL=failure-printing.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"failure-printing.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/failure-printing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,EACH,eAAe,EACf,eAAe,EACf,kBAAkB,EAErB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAOzF,MAAM,gBAAgB,GAAG;IACrB,CAAC,eAAe,CAAC,EAAE,gCAAgC;IACnD,CAAC,eAAe,CAAC,EAAE,eAAe;CAC5B,CAAC;AAEX,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,KAAqC;IAC9E,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,OAAO;IACX,CAAC;IACD,GAAG,CACC,GAAG,gBAAgB,EAAE,IAAI,GAAG,CACxB,mFAAmF,IAAI,CACnF,cAAc,CACjB,+BAA+B,CACnC,EAAE,CACN,CAAC;AACN,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAoB;IAC5C,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AAC7F,CAAC;AAED,SAAS,cAAc,CAAC,MAA6B;IACjD,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC;AAChD,CAAC;AAED,SAAS,
|
|
1
|
+
{"version":3,"file":"failure-printing.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/failure-printing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
const defaultGitHubApiVersion = '2022-11-28';
|
|
2
|
+
function readReflectedProperty(value, property) {
|
|
3
|
+
return Reflect.get(new Object(value), property);
|
|
4
|
+
}
|
|
5
|
+
function readGitHubErrorStatus(error) {
|
|
6
|
+
return Number(readReflectedProperty(error, 'status'));
|
|
7
|
+
}
|
|
8
|
+
function readGitHubErrorPath(error) {
|
|
9
|
+
const url = String(readReflectedProperty(readReflectedProperty(error, 'request'), 'url'));
|
|
10
|
+
const parsedUrl = new URL(url);
|
|
11
|
+
return `${parsedUrl.pathname}${parsedUrl.search}`;
|
|
12
|
+
}
|
|
13
|
+
function createGitHubRequestError(error) {
|
|
14
|
+
return new Error(`GitHub API request failed (${String(readGitHubErrorStatus(error))}) for ${readGitHubErrorPath(error)}`, {
|
|
15
|
+
cause: error
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
export function createGitHubJsonRequestHeaders(token, userAgent) {
|
|
19
|
+
return {
|
|
20
|
+
accept: 'application/vnd.github+json',
|
|
21
|
+
authorization: `Bearer ${token}`,
|
|
22
|
+
'user-agent': userAgent,
|
|
23
|
+
'x-github-api-version': defaultGitHubApiVersion
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export async function resolveOptionalGitHubResponse(request, missingStatusCode) {
|
|
27
|
+
try {
|
|
28
|
+
return await request;
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
if (readGitHubErrorStatus(error) === missingStatusCode) {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
throw createGitHubRequestError(error);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=github-api-request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-api-request.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/github-api-request.ts"],"names":[],"mappings":"AAAA,MAAM,uBAAuB,GAAG,YAAY,CAAC;AAE7C,SAAS,qBAAqB,CAAC,KAAc,EAAE,QAAgB;IAC3D,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAY,CAAC;AAC/D,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IACzC,OAAO,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACvC,MAAM,GAAG,GAAG,MAAM,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1F,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAc;IAC5C,OAAO,IAAI,KAAK,CACZ,8BAA8B,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,SAAS,mBAAmB,CAAC,KAAK,CAAC,EAAE,EACvG;QACI,KAAK,EAAE,KAAK;KACf,CACJ,CAAC;AACN,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,KAAa,EAAE,SAAiB;IAC3E,OAAO;QACH,MAAM,EAAE,6BAA6B;QACrC,aAAa,EAAE,UAAU,KAAK,EAAE;QAChC,YAAY,EAAE,SAAS;QACvB,sBAAsB,EAAE,uBAAuB;KAClD,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAC/C,OAAmB,EACnB,iBAAyB;IAEzB,IAAI,CAAC;QACD,OAAO,MAAM,OAAO,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,IAAI,qBAAqB,CAAC,KAAK,CAAC,KAAK,iBAAiB,EAAE,CAAC;YACrD,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,MAAM,wBAAwB,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Octokit } from '@octokit/core';
|
|
2
|
+
import { createGitHubJsonRequestHeaders, resolveOptionalGitHubResponse } from "./github-api-request.js";
|
|
3
|
+
const notFoundStatusCode = 404;
|
|
4
|
+
export function createGitHubReleaseClient(deps) {
|
|
5
|
+
const requestHeaders = createGitHubJsonRequestHeaders(deps.token, 'packtory');
|
|
6
|
+
const octokit = new Octokit({
|
|
7
|
+
request: {
|
|
8
|
+
fetch: deps.fetch
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
return {
|
|
12
|
+
async createReleaseIfMissing(request) {
|
|
13
|
+
const existing = await resolveOptionalGitHubResponse(octokit.request('GET /repos/{owner}/{repo}/releases/tags/{tag}', {
|
|
14
|
+
headers: requestHeaders,
|
|
15
|
+
owner: deps.owner,
|
|
16
|
+
repo: deps.repo,
|
|
17
|
+
tag: request.tagName
|
|
18
|
+
}), notFoundStatusCode);
|
|
19
|
+
if (existing !== undefined) {
|
|
20
|
+
return 'existing';
|
|
21
|
+
}
|
|
22
|
+
const created = await resolveOptionalGitHubResponse(octokit.request('POST /repos/{owner}/{repo}/releases', {
|
|
23
|
+
headers: requestHeaders,
|
|
24
|
+
owner: deps.owner,
|
|
25
|
+
repo: deps.repo,
|
|
26
|
+
tag_name: request.tagName,
|
|
27
|
+
name: request.name,
|
|
28
|
+
body: request.body
|
|
29
|
+
}), notFoundStatusCode);
|
|
30
|
+
if (created === undefined) {
|
|
31
|
+
throw new Error(`GitHub release for tag "${request.tagName}" could not be created`);
|
|
32
|
+
}
|
|
33
|
+
return 'created';
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=github-release-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-release-client.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/github-release-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,8BAA8B,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAmBxG,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B,MAAM,UAAU,yBAAyB,CAAC,IAAqC;IAC3E,MAAM,cAAc,GAAG,8BAA8B,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;QACxB,OAAO,EAAE;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;SACpB;KACJ,CAAC,CAAC;IAEH,OAAO;QACH,KAAK,CAAC,sBAAsB,CAAC,OAAO;YAChC,MAAM,QAAQ,GAAG,MAAM,6BAA6B,CAChD,OAAO,CAAC,OAAO,CAAC,+CAA+C,EAAE;gBAC7D,OAAO,EAAE,cAAc;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,GAAG,EAAE,OAAO,CAAC,OAAO;aACvB,CAAC,EACF,kBAAkB,CACrB,CAAC;YACF,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,UAAU,CAAC;YACtB,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,6BAA6B,CAC/C,OAAO,CAAC,OAAO,CAAC,qCAAqC,EAAE;gBACnD,OAAO,EAAE,cAAc;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,OAAO,CAAC,OAAO;gBACzB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,IAAI,EAAE,OAAO,CAAC,IAAI;aACrB,CAAC,EACF,kBAAkB,CACrB,CAAC;YACF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,CAAC,OAAO,wBAAwB,CAAC,CAAC;YACxF,CAAC;YACD,OAAO,SAAS,CAAC;QACrB,CAAC;KACJ,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { normalizeRepositoryUrl } from "packtory/bundle-emitter/repository-url-normalizer.js";
|
|
2
|
+
const githubRepositoryPattern = /^https:\/\/github\.com\/(?<owner>[^/]+)\/(?<repo>[^/]+)$/u;
|
|
3
|
+
export function parseGitHubRepositoryParts(packageInfo) {
|
|
4
|
+
const repositoryUrl = normalizeRepositoryUrl(packageInfo.repository);
|
|
5
|
+
const match = githubRepositoryPattern.exec(String(repositoryUrl));
|
|
6
|
+
if (match?.groups === undefined) {
|
|
7
|
+
throw new Error('package.json repository must point to a GitHub repository');
|
|
8
|
+
}
|
|
9
|
+
return { owner: String(match.groups.owner), repo: String(match.groups.repo) };
|
|
10
|
+
}
|
|
11
|
+
export function formatGitHubRepositoryName(packageInfo) {
|
|
12
|
+
const repository = parseGitHubRepositoryParts(packageInfo);
|
|
13
|
+
return `${repository.owner}/${repository.repo}`;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=github-repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-repository.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/github-repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mDAAmD,CAAC;AAO3F,MAAM,uBAAuB,GAAG,2DAA2D,CAAC;AAE5F,MAAM,UAAU,0BAA0B,CAAC,WAAoC;IAC3E,MAAM,aAAa,GAAG,sBAAsB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;IAClE,IAAI,KAAK,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,WAAoC;IAC3E,MAAM,UAAU,GAAG,0BAA0B,CAAC,WAAW,CAAC,CAAC;IAC3D,OAAO,GAAG,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;AACpD,CAAC"}
|
|
@@ -4,7 +4,7 @@ async function reportOutcome(log, fileManager, outcome, flags) {
|
|
|
4
4
|
let exitCode = 0;
|
|
5
5
|
if (outcome.result.isErr) {
|
|
6
6
|
exitCode = 1;
|
|
7
|
-
printPublishFailure(log, outcome.result.error,
|
|
7
|
+
printPublishFailure(log, outcome.result.error, flags.stage);
|
|
8
8
|
}
|
|
9
9
|
else {
|
|
10
10
|
printSuccessSummary(log, outcome.result.value, { stage: flags.stage });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish-handler.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/publish-handler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAClG,OAAO,EAAE,YAAY,EAAoB,MAAM,yBAAyB,CAAC;AAczE,KAAK,UAAU,aAAa,CACxB,GAAW,EACX,WAA8C,EAC9C,OAAqB,EACrB,KAAkC;IAElC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,QAAQ,GAAG,CAAC,CAAC;QACb,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"publish-handler.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/publish-handler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAClG,OAAO,EAAE,YAAY,EAAoB,MAAM,yBAAyB,CAAC;AAczE,KAAK,UAAU,aAAa,CACxB,GAAW,EACX,WAA8C,EAC9C,OAAqB,EACrB,KAAkC;IAElC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,QAAQ,GAAG,CAAC,CAAC;QACb,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC;SAAM,CAAC;QACJ,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7F,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAwB;IAC5D,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAClF,IAAI,kBAAkB,GAAG,IAAI,CAAC;IAC9B,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE;YACzE,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ;YACvB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,aAAa,EAAE,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU;SACtD,CAAC,CAAC;QACH,kBAAkB,GAAG,KAAK,CAAC;QAC3B,eAAe,CAAC,OAAO,EAAE,CAAC;QAC1B,OAAO,MAAM,aAAa,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACjE,CAAC;YAAS,CAAC;QACP,IAAI,kBAAkB,EAAE,CAAC;YACrB,eAAe,CAAC,OAAO,EAAE,CAAC;QAC9B,CAAC;QACD,eAAe,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvD,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
async function runGit(deps, args) {
|
|
3
|
+
const result = await deps.runGitCommand('git', ['-C', deps.repositoryFolder, ...args]);
|
|
4
|
+
return result.stdout.trim();
|
|
5
|
+
}
|
|
6
|
+
async function readGitOutputResult(deps, args) {
|
|
7
|
+
try {
|
|
8
|
+
return { kind: 'found', value: await runGit(deps, args) };
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return { kind: 'missing' };
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export function createReleaseGitClient(deps) {
|
|
15
|
+
return {
|
|
16
|
+
async commit(filePaths, message) {
|
|
17
|
+
if (filePaths.length === 0) {
|
|
18
|
+
throw new Error('No changelog files were written; cannot create a release commit');
|
|
19
|
+
}
|
|
20
|
+
await runGit(deps, ['add', '--', ...filePaths]);
|
|
21
|
+
await runGit(deps, ['commit', '-m', message]);
|
|
22
|
+
},
|
|
23
|
+
async currentHead() {
|
|
24
|
+
const head = await runGit(deps, ['rev-parse', '--verify', 'HEAD']);
|
|
25
|
+
if (head.length === 0) {
|
|
26
|
+
throw new Error('Unable to read the current Git head');
|
|
27
|
+
}
|
|
28
|
+
return head;
|
|
29
|
+
},
|
|
30
|
+
async ensureClean() {
|
|
31
|
+
const status = await runGit(deps, ['status', '--porcelain=v1']);
|
|
32
|
+
if (status.length > 0) {
|
|
33
|
+
throw new Error('Git index and worktree must be clean before release writes');
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
async ensureTag(tagName, message, targetHead) {
|
|
37
|
+
const existingTag = await readGitOutputResult(deps, ['rev-parse', '--verify', `refs/tags/${tagName}^{}`]);
|
|
38
|
+
if (existingTag.kind === 'missing') {
|
|
39
|
+
await runGit(deps, ['tag', '-a', tagName, '-m', message, targetHead]);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
assert.strictEqual(existingTag.kind, 'found');
|
|
43
|
+
if (existingTag.value === targetHead) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
throw new Error(`Tag "${tagName}" already exists at ${existingTag.value}, expected ${targetHead}`);
|
|
47
|
+
},
|
|
48
|
+
async pushFollowTags() {
|
|
49
|
+
await runGit(deps, ['push', '--follow-tags']);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=release-git-client.js.map
|