putitoutthere 0.2.67 → 0.2.69
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/dist/action.js +2 -1
- package/dist/action.js.map +1 -1
- package/dist/advance-floating-major.d.ts +1 -2
- package/dist/advance-floating-major.d.ts.map +1 -1
- package/dist/advance-floating-major.js +8 -9
- package/dist/advance-floating-major.js.map +1 -1
- package/dist/advance-v0.d.ts +3 -4
- package/dist/advance-v0.d.ts.map +1 -1
- package/dist/advance-v0.js +5 -6
- package/dist/advance-v0.js.map +1 -1
- package/dist/cascade.d.ts.map +1 -1
- package/dist/cascade.js +2 -1
- package/dist/cascade.js.map +1 -1
- package/dist/check-crate-size.d.ts +1 -1
- package/dist/check-crate-size.d.ts.map +1 -1
- package/dist/check-crate-size.js +22 -13
- package/dist/check-crate-size.js.map +1 -1
- package/dist/check.d.ts +1 -1
- package/dist/check.d.ts.map +1 -1
- package/dist/check.js +69 -61
- package/dist/check.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +15 -15
- package/dist/cli.js.map +1 -1
- package/dist/completeness.d.ts +3 -2
- package/dist/completeness.d.ts.map +1 -1
- package/dist/completeness.js +14 -13
- package/dist/completeness.js.map +1 -1
- package/dist/config.d.ts +4 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +5 -5
- package/dist/config.js.map +1 -1
- package/dist/ensure-tag.d.ts +1 -1
- package/dist/ensure-tag.d.ts.map +1 -1
- package/dist/ensure-tag.js +4 -4
- package/dist/ensure-tag.js.map +1 -1
- package/dist/find-workspace-root.d.ts +1 -1
- package/dist/find-workspace-root.d.ts.map +1 -1
- package/dist/find-workspace-root.js +3 -3
- package/dist/find-workspace-root.js.map +1 -1
- package/dist/fold-action-bundle.d.ts +1 -1
- package/dist/fold-action-bundle.d.ts.map +1 -1
- package/dist/fold-action-bundle.js +5 -5
- package/dist/fold-action-bundle.js.map +1 -1
- package/dist/force-move-tag.d.ts +1 -1
- package/dist/force-move-tag.d.ts.map +1 -1
- package/dist/force-move-tag.js +3 -3
- package/dist/force-move-tag.js.map +1 -1
- package/dist/git.d.ts +19 -21
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +44 -49
- package/dist/git.js.map +1 -1
- package/dist/glob.d.ts +1 -1
- package/dist/glob.d.ts.map +1 -1
- package/dist/glob.js +17 -7
- package/dist/glob.js.map +1 -1
- package/dist/handlers/crates.d.ts +2 -1
- package/dist/handlers/crates.d.ts.map +1 -1
- package/dist/handlers/crates.js +35 -36
- package/dist/handlers/crates.js.map +1 -1
- package/dist/handlers/npm-platform.d.ts +1 -0
- package/dist/handlers/npm-platform.d.ts.map +1 -1
- package/dist/handlers/npm-platform.js +39 -41
- package/dist/handlers/npm-platform.js.map +1 -1
- package/dist/handlers/npm.d.ts.map +1 -1
- package/dist/handlers/npm.js +30 -23
- package/dist/handlers/npm.js.map +1 -1
- package/dist/handlers/pypi.js +17 -12
- package/dist/handlers/pypi.js.map +1 -1
- package/dist/normalize-artifacts.d.ts +1 -1
- package/dist/normalize-artifacts.d.ts.map +1 -1
- package/dist/normalize-artifacts.js +8 -7
- package/dist/normalize-artifacts.js.map +1 -1
- package/dist/plan-status.js +1 -1
- package/dist/plan-status.js.map +1 -1
- package/dist/plan.d.ts.map +1 -1
- package/dist/plan.js +29 -27
- package/dist/plan.js.map +1 -1
- package/dist/preflight.d.ts +14 -14
- package/dist/preflight.d.ts.map +1 -1
- package/dist/preflight.js +56 -56
- package/dist/preflight.js.map +1 -1
- package/dist/publish.d.ts.map +1 -1
- package/dist/publish.js +25 -17
- package/dist/publish.js.map +1 -1
- package/dist/python-versions.d.ts +1 -1
- package/dist/python-versions.d.ts.map +1 -1
- package/dist/python-versions.js +5 -5
- package/dist/python-versions.js.map +1 -1
- package/dist/reconcile.js +3 -3
- package/dist/reconcile.js.map +1 -1
- package/dist/release-github/gh-release-create.d.ts +1 -1
- package/dist/release-github/gh-release-create.d.ts.map +1 -1
- package/dist/release-github/gh-release-create.js +3 -4
- package/dist/release-github/gh-release-create.js.map +1 -1
- package/dist/release-github/gh-release-exists.d.ts +1 -1
- package/dist/release-github/gh-release-exists.d.ts.map +1 -1
- package/dist/release-github/gh-release-exists.js +3 -3
- package/dist/release-github/gh-release-exists.js.map +1 -1
- package/dist/release-github/index.d.ts +4 -5
- package/dist/release-github/index.d.ts.map +1 -1
- package/dist/release-github/index.js +8 -9
- package/dist/release-github/index.js.map +1 -1
- package/dist/resolve-tag-commit.d.ts +2 -2
- package/dist/resolve-tag-commit.d.ts.map +1 -1
- package/dist/resolve-tag-commit.js +4 -4
- package/dist/resolve-tag-commit.js.map +1 -1
- package/dist/status.js +2 -2
- package/dist/status.js.map +1 -1
- package/dist/trailer.d.ts +1 -0
- package/dist/trailer.d.ts.map +1 -1
- package/dist/trailer.js +1 -1
- package/dist/trailer.js.map +1 -1
- package/dist/utils/exec-capture.d.ts +20 -0
- package/dist/utils/exec-capture.d.ts.map +1 -0
- package/dist/utils/exec-capture.js +25 -0
- package/dist/utils/exec-capture.js.map +1 -0
- package/dist/utils/exec-error.d.ts +16 -0
- package/dist/utils/exec-error.d.ts.map +1 -0
- package/dist/utils/exec-error.js +21 -0
- package/dist/utils/exec-error.js.map +1 -0
- package/dist/utils/exec-inherit.d.ts +13 -0
- package/dist/utils/exec-inherit.d.ts.map +1 -0
- package/dist/utils/exec-inherit.js +25 -0
- package/dist/utils/exec-inherit.js.map +1 -0
- package/dist/utils/list-files-recursive.d.ts +2 -2
- package/dist/utils/list-files-recursive.d.ts.map +1 -1
- package/dist/utils/list-files-recursive.js +7 -6
- package/dist/utils/list-files-recursive.js.map +1 -1
- package/dist/utils/path-exists.d.ts +3 -0
- package/dist/utils/path-exists.d.ts.map +1 -0
- package/dist/utils/path-exists.js +12 -0
- package/dist/utils/path-exists.js.map +1 -0
- package/dist/utils/sleep.d.ts +3 -0
- package/dist/utils/sleep.d.ts.map +1 -0
- package/dist/utils/sleep.js +5 -0
- package/dist/utils/sleep.js.map +1 -0
- package/dist/verbose.d.ts +1 -1
- package/dist/verbose.d.ts.map +1 -1
- package/dist/verbose.js +5 -5
- package/dist/verbose.js.map +1 -1
- package/dist/verify/bundle-cli/index.d.ts +2 -2
- package/dist/verify/bundle-cli/index.d.ts.map +1 -1
- package/dist/verify/bundle-cli/index.js +6 -6
- package/dist/verify/bundle-cli/index.js.map +1 -1
- package/dist/verify/bundle-cli/read-python-source.d.ts +1 -1
- package/dist/verify/bundle-cli/read-python-source.d.ts.map +1 -1
- package/dist/verify/bundle-cli/read-python-source.js +5 -4
- package/dist/verify/bundle-cli/read-python-source.js.map +1 -1
- package/dist/verify/crate/extract-crate.d.ts +1 -1
- package/dist/verify/crate/extract-crate.d.ts.map +1 -1
- package/dist/verify/crate/extract-crate.js +5 -5
- package/dist/verify/crate/extract-crate.js.map +1 -1
- package/dist/verify/crate/find-crate-file.d.ts +1 -1
- package/dist/verify/crate/find-crate-file.d.ts.map +1 -1
- package/dist/verify/crate/find-crate-file.js +4 -4
- package/dist/verify/crate/find-crate-file.js.map +1 -1
- package/dist/verify/crate/has-crate-source.d.ts +1 -1
- package/dist/verify/crate/has-crate-source.d.ts.map +1 -1
- package/dist/verify/crate/has-crate-source.js +2 -2
- package/dist/verify/crate/has-crate-source.js.map +1 -1
- package/dist/verify/crate/index.d.ts +2 -2
- package/dist/verify/crate/index.d.ts.map +1 -1
- package/dist/verify/crate/index.js +8 -8
- package/dist/verify/crate/index.js.map +1 -1
- package/dist/verify/npm-tarball/download.d.ts +2 -2
- package/dist/verify/npm-tarball/download.d.ts.map +1 -1
- package/dist/verify/npm-tarball/download.js +7 -7
- package/dist/verify/npm-tarball/download.js.map +1 -1
- package/dist/verify/npm-tarball/local-dir-state.d.ts +1 -1
- package/dist/verify/npm-tarball/local-dir-state.d.ts.map +1 -1
- package/dist/verify/npm-tarball/local-dir-state.js +5 -4
- package/dist/verify/npm-tarball/local-dir-state.js.map +1 -1
- package/dist/verify/npm-tarball/main.d.ts.map +1 -1
- package/dist/verify/npm-tarball/main.js +8 -7
- package/dist/verify/npm-tarball/main.js.map +1 -1
- package/dist/verify/npm-tarball/resolve-url.js +4 -4
- package/dist/verify/npm-tarball/resolve-url.js.map +1 -1
- package/dist/verify/npm-tarball/triple.js +5 -5
- package/dist/verify/npm-tarball/triple.js.map +1 -1
- package/dist/verify/posture.js +1 -1
- package/dist/verify/posture.js.map +1 -1
- package/dist/verify/wheel/find-dist-file.d.ts +1 -1
- package/dist/verify/wheel/find-dist-file.d.ts.map +1 -1
- package/dist/verify/wheel/find-dist-file.js +6 -5
- package/dist/verify/wheel/find-dist-file.js.map +1 -1
- package/dist/verify/wheel/index.d.ts +2 -2
- package/dist/verify/wheel/index.d.ts.map +1 -1
- package/dist/verify/wheel/index.js +8 -7
- package/dist/verify/wheel/index.js.map +1 -1
- package/dist/verify/wheel/read-wheel-version.d.ts +1 -1
- package/dist/verify/wheel/read-wheel-version.d.ts.map +1 -1
- package/dist/verify/wheel/read-wheel-version.js +3 -3
- package/dist/verify/wheel/read-wheel-version.js.map +1 -1
- package/dist/wheel-abi.d.ts +2 -2
- package/dist/wheel-abi.d.ts.map +1 -1
- package/dist/wheel-abi.js +9 -7
- package/dist/wheel-abi.js.map +1 -1
- package/dist/write-crate-version.d.ts +1 -1
- package/dist/write-crate-version.d.ts.map +1 -1
- package/dist/write-crate-version.js +4 -4
- package/dist/write-crate-version.js.map +1 -1
- package/dist/write-launcher.d.ts +2 -2
- package/dist/write-launcher.d.ts.map +1 -1
- package/dist/write-launcher.js +9 -9
- package/dist/write-launcher.js.map +1 -1
- package/dist/write-resolved-cargo-version.d.ts +1 -1
- package/dist/write-resolved-cargo-version.d.ts.map +1 -1
- package/dist/write-resolved-cargo-version.js +6 -6
- package/dist/write-resolved-cargo-version.js.map +1 -1
- package/dist/write-version.d.ts +1 -1
- package/dist/write-version.d.ts.map +1 -1
- package/dist/write-version.js +7 -5
- package/dist/write-version.js.map +1 -1
- package/package.json +4 -4
package/dist/handlers/npm.js
CHANGED
|
@@ -7,10 +7,11 @@
|
|
|
7
7
|
* #19; they share isPublished and writeVersion, and add a platform-
|
|
8
8
|
* package orchestration step before the main publish.
|
|
9
9
|
*/
|
|
10
|
-
import {
|
|
11
|
-
import { readFileSync, writeFileSync } from 'node:fs';
|
|
10
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
12
11
|
import { join } from 'node:path';
|
|
13
12
|
import { normalizeTarget, TransientError } from '../types.js';
|
|
13
|
+
import { execCapture } from '../utils/exec-capture.js';
|
|
14
|
+
import { ExecError } from '../utils/exec-error.js';
|
|
14
15
|
import { looksLikePublishOverRace, looksLikeTlogDuplicate, normalizeBuild, publishPlatforms, } from './npm-platform.js';
|
|
15
16
|
import { buildSubprocessEnv, nonEmpty } from '../env.js';
|
|
16
17
|
import { ErrorCodes } from '../error-codes.js';
|
|
@@ -18,52 +19,56 @@ import { USER_AGENT } from '../version.js';
|
|
|
18
19
|
function npmNameFor(pkg) {
|
|
19
20
|
return pkg.npm ?? pkg.name;
|
|
20
21
|
}
|
|
21
|
-
function isPublishedImpl(pkg, version, ctx) {
|
|
22
|
+
async function isPublishedImpl(pkg, version, ctx) {
|
|
22
23
|
const name = npmNameFor(pkg);
|
|
23
24
|
try {
|
|
24
|
-
|
|
25
|
+
await execCapture('npm', ['view', `${name}@${version}`, 'version'], {
|
|
25
26
|
cwd: ctx.cwd,
|
|
26
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
27
27
|
});
|
|
28
|
-
return
|
|
28
|
+
return true;
|
|
29
29
|
}
|
|
30
30
|
catch {
|
|
31
31
|
// `npm view` exits non-zero when the version doesn't exist.
|
|
32
32
|
// We treat every non-zero as "not published"; the subsequent
|
|
33
33
|
// publish step will surface real auth/network errors there.
|
|
34
|
-
return
|
|
34
|
+
return false;
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
function writeVersionImpl(pkg, version, _ctx) {
|
|
37
|
+
async function writeVersionImpl(pkg, version, _ctx) {
|
|
38
38
|
const p = join(pkg.path, 'package.json');
|
|
39
39
|
let original;
|
|
40
40
|
try {
|
|
41
|
-
original =
|
|
41
|
+
original = await readFile(p, 'utf8');
|
|
42
42
|
}
|
|
43
43
|
catch (err) {
|
|
44
44
|
if (err.code === 'ENOENT') {
|
|
45
|
-
|
|
45
|
+
throw new Error(`package.json not found at ${p}`, { cause: err });
|
|
46
46
|
}
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
throw err instanceof Error
|
|
48
|
+
? err
|
|
49
|
+
: /* v8 ignore next -- readFile only throws ErrnoException Errors, so this String(err) fallback is unreachable */
|
|
50
|
+
new Error(String(err));
|
|
49
51
|
}
|
|
50
52
|
let parsed;
|
|
51
53
|
try {
|
|
52
54
|
parsed = JSON.parse(original);
|
|
53
55
|
}
|
|
54
56
|
catch (err) {
|
|
55
|
-
|
|
57
|
+
throw new Error(`package.json JSON parse error: ${err instanceof Error
|
|
58
|
+
? err.message
|
|
59
|
+
: /* v8 ignore next -- JSON.parse only throws SyntaxError; the String(err) fallback is unreachable */
|
|
60
|
+
String(err)}`, { cause: err });
|
|
56
61
|
}
|
|
57
62
|
if (parsed.version === version) {
|
|
58
|
-
return
|
|
63
|
+
return [];
|
|
59
64
|
}
|
|
60
65
|
parsed.version = version;
|
|
61
66
|
// Preserve the existing indentation shape (2-space default if we
|
|
62
67
|
// can't detect) and the trailing newline when present.
|
|
63
68
|
const indent = detectIndent(original);
|
|
64
69
|
const trailing = original.endsWith('\n') ? '\n' : '';
|
|
65
|
-
|
|
66
|
-
return
|
|
70
|
+
await writeFile(p, JSON.stringify(parsed, null, indent) + trailing, 'utf8');
|
|
71
|
+
return [p];
|
|
67
72
|
}
|
|
68
73
|
async function publishImpl(pkg, version, ctx) {
|
|
69
74
|
if (await isPublishedImpl(pkg, version, ctx)) {
|
|
@@ -107,7 +112,7 @@ async function publishImpl(pkg, version, ctx) {
|
|
|
107
112
|
// defensive backstop for direct handler calls that bypass the
|
|
108
113
|
// publish pipeline.
|
|
109
114
|
if (hasOidc) {
|
|
110
|
-
assertRepositoryField(pkg.path);
|
|
115
|
+
await assertRepositoryField(pkg.path);
|
|
111
116
|
}
|
|
112
117
|
const access = pkg.access ?? 'public';
|
|
113
118
|
const args = ['publish', `--access=${access}`];
|
|
@@ -121,16 +126,15 @@ async function publishImpl(pkg, version, ctx) {
|
|
|
121
126
|
args.push(`--registry=${registryOverride}`);
|
|
122
127
|
}
|
|
123
128
|
try {
|
|
124
|
-
|
|
129
|
+
await execCapture('npm', args, {
|
|
125
130
|
cwd: pkg.path,
|
|
126
131
|
// #138: minimal env. Avoid leaking the whole parent process.env
|
|
127
132
|
// (and any unrelated step secrets) to npm.
|
|
128
133
|
env: buildSubprocessEnv(ctx.env),
|
|
129
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
130
134
|
});
|
|
131
135
|
}
|
|
132
136
|
catch (err) {
|
|
133
|
-
const stderr = err.stderr
|
|
137
|
+
const stderr = err instanceof ExecError ? err.stderr.trim() : undefined;
|
|
134
138
|
const base = err instanceof Error ? err.message : String(err);
|
|
135
139
|
const name = npmNameFor(pkg);
|
|
136
140
|
// npm CLI's retry-on-transient-network-error: a successful PUT that
|
|
@@ -161,7 +165,10 @@ async function publishImpl(pkg, version, ctx) {
|
|
|
161
165
|
`(TLOG_CREATE_ENTRY_ERROR) and ${name}@${version} is not on the ` +
|
|
162
166
|
`registry — npm's provenance retry re-submitted an identical ` +
|
|
163
167
|
`attestation. Re-run the release to mint a fresh attestation.` +
|
|
164
|
-
`${stderr
|
|
168
|
+
`${stderr
|
|
169
|
+
? `\n${stderr}`
|
|
170
|
+
: /* v8 ignore next -- looksLikeTlogDuplicate only matches a non-empty stderr, so this '' fallback is unreachable */
|
|
171
|
+
''}`, { cause: err });
|
|
165
172
|
}
|
|
166
173
|
// npm trusted publishing (OIDC) requires the package to already
|
|
167
174
|
// exist on the registry; the first-ever publish must go through a
|
|
@@ -187,9 +194,9 @@ async function publishImpl(pkg, version, ctx) {
|
|
|
187
194
|
};
|
|
188
195
|
}
|
|
189
196
|
/* ------------------------------ internals ------------------------------ */
|
|
190
|
-
function assertRepositoryField(path) {
|
|
197
|
+
async function assertRepositoryField(path) {
|
|
191
198
|
const pkgJsonPath = join(path, 'package.json');
|
|
192
|
-
const raw =
|
|
199
|
+
const raw = await readFile(pkgJsonPath, 'utf8');
|
|
193
200
|
const pkg = JSON.parse(raw);
|
|
194
201
|
const repository = pkg.repository;
|
|
195
202
|
// Accept either the canonical object form (`{ type, url, … }`) or
|
package/dist/handlers/npm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npm.js","sourceRoot":"","sources":["../../src/handlers/npm.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"npm.js","sourceRoot":"","sources":["../../src/handlers/npm.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAmF,MAAM,aAAa,CAAC;AAC/I,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,cAAc,EACd,gBAAgB,GAGjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAmB3C,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,GAAW,EAAE,OAAe,EAAE,GAAQ;IACnE,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,GAAG,IAAI,IAAI,OAAO,EAAE,EAAE,SAAS,CAAC,EAAE;YAClE,GAAG,EAAE,GAAG,CAAC,GAAG;SACb,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,4DAA4D;QAC5D,6DAA6D;QAC7D,4DAA4D;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,GAAW,EAAE,OAAe,EAAE,IAAS;IACrE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACzC,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,GAAG,YAAY,KAAK;YACxB,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,+GAA+G;gBAC/G,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,MAA+B,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAA4B,CAAC;IAC3D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,kCACE,GAAG,YAAY,KAAK;YAClB,CAAC,CAAC,GAAG,CAAC,OAAO;YACb,CAAC,CAAC,mGAAmG;gBACnG,MAAM,CAAC,GAAG,CAChB,EAAE,EACF,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;QAAA,OAAO,EAAE,CAAC;IAAA,CAAC;IAC5C,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,iEAAiE;IACjE,uDAAuD;IACvD,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5E,OAAO,CAAC,CAAC,CAAC,CAAC;AACb,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,GAAW,EAAE,OAAe,EAAE,GAAQ;IAC/D,IAAI,MAAM,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;QAC7C,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;IACzC,CAAC;IAED,oEAAoE;IACpE,uEAAuE;IACvE,wDAAwD;IACxD,MAAM,YAAY,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnF,MAAM,WAAW,GAAgB;YAC/B,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,KAAK,EAAE,YAAY;YACnB,iEAAiE;YACjE,kEAAkE;YAClE,6DAA6D;YAC7D,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;SAC3D,CAAC;QACF,MAAM,gBAAgB,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACpD,CAAC;IAED,uEAAuE;IACvE,qEAAqE;IACrE,uEAAuE;IACvE,qEAAqE;IACrE,mEAAmE;IACnE,oEAAoE;IACpE,iEAAiE;IACjE,wCAAwC;IACxC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAExG,MAAM,OAAO,GACX,CAAC,gBAAgB;QACjB,OAAO,CACL,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,8BAA8B,CAAC;YAC9C,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CACvD,CAAC;IAEJ,4DAA4D;IAC5D,iEAAiE;IACjE,gEAAgE;IAChE,0DAA0D;IAC1D,8DAA8D;IAC9D,oBAAoB;IACpB,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,QAAQ,CAAC;IACtC,MAAM,IAAI,GAAa,CAAC,SAAS,EAAE,YAAY,MAAM,EAAE,CAAC,CAAC;IACzD,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IAAA,CAAC;IAC7C,IAAI,OAAO,EAAE,CAAC;QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAAA,CAAC;IACzC,IAAI,gBAAgB,EAAE,CAAC;QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,gBAAgB,EAAE,CAAC,CAAC;IAAA,CAAC;IAEpE,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE;YAC7B,GAAG,EAAE,GAAG,CAAC,IAAI;YACb,gEAAgE;YAChE,2CAA2C;YAC3C,GAAG,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC;SACjC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,GAAG,YAAY,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACxE,MAAM,IAAI,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9D,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAC7B,oEAAoE;QACpE,mEAAmE;QACnE,kEAAkE;QAClE,oEAAoE;QACpE,iEAAiE;QACjE,IAAI,wBAAwB,CAAC,MAAM,CAAC,EAAE,CAAC;YACrC,OAAO;gBACL,MAAM,EAAE,mBAAmB;gBAC3B,GAAG,EAAE,iCAAiC,IAAI,MAAM,OAAO,EAAE;aAC1D,CAAC;QACJ,CAAC;QACD,uEAAuE;QACvE,uEAAuE;QACvE,sEAAsE;QACtE,sEAAsE;QACtE,uEAAuE;QACvE,kCAAkC;QAClC,IAAI,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,IAAI,MAAM,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC7C,OAAO;oBACL,MAAM,EAAE,mBAAmB;oBAC3B,GAAG,EAAE,iCAAiC,IAAI,MAAM,OAAO,EAAE;iBAC1D,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,KAAK,CACb,uDAAuD;gBACrD,iCAAiC,IAAI,IAAI,OAAO,iBAAiB;gBACjE,8DAA8D;gBAC9D,8DAA8D;gBAC9D,GACE,MAAM;oBACJ,CAAC,CAAC,KAAK,MAAM,EAAE;oBACf,CAAC,CAAC,kHAAkH;wBAClH,EACN,EAAE,EACJ,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAC;QACJ,CAAC;QACD,gEAAgE;QAChE,kEAAkE;QAClE,iEAAiE;QACjE,6DAA6D;QAC7D,kCAAkC;QAClC,IAAI,OAAO,IAAI,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5C,IAAI,MAAM,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CACb;oBACE,yBAAyB,IAAI,6CAA6C;oBAC1E,6DAA6D;oBAC7D,+GAA+G;iBAChH,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAC;YACJ,CAAC;QACH,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAChG,CAAC;IAED,OAAO;QACL,MAAM,EAAE,WAAW;QACnB,GAAG,EAAE,gBAAgB;YACnB,CAAC,CAAC,GAAG,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,OAAO,EAAE;YAC1E,CAAC,CAAC,iCAAiC,UAAU,CAAC,GAAG,CAAC,MAAM,OAAO,EAAE;KACpE,CAAC;AACJ,CAAC;AAED,6EAA6E;AAE7E,KAAK,UAAU,qBAAqB,CAAC,IAAY;IAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA6B,CAAC;IACxD,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;IAClC,kEAAkE;IAClE,oEAAoE;IACpE,4DAA4D;IAC5D,gEAAgE;IAChE,cAAc;IACd,IAAI,EAAE,GAAG,KAAK,CAAC;IACf,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IACpC,CAAC;SAAM,IAAI,UAAU,KAAK,IAAI,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACjE,MAAM,GAAG,GAAI,UAAgC,CAAC,GAAG,CAAC;QAClD,EAAE,GAAG,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CACb,IAAI,UAAU,CAAC,sBAAsB,2EAA2E,WAAW,IAAI;YAC7H,+DAA+D,CAClE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,2DAA2D;AAC3D,SAAS,oBAAoB,CAAC,MAA0B;IACtD,IAAI,CAAC,MAAM,EAAE,CAAC;QAAA,OAAO,KAAK,CAAC;IAAA,CAAC;IAC5B,OAAO,qFAAqF,CAAC,IAAI,CAC/F,MAAM,CACP,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAY;IACnD,IAAI,CAAC;QACH,mEAAmE;QACnE,gEAAgE;QAChE,kEAAkE;QAClE,gEAAgE;QAChE,uDAAuD;QACvD,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,8BAA8B,kBAAkB,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAC/E;YACE,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE;YACrC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CACF,CAAC;QACF,OAAO,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,mEAAmE;QACnE,gEAAgE;QAChE,sDAAsD;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,oDAAoD;AACpD,SAAS,YAAY,CAAC,MAAc;IAClC,MAAM,CAAC,GAAG,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9C,0GAA0G;IAC1G,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAA,OAAO,CAAC,CAAC;IAAA,CAAC;IACnC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IAC/B,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAAA,OAAO,IAAI,CAAC;IAAA,CAAC;IACzC,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC;AAED;;;;;;;;;GASG;AACH,KAAK,UAAU,iBAAiB,CAAC,GAAW,EAAE,IAAS;IACrD,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,GAAG,GAAG,8BAA8B,kBAAkB,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;IAC5F,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IACvF,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA0C,CAAC;QACzE,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC;IAC3C,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAAA,OAAO,IAAI,CAAC;IAAA,CAAC;IACtC,MAAM,IAAI,cAAc,CAAC,0BAA0B,GAAG,aAAa,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AACnF,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,gBAAgB,CAAC,GAAW,EAAE,OAAe,EAAE,IAAS;IACrE,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,GAAG,GAAG,oDAAoD,IAAI,IAAI,OAAO,EAAE,CAAC;IAClF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IACvF,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAAA,OAAO,MAAM,CAAC;IAAA,CAAC;IACxC,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAAA,OAAO,OAAO,CAAC;IAAA,CAAC;IACzC,MAAM,IAAI,cAAc,CAAC,0BAA0B,GAAG,aAAa,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,CAAC,MAAM,GAAG,GAAY;IAC1B,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,eAAe;IAC5B,aAAa,EAAE,iBAAiB;IAChC,YAAY,EAAE,gBAAgB;IAC9B,YAAY,EAAE,gBAAgB;IAC9B,OAAO,EAAE,WAAW;CACrB,CAAC"}
|
package/dist/handlers/pypi.js
CHANGED
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
*
|
|
35
35
|
* Issue #17. Plan: §6.4, §12.2, §12.3, §13.1, §14.5, §16.1.
|
|
36
36
|
*/
|
|
37
|
-
import {
|
|
37
|
+
import { readFile } from 'node:fs/promises';
|
|
38
38
|
import { join } from 'node:path';
|
|
39
39
|
import { parse as parseToml } from 'smol-toml';
|
|
40
40
|
import { ErrorCodes } from '../error-codes.js';
|
|
@@ -61,30 +61,35 @@ async function isPublishedImpl(pkg, version, _ctx) {
|
|
|
61
61
|
/* v8 ignore next -- defensive 4xx fallthrough; PyPI returns 200/404 for this endpoint */
|
|
62
62
|
throw new Error(`pypi.org GET ${url} returned ${res.status}`);
|
|
63
63
|
}
|
|
64
|
-
function writeVersionImpl(pkg, version, ctx) {
|
|
64
|
+
async function writeVersionImpl(pkg, version, ctx) {
|
|
65
65
|
const pyProjectPath = join(pkg.path, 'pyproject.toml');
|
|
66
66
|
let original;
|
|
67
67
|
try {
|
|
68
|
-
original =
|
|
68
|
+
original = await readFile(pyProjectPath, 'utf8');
|
|
69
69
|
}
|
|
70
70
|
catch (err) {
|
|
71
71
|
if (err.code === 'ENOENT') {
|
|
72
|
-
|
|
72
|
+
throw new Error(`pyproject.toml not found at ${pyProjectPath}`, { cause: err });
|
|
73
73
|
}
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
throw err instanceof Error
|
|
75
|
+
? err
|
|
76
|
+
: /* v8 ignore next -- readFile only throws ErrnoException Errors, so this String(err) fallback is unreachable */
|
|
77
|
+
new Error(String(err));
|
|
76
78
|
}
|
|
77
79
|
let parsed;
|
|
78
80
|
try {
|
|
79
81
|
parsed = parseToml(original);
|
|
80
82
|
}
|
|
81
83
|
catch (err) {
|
|
82
|
-
const msg = err instanceof Error
|
|
83
|
-
|
|
84
|
+
const msg = err instanceof Error
|
|
85
|
+
? err.message
|
|
86
|
+
: /* v8 ignore next -- smol-toml only throws Error; the String(err) fallback is unreachable */
|
|
87
|
+
String(err);
|
|
88
|
+
throw new Error(`pyproject.toml: failed to parse ${pyProjectPath}: ${msg}`, { cause: err });
|
|
84
89
|
}
|
|
85
90
|
const project = parsed?.project;
|
|
86
91
|
if (!project) {
|
|
87
|
-
|
|
92
|
+
throw new Error(`pyproject.toml has no [project] table -- declare [project].dynamic = ["version"] with hatch-vcs (or setuptools-scm / maturin Cargo.toml). See ${DYNAMIC_VERSION_DOC_POINTER}.`);
|
|
88
93
|
}
|
|
89
94
|
if (projectDynamicIncludesVersion(project)) {
|
|
90
95
|
// Dynamic-version: hatch-vcs / setuptools-scm read the version
|
|
@@ -107,7 +112,7 @@ function writeVersionImpl(pkg, version, ctx) {
|
|
|
107
112
|
` Set the env var on the build job, before \`python -m build\` / \`maturin build\` runs.`,
|
|
108
113
|
` See ${DYNAMIC_VERSION_DOC_POINTER}`,
|
|
109
114
|
].join('\n'));
|
|
110
|
-
return
|
|
115
|
+
return [];
|
|
111
116
|
}
|
|
112
117
|
// Static literal — not allowed. Preflight should have rejected this
|
|
113
118
|
// already (`requirePypiVersionSource` runs before any writeVersion
|
|
@@ -115,9 +120,9 @@ function writeVersionImpl(pkg, version, ctx) {
|
|
|
115
120
|
// can be invoked directly; guard here so the failure mode is the
|
|
116
121
|
// same actionable error rather than a silent rewrite. See #333.
|
|
117
122
|
if (typeof project.version === 'string') {
|
|
118
|
-
|
|
123
|
+
throw new Error(`[${ErrorCodes.PYPI_STATIC_VERSION}] pyproject.toml at ${pyProjectPath} declares a static \`[project].version\` literal. Use \`[project].dynamic = ["version"]\` with hatch-vcs (recommended), setuptools-scm, or the maturin Cargo.toml-driven path — putitoutthere does not edit pyproject.toml at release time. See ${DYNAMIC_VERSION_DOC_POINTER}.`);
|
|
119
124
|
}
|
|
120
|
-
|
|
125
|
+
throw new Error(`pyproject.toml at ${pyProjectPath}: [project] table declares no version source -- add \`dynamic = ["version"]\`. See ${DYNAMIC_VERSION_DOC_POINTER}.`);
|
|
121
126
|
}
|
|
122
127
|
async function publishImpl(pkg, version, ctx) {
|
|
123
128
|
if (await isPublishedImpl(pkg, version, ctx)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pypi.js","sourceRoot":"","sources":["../../src/handlers/pypi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"pypi.js","sourceRoot":"","sources":["../../src/handlers/pypi.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,5 +28,5 @@ import type { MatrixRow } from './plan.js';
|
|
|
28
28
|
* subdir-shaped, nothing downloaded, crates-only / vanilla-npm plans
|
|
29
29
|
* that stage nothing).
|
|
30
30
|
*/
|
|
31
|
-
export declare function normalizeArtifactLayout(matrix: readonly MatrixRow[], artifactsRoot: string): void
|
|
31
|
+
export declare function normalizeArtifactLayout(matrix: readonly MatrixRow[], artifactsRoot: string): Promise<void>;
|
|
32
32
|
//# sourceMappingURL=normalize-artifacts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize-artifacts.d.ts","sourceRoot":"","sources":["../src/normalize-artifacts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;
|
|
1
|
+
{"version":3,"file":"normalize-artifacts.d.ts","sourceRoot":"","sources":["../src/normalize-artifacts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C;;;;;;;GAOG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,SAAS,SAAS,EAAE,EAC5B,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAyBf"}
|
|
@@ -19,8 +19,9 @@
|
|
|
19
19
|
*
|
|
20
20
|
* Issue #311.
|
|
21
21
|
*/
|
|
22
|
-
import {
|
|
22
|
+
import { mkdir, readdir, rename } from 'node:fs/promises';
|
|
23
23
|
import { join } from 'node:path';
|
|
24
|
+
import { pathExists } from './utils/path-exists.js';
|
|
24
25
|
/**
|
|
25
26
|
* Move dumped-into-root artifact files into the documented
|
|
26
27
|
* `<artifactsRoot>/<artifact_name>/` subdir when the plan expects
|
|
@@ -29,7 +30,7 @@ import { join } from 'node:path';
|
|
|
29
30
|
* subdir-shaped, nothing downloaded, crates-only / vanilla-npm plans
|
|
30
31
|
* that stage nothing).
|
|
31
32
|
*/
|
|
32
|
-
export function normalizeArtifactLayout(matrix, artifactsRoot) {
|
|
33
|
+
export async function normalizeArtifactLayout(matrix, artifactsRoot) {
|
|
33
34
|
// Only rows whose handler expects a staged artifact directory. crates
|
|
34
35
|
// publishes from the source tree (no upload step in the build job);
|
|
35
36
|
// vanilla npm packages the source on the publish runner. completeness
|
|
@@ -43,19 +44,19 @@ export function normalizeArtifactLayout(matrix, artifactsRoot) {
|
|
|
43
44
|
// Already in the documented layout — either a multi-artifact run
|
|
44
45
|
// earlier in the same job, or a developer running locally with the
|
|
45
46
|
// engine's contract honored. Either way, leave it alone.
|
|
46
|
-
if (
|
|
47
|
+
if (await pathExists(targetDir)) {
|
|
47
48
|
return;
|
|
48
49
|
}
|
|
49
|
-
if (!
|
|
50
|
+
if (!(await pathExists(artifactsRoot))) {
|
|
50
51
|
return;
|
|
51
52
|
}
|
|
52
|
-
const dumped =
|
|
53
|
+
const dumped = await readdir(artifactsRoot);
|
|
53
54
|
if (dumped.length === 0) {
|
|
54
55
|
return;
|
|
55
56
|
}
|
|
56
|
-
|
|
57
|
+
await mkdir(targetDir, { recursive: true });
|
|
57
58
|
for (const entry of dumped) {
|
|
58
|
-
|
|
59
|
+
await rename(join(artifactsRoot, entry), join(targetDir, entry));
|
|
59
60
|
}
|
|
60
61
|
}
|
|
61
62
|
//# sourceMappingURL=normalize-artifacts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize-artifacts.js","sourceRoot":"","sources":["../src/normalize-artifacts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"normalize-artifacts.js","sourceRoot":"","sources":["../src/normalize-artifacts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAA4B,EAC5B,aAAqB;IAErB,sEAAsE;IACtE,oEAAoE;IACpE,sEAAsE;IACtE,iEAAiE;IACjE,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAC3E,CAAC;IACF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAAA,OAAO;IAAA,CAAC;IAEpC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;IACzB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;IACzD,iEAAiE;IACjE,mEAAmE;IACnE,yDAAyD;IACzD,IAAI,MAAM,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAAA,OAAO;IAAA,CAAC;IAC1C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;QAAA,OAAO;IAAA,CAAC;IAEjD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAAA,OAAO;IAAA,CAAC;IAElC,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IACnE,CAAC;AACH,CAAC"}
|
package/dist/plan-status.js
CHANGED
|
@@ -27,7 +27,7 @@ import { computeSkew } from './plan-skew.js';
|
|
|
27
27
|
export async function computePlanStatus(opts) {
|
|
28
28
|
const cwd = opts.cwd;
|
|
29
29
|
const cfgPath = opts.configPath ?? join(cwd, 'putitoutthere.toml');
|
|
30
|
-
const config = loadConfig(cfgPath);
|
|
30
|
+
const config = await loadConfig(cfgPath);
|
|
31
31
|
const ctx = {
|
|
32
32
|
cwd,
|
|
33
33
|
log: createLogger(),
|
package/dist/plan-status.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-status.js","sourceRoot":"","sources":["../src/plan-status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAgB,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAI7C,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAuB;IAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACrB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"plan-status.js","sourceRoot":"","sources":["../src/plan-status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAgB,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAI7C,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAuB;IAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACrB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,GAAG,GAAQ;QACf,GAAG;QACH,GAAG,EAAE,YAAY,EAAE;QACnB,GAAG,EAAE,OAAO,CAAC,GAA6B;QAC1C,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE;KAC/C,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC;QACxB,GAAG;QACH,UAAU,EAAE,OAAO;QACnB,eAAe,EAAE,IAAI,CAAC,eAAe;KACtC,CAAC,CAAC;IAEH,sEAAsE;IACtE,mDAAmD;IACnD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAkB,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAAA,SAAS;QAAA,CAAC;QACnC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnB,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;QAClC,IAAI,OAAgB,CAAC;QACrB,IAAI,CAAC;YACH,OAAO,GAAG,CAAC,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QACjG,CAAC;QAAC,MAAM,CAAC;YACP,iEAAiE;YACjE,iCAAiC;YACjC,OAAO,GAAG,SAAS,CAAC;QACtB,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;AACnE,CAAC"}
|
package/dist/plan.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../src/plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAiBH,OAAO,EAA8B,KAAK,IAAI,EAAoB,MAAM,YAAY,CAAC;AAKrF,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IAaf,UAAU,CAAC,EAAE;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,mBAAmB,EAAE,OAAO,CAAC;KAC9B,CAAC;IAQF,cAAc,CAAC,EAAE,MAAM,CAAC;IASxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../src/plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAiBH,OAAO,EAA8B,KAAK,IAAI,EAAoB,MAAM,YAAY,CAAC;AAKrF,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IAaf,UAAU,CAAC,EAAE;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,mBAAmB,EAAE,OAAO,CAAC;KAC9B,CAAC;IAQF,cAAc,CAAC,EAAE,MAAM,CAAC;IASxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAgDlE"}
|
package/dist/plan.js
CHANGED
|
@@ -20,23 +20,23 @@ import { normalizeTarget } from './types.js';
|
|
|
20
20
|
import { parseTrailer } from './trailer.js';
|
|
21
21
|
import { parseReleasePackages } from './release-packages.js';
|
|
22
22
|
import { bump as bumpVersion, firstVersion } from './version.js';
|
|
23
|
-
export function plan(opts) {
|
|
23
|
+
export async function plan(opts) {
|
|
24
24
|
const cwd = opts.cwd;
|
|
25
25
|
const cfgPath = opts.configPath ?? join(cwd, 'putitoutthere.toml');
|
|
26
|
-
const config = loadConfig(cfgPath);
|
|
26
|
+
const config = await loadConfig(cfgPath);
|
|
27
27
|
// Manual release: an explicit package list short-circuits change
|
|
28
28
|
// detection. `release_packages` is the override for re-releasing
|
|
29
29
|
// packages that have no new commits (e.g. after a putitoutthere bug
|
|
30
30
|
// fix). The named packages — and only those — are planned.
|
|
31
31
|
const manual = parseReleasePackages(opts.releasePackages);
|
|
32
32
|
if (manual !== null) {
|
|
33
|
-
return
|
|
33
|
+
return planManual(config.packages, manual, cwd);
|
|
34
34
|
}
|
|
35
35
|
// What changed since the last release per package?
|
|
36
|
-
const head = headCommit({ cwd });
|
|
37
|
-
const trailer = resolveTrailer(head, cwd);
|
|
36
|
+
const head = await headCommit({ cwd });
|
|
37
|
+
const trailer = await resolveTrailer(head, cwd);
|
|
38
38
|
if (trailer?.bump === 'skip') {
|
|
39
|
-
return
|
|
39
|
+
return [];
|
|
40
40
|
}
|
|
41
41
|
// Compute cascade. For each package with a last tag, diff against
|
|
42
42
|
// that tag. Packages without a last tag are first-release: force-
|
|
@@ -44,7 +44,7 @@ export function plan(opts) {
|
|
|
44
44
|
//
|
|
45
45
|
// Seed detection is per-package: a package only cascades on its own
|
|
46
46
|
// diff, never on another package's pre-tag history. See #126.
|
|
47
|
-
const { changesByPackage, firstRelease } = collectChanges(config.packages, cwd);
|
|
47
|
+
const { changesByPackage, firstRelease } = await collectChanges(config.packages, cwd);
|
|
48
48
|
const cascaded = new Set(computeCascade(config.packages, changesByPackage).map((p) => p.name));
|
|
49
49
|
for (const name of firstRelease) {
|
|
50
50
|
cascaded.add(name);
|
|
@@ -55,18 +55,18 @@ export function plan(opts) {
|
|
|
55
55
|
cascaded.add(name);
|
|
56
56
|
}
|
|
57
57
|
if (cascaded.size === 0) {
|
|
58
|
-
return
|
|
58
|
+
return [];
|
|
59
59
|
}
|
|
60
60
|
const rows = [];
|
|
61
61
|
for (const p of config.packages) {
|
|
62
62
|
if (!cascaded.has(p.name)) {
|
|
63
63
|
continue;
|
|
64
64
|
}
|
|
65
|
-
const version = nextVersion(p, trailer?.bump, cwd, forced);
|
|
66
|
-
const pkgRows = rowsForPackage(p, version, cwd);
|
|
65
|
+
const version = await nextVersion(p, trailer?.bump, cwd, forced);
|
|
66
|
+
const pkgRows = await rowsForPackage(p, version, cwd);
|
|
67
67
|
rows.push(...pkgRows);
|
|
68
68
|
}
|
|
69
|
-
return
|
|
69
|
+
return rows;
|
|
70
70
|
}
|
|
71
71
|
/* ----------------------------- internals ----------------------------- */
|
|
72
72
|
/**
|
|
@@ -76,7 +76,7 @@ export function plan(opts) {
|
|
|
76
76
|
* used verbatim, a bump keyword bumps the last tag (or first_version
|
|
77
77
|
* when the package has no tag yet).
|
|
78
78
|
*/
|
|
79
|
-
function planManual(packages, manual, cwd) {
|
|
79
|
+
async function planManual(packages, manual, cwd) {
|
|
80
80
|
const known = new Set(packages.map((p) => p.name));
|
|
81
81
|
for (const name of manual.keys()) {
|
|
82
82
|
if (!known.has(name)) {
|
|
@@ -91,11 +91,11 @@ function planManual(packages, manual, cwd) {
|
|
|
91
91
|
if (entry === undefined) {
|
|
92
92
|
continue;
|
|
93
93
|
}
|
|
94
|
-
rows.push(...rowsForPackage(p, manualVersion(p, entry, cwd), cwd));
|
|
94
|
+
rows.push(...(await rowsForPackage(p, await manualVersion(p, entry, cwd), cwd)));
|
|
95
95
|
}
|
|
96
96
|
return rows;
|
|
97
97
|
}
|
|
98
|
-
function manualVersion(pkg, entry, cwd) {
|
|
98
|
+
async function manualVersion(pkg, entry, cwd) {
|
|
99
99
|
// Explicit semver is used as-is. It is intentionally NOT compared
|
|
100
100
|
// against the last tag: re-releasing the same version is valid when
|
|
101
101
|
// the prior publish failed before reaching the registry, and the
|
|
@@ -107,14 +107,14 @@ function manualVersion(pkg, entry, cwd) {
|
|
|
107
107
|
// A bump keyword bumps the last tag, or first_version when the named
|
|
108
108
|
// package has never been released. `parseTagVersion` is non-null
|
|
109
109
|
// here: `lastTag` only ever returns a tag the format already matched.
|
|
110
|
-
const tag = lastTag(pkg.name, pkg.tag_format, { cwd });
|
|
110
|
+
const tag = await lastTag(pkg.name, pkg.tag_format, { cwd });
|
|
111
111
|
if (tag === null) {
|
|
112
112
|
return firstVersion(pkg);
|
|
113
113
|
}
|
|
114
114
|
const lastVersion = parseTagVersion(pkg.tag_format, pkg.name, tag);
|
|
115
115
|
return bumpVersion(lastVersion, entry.bump);
|
|
116
116
|
}
|
|
117
|
-
function collectChanges(packages, cwd) {
|
|
117
|
+
async function collectChanges(packages, cwd) {
|
|
118
118
|
const changesByPackage = new Map();
|
|
119
119
|
const firstRelease = new Set();
|
|
120
120
|
// Packages in a polyglot repo typically tag together, so many of them
|
|
@@ -123,22 +123,22 @@ function collectChanges(packages, cwd) {
|
|
|
123
123
|
// instead of one per package (#140).
|
|
124
124
|
const diffCache = new Map();
|
|
125
125
|
for (const p of packages) {
|
|
126
|
-
const tag = lastTag(p.name, p.tag_format, { cwd });
|
|
126
|
+
const tag = await lastTag(p.name, p.tag_format, { cwd });
|
|
127
127
|
if (tag === null) {
|
|
128
128
|
firstRelease.add(p.name);
|
|
129
129
|
continue;
|
|
130
130
|
}
|
|
131
131
|
let diff = diffCache.get(tag);
|
|
132
132
|
if (diff === undefined) {
|
|
133
|
-
diff = new Set(diffNames(tag, 'HEAD', { cwd }));
|
|
133
|
+
diff = new Set(await diffNames(tag, 'HEAD', { cwd }));
|
|
134
134
|
diffCache.set(tag, diff);
|
|
135
135
|
}
|
|
136
136
|
changesByPackage.set(p.name, diff);
|
|
137
137
|
}
|
|
138
138
|
return { changesByPackage, firstRelease };
|
|
139
139
|
}
|
|
140
|
-
function nextVersion(pkg, trailerBump, cwd, trailerPackages) {
|
|
141
|
-
const tag = lastTag(pkg.name, pkg.tag_format, { cwd });
|
|
140
|
+
async function nextVersion(pkg, trailerBump, cwd, trailerPackages) {
|
|
141
|
+
const tag = await lastTag(pkg.name, pkg.tag_format, { cwd });
|
|
142
142
|
if (tag === null) {
|
|
143
143
|
return firstVersion(pkg);
|
|
144
144
|
}
|
|
@@ -154,7 +154,7 @@ function nextVersion(pkg, trailerBump, cwd, trailerPackages) {
|
|
|
154
154
|
const bumpType = wantsBump ? trailerBump : 'patch';
|
|
155
155
|
return bumpVersion(lastVersion, bumpType);
|
|
156
156
|
}
|
|
157
|
-
function rowsForPackage(pkg, version, cwd) {
|
|
157
|
+
async function rowsForPackage(pkg, version, cwd) {
|
|
158
158
|
// #230: actions/upload-artifact@v4 forbids `/` in artifact names, so
|
|
159
159
|
// any package name containing a slash (the polyglot-monorepo
|
|
160
160
|
// grouping shape, e.g. `py/foo`, `js/bar`) needs to be encoded
|
|
@@ -193,7 +193,7 @@ function rowsForPackage(pkg, version, cwd) {
|
|
|
193
193
|
// Resolve the set — config `python_versions` override, else
|
|
194
194
|
// `requires-python` inference, else a single default — and fan
|
|
195
195
|
// the maturin per-target wheel rows across it.
|
|
196
|
-
const pyVersions = resolvePythonVersions(pkg, cwd);
|
|
196
|
+
const pyVersions = await resolvePythonVersions(pkg, cwd);
|
|
197
197
|
// The sdist and pure-Python hatch wheel are version-agnostic but
|
|
198
198
|
// still need an interpreter to run the build; use the newest
|
|
199
199
|
// resolved version.
|
|
@@ -205,7 +205,7 @@ function rowsForPackage(pkg, version, cwd) {
|
|
|
205
205
|
// duplicate wheels that then race-corrupt at the consumer's
|
|
206
206
|
// `merge-multiple` download. Collapse the fan to a single wheel
|
|
207
207
|
// built on the newest resolved interpreter.
|
|
208
|
-
const wheelPyVersions = build === 'maturin' && isVersionIndependentWheel(pkg.path, cwd)
|
|
208
|
+
const wheelPyVersions = build === 'maturin' && (await isVersionIndependentWheel(pkg.path, cwd))
|
|
209
209
|
? [buildPython]
|
|
210
210
|
: pyVersions;
|
|
211
211
|
const multiPy = wheelPyVersions.length > 1;
|
|
@@ -252,7 +252,9 @@ function rowsForPackage(pkg, version, cwd) {
|
|
|
252
252
|
artifact_path: at('dist'),
|
|
253
253
|
path: pkg.path,
|
|
254
254
|
python_version: buildPython,
|
|
255
|
+
/* v8 ignore start -- pypi build defaults to 'setuptools' at config-load, so it's always defined here; the empty-spread fallback is defensive */
|
|
255
256
|
...(build !== undefined ? { build } : {}),
|
|
257
|
+
/* v8 ignore stop */
|
|
256
258
|
});
|
|
257
259
|
// #324: pure-Python hatch packages also emit a `wheel-any` row.
|
|
258
260
|
// `pypa/build`'s default on a pure-Python tree produces both an
|
|
@@ -402,18 +404,18 @@ function defaultRunsOn(target) {
|
|
|
402
404
|
* the operator actually wrote the trailer into. Without this fallback,
|
|
403
405
|
* merge-commit merges silently strand every release.
|
|
404
406
|
*/
|
|
405
|
-
function resolveTrailer(head, cwd) {
|
|
406
|
-
const direct = parseTrailer(commitBody(head, { cwd }));
|
|
407
|
+
async function resolveTrailer(head, cwd) {
|
|
408
|
+
const direct = parseTrailer(await commitBody(head, { cwd }));
|
|
407
409
|
if (direct) {
|
|
408
410
|
return direct;
|
|
409
411
|
}
|
|
410
|
-
const parents = commitParents(head, { cwd });
|
|
412
|
+
const parents = await commitParents(head, { cwd });
|
|
411
413
|
if (parents.length < 2) {
|
|
412
414
|
return null;
|
|
413
415
|
}
|
|
414
416
|
for (let i = 1; i < parents.length; i++) {
|
|
415
417
|
const parentSha = parents[i];
|
|
416
|
-
const t = parseTrailer(commitBody(parentSha, { cwd }));
|
|
418
|
+
const t = parseTrailer(await commitBody(parentSha, { cwd }));
|
|
417
419
|
if (t) {
|
|
418
420
|
return t;
|
|
419
421
|
}
|