putitoutthere 0.2.68 → 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/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/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 +51 -56
- package/dist/check.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +12 -11
- package/dist/cli.js.map +1 -1
- package/dist/completeness.d.ts +2 -2
- package/dist/completeness.d.ts.map +1 -1
- package/dist/completeness.js +13 -12
- package/dist/completeness.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -3
- 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 +42 -48
- 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 +1 -1
- package/dist/handlers/crates.d.ts.map +1 -1
- package/dist/handlers/crates.js +27 -32
- package/dist/handlers/crates.js.map +1 -1
- package/dist/handlers/npm-platform.d.ts.map +1 -1
- package/dist/handlers/npm-platform.js +34 -36
- package/dist/handlers/npm-platform.js.map +1 -1
- package/dist/handlers/npm.d.ts.map +1 -1
- package/dist/handlers/npm.js +23 -24
- package/dist/handlers/npm.js.map +1 -1
- package/dist/handlers/pypi.d.ts.map +1 -1
- package/dist/handlers/pypi.js +12 -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 +27 -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.js +14 -14
- 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/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 +7 -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 +5 -5
- package/dist/write-version.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { stat } from 'node:fs/promises';
|
|
2
|
+
/** Async replacement for `existsSync` (node:fs/promises has no exists). */
|
|
3
|
+
export async function pathExists(path) {
|
|
4
|
+
try {
|
|
5
|
+
await stat(path);
|
|
6
|
+
return true;
|
|
7
|
+
}
|
|
8
|
+
catch {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=path-exists.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-exists.js","sourceRoot":"","sources":["../../src/utils/path-exists.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sleep.d.ts","sourceRoot":"","sources":["../../src/utils/sleep.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sleep.js","sourceRoot":"","sources":["../../src/utils/sleep.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,MAAM,UAAU,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC"}
|
package/dist/verbose.d.ts
CHANGED
|
@@ -54,5 +54,5 @@ export interface DumpOptions {
|
|
|
54
54
|
*/
|
|
55
55
|
envSources?: readonly EnvSource[];
|
|
56
56
|
}
|
|
57
|
-
export declare function dumpFailure(err: Error, ctx: FailureContext, opts: DumpOptions): void
|
|
57
|
+
export declare function dumpFailure(err: Error, ctx: FailureContext, opts: DumpOptions): Promise<void>;
|
|
58
58
|
//# sourceMappingURL=verbose.d.ts.map
|
package/dist/verbose.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verbose.d.ts","sourceRoot":"","sources":["../src/verbose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAU,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;CACnC;AAKD,
|
|
1
|
+
{"version":3,"file":"verbose.d.ts","sourceRoot":"","sources":["../src/verbose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAU,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;CACnC;AAKD,wBAAsB,WAAW,CAC/B,GAAG,EAAE,KAAK,EACV,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,IAAI,CAAC,CA6Bf"}
|
package/dist/verbose.js
CHANGED
|
@@ -10,11 +10,11 @@
|
|
|
10
10
|
*
|
|
11
11
|
* Issue #15.
|
|
12
12
|
*/
|
|
13
|
-
import {
|
|
13
|
+
import { appendFile } from 'node:fs/promises';
|
|
14
14
|
import { redact } from './log.js';
|
|
15
15
|
const SUMMARY_CAP = 4 * 1024 * 1024; // GHA job-summary ceiling: 1 MiB per step, 20 MiB total. Cap at 4 MiB to stay well under on a single failure.
|
|
16
16
|
const TRUNC_NOTE = '\n\n_… truncated. Run `gh run view --log` for the full log._\n';
|
|
17
|
-
export function dumpFailure(err, ctx, opts) {
|
|
17
|
+
export async function dumpFailure(err, ctx, opts) {
|
|
18
18
|
// Default redact() already scans process.env. When callers supply
|
|
19
19
|
// additional envSources (ctx.env from publish.ts, or a per-handler
|
|
20
20
|
// env layer), prepend process.env so both get scanned and the cache
|
|
@@ -23,7 +23,7 @@ export function dumpFailure(err, ctx, opts) {
|
|
|
23
23
|
? [process.env, ...opts.envSources]
|
|
24
24
|
: undefined;
|
|
25
25
|
const md = redact(renderMarkdown(err, ctx), sources);
|
|
26
|
-
writeSummary(truncate(md));
|
|
26
|
+
await writeSummary(truncate(md));
|
|
27
27
|
// Phase 3 / Idea 6. The markdown summary above is auth-gated on
|
|
28
28
|
// private repos and not always reachable to a foreign agent helping
|
|
29
29
|
// debug from outside; a workflow-command annotation written to
|
|
@@ -124,11 +124,11 @@ function truncate(md) {
|
|
|
124
124
|
const head = md.slice(0, SUMMARY_CAP - TRUNC_NOTE.length);
|
|
125
125
|
return head + TRUNC_NOTE;
|
|
126
126
|
}
|
|
127
|
-
function writeSummary(md) {
|
|
127
|
+
async function writeSummary(md) {
|
|
128
128
|
const path = process.env.GITHUB_STEP_SUMMARY;
|
|
129
129
|
if (!path) {
|
|
130
130
|
return;
|
|
131
131
|
} // local runs / non-GHA CI — summary is a no-op
|
|
132
|
-
|
|
132
|
+
await appendFile(path, md, 'utf8');
|
|
133
133
|
}
|
|
134
134
|
//# sourceMappingURL=verbose.js.map
|
package/dist/verbose.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verbose.js","sourceRoot":"","sources":["../src/verbose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"verbose.js","sourceRoot":"","sources":["../src/verbose.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,9 +17,9 @@
|
|
|
17
17
|
* the pure-Node reader `verify wheel` (#450) already ships — no `unzip`, so
|
|
18
18
|
* this runs on every platform the maturin matrix builds on, Windows
|
|
19
19
|
* included — and the match mirrors the bash `grep -qE
|
|
20
|
-
* "(^|/)<stage_suffix>/<expected>$"`.
|
|
20
|
+
* "(^|/)<stage_suffix>/<expected>$"`. Async throughout. Returns the
|
|
21
21
|
* process exit code (0 ok, 1 on a miss).
|
|
22
22
|
*/
|
|
23
23
|
import type { VerifyBundleCliOptions } from './types.js';
|
|
24
|
-
export declare function verifyBundleCli(opts: VerifyBundleCliOptions): number
|
|
24
|
+
export declare function verifyBundleCli(opts: VerifyBundleCliOptions): Promise<number>;
|
|
25
25
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/verify/bundle-cli/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AASH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/verify/bundle-cli/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AASH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,wBAAsB,eAAe,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CA4CnF"}
|
|
@@ -17,24 +17,24 @@
|
|
|
17
17
|
* the pure-Node reader `verify wheel` (#450) already ships — no `unzip`, so
|
|
18
18
|
* this runs on every platform the maturin matrix builds on, Windows
|
|
19
19
|
* included — and the match mirrors the bash `grep -qE
|
|
20
|
-
* "(^|/)<stage_suffix>/<expected>$"`.
|
|
20
|
+
* "(^|/)<stage_suffix>/<expected>$"`. Async throughout. Returns the
|
|
21
21
|
* process exit code (0 ok, 1 on a miss).
|
|
22
22
|
*/
|
|
23
|
-
import {
|
|
23
|
+
import { readFile } from 'node:fs/promises';
|
|
24
24
|
import { basename, isAbsolute, join, resolve } from 'node:path';
|
|
25
25
|
import { findDistFile } from '../wheel/find-dist-file.js';
|
|
26
26
|
import { readZipEntry } from '../wheel/read-zip-entry.js';
|
|
27
27
|
import { computeStageSuffix } from './compute-stage-suffix.js';
|
|
28
28
|
import { readPythonSource } from './read-python-source.js';
|
|
29
|
-
export function verifyBundleCli(opts) {
|
|
29
|
+
export async function verifyBundleCli(opts) {
|
|
30
30
|
const pkgDir = isAbsolute(opts.path) ? opts.path : resolve(opts.cwd, opts.path);
|
|
31
31
|
const distDir = join(pkgDir, 'dist');
|
|
32
|
-
const wheel = findDistFile(distDir, '.whl');
|
|
32
|
+
const wheel = await findDistFile(distDir, '.whl');
|
|
33
33
|
if (wheel === null) {
|
|
34
34
|
process.stdout.write(`::error::no wheel produced under ${distDir}\n`);
|
|
35
35
|
return 1;
|
|
36
36
|
}
|
|
37
|
-
const stageSuffix = computeStageSuffix(opts.stageTo, readPythonSource(pkgDir));
|
|
37
|
+
const stageSuffix = computeStageSuffix(opts.stageTo, await readPythonSource(pkgDir));
|
|
38
38
|
const ext = opts.target.includes('windows') ? '.exe' : '';
|
|
39
39
|
const expected = `${opts.bin}${ext}`;
|
|
40
40
|
const suffix = `${stageSuffix}/${expected}`;
|
|
@@ -50,7 +50,7 @@ export function verifyBundleCli(opts) {
|
|
|
50
50
|
// every name for the diagnostic listing the bash dumps with `unzip -l`; on
|
|
51
51
|
// a hit it short-circuits, and the listing is not needed.
|
|
52
52
|
const entries = [];
|
|
53
|
-
const present = readZipEntry(
|
|
53
|
+
const present = readZipEntry(await readFile(wheel), (name) => {
|
|
54
54
|
entries.push(name);
|
|
55
55
|
return `/${name}`.endsWith(`/${suffix}`);
|
|
56
56
|
}) !== null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/verify/bundle-cli/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/verify/bundle-cli/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEhE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG3D,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAA4B;IAChE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAChF,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAClD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,OAAO,IAAI,CAAC,CAAC;QACtE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IACrF,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,GAAG,WAAW,IAAI,QAAQ,EAAE,CAAC;IAE5C,wEAAwE;IACxE,4EAA4E;IAC5E,2EAA2E;IAC3E,4EAA4E;IAC5E,4EAA4E;IAC5E,yEAAyE;IACzE,uEAAuE;IACvE,0EAA0E;IAC1E,4EAA4E;IAC5E,2EAA2E;IAC3E,0DAA0D;IAC1D,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE;QAC3D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,IAAI,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC,KAAK,IAAI,CAAC;IAEZ,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,kBAAkB,IAAI,iCAAiC,MAAM,IAAI,CAClE,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC1C,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,MAAM,eAAe,IAAI,IAAI,CAAC,CAAC;IACtE,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -12,5 +12,5 @@
|
|
|
12
12
|
* accepted either across releases. Normalization mirrors the bash: drop a
|
|
13
13
|
* single leading `./` and any trailing slashes.
|
|
14
14
|
*/
|
|
15
|
-
export declare function readPythonSource(pkgDir: string): string
|
|
15
|
+
export declare function readPythonSource(pkgDir: string): Promise<string>;
|
|
16
16
|
//# sourceMappingURL=read-python-source.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-python-source.d.ts","sourceRoot":"","sources":["../../../src/verify/bundle-cli/read-python-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"read-python-source.d.ts","sourceRoot":"","sources":["../../../src/verify/bundle-cli/read-python-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAaH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAUtE"}
|
|
@@ -12,15 +12,16 @@
|
|
|
12
12
|
* accepted either across releases. Normalization mirrors the bash: drop a
|
|
13
13
|
* single leading `./` and any trailing slashes.
|
|
14
14
|
*/
|
|
15
|
-
import {
|
|
15
|
+
import { readFile } from 'node:fs/promises';
|
|
16
16
|
import { join } from 'node:path';
|
|
17
17
|
import { parse as parseToml } from 'smol-toml';
|
|
18
|
-
|
|
18
|
+
import { pathExists } from '../../utils/path-exists.js';
|
|
19
|
+
export async function readPythonSource(pkgDir) {
|
|
19
20
|
const pyproject = join(pkgDir, 'pyproject.toml');
|
|
20
|
-
if (!
|
|
21
|
+
if (!(await pathExists(pyproject))) {
|
|
21
22
|
return '';
|
|
22
23
|
}
|
|
23
|
-
const cfg = parseToml(
|
|
24
|
+
const cfg = parseToml(await readFile(pyproject, 'utf8'));
|
|
24
25
|
const maturin = cfg.tool?.maturin;
|
|
25
26
|
const raw = maturin?.['python-source'] ?? maturin?.python_source;
|
|
26
27
|
const src = typeof raw === 'string' ? raw : '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-python-source.js","sourceRoot":"","sources":["../../../src/verify/bundle-cli/read-python-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"read-python-source.js","sourceRoot":"","sources":["../../../src/verify/bundle-cli/read-python-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAMxD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAc;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACjD,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAgC,CAAC;IACxF,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC;IAClC,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC,eAAe,CAAC,IAAI,OAAO,EAAE,aAAa,CAAC;IACjE,MAAM,GAAG,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/C,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACtD,CAAC"}
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Extract a `.crate` (a gzipped tar) into a fresh temp dir and return it
|
|
3
3
|
* (#449). Caller owns cleanup. The real `tar -xzf` mirrors the bash.
|
|
4
4
|
*/
|
|
5
|
-
export declare function extractCrate(crateFile: string): string
|
|
5
|
+
export declare function extractCrate(crateFile: string): Promise<string>;
|
|
6
6
|
//# sourceMappingURL=extract-crate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract-crate.d.ts","sourceRoot":"","sources":["../../../src/verify/crate/extract-crate.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"extract-crate.d.ts","sourceRoot":"","sources":["../../../src/verify/crate/extract-crate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAIrE"}
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
* Extract a `.crate` (a gzipped tar) into a fresh temp dir and return it
|
|
3
3
|
* (#449). Caller owns cleanup. The real `tar -xzf` mirrors the bash.
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
6
|
-
import { mkdtempSync } from 'node:fs';
|
|
5
|
+
import { mkdtemp } from 'node:fs/promises';
|
|
7
6
|
import { tmpdir } from 'node:os';
|
|
8
7
|
import { join } from 'node:path';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
import { execCapture } from '../../utils/exec-capture.js';
|
|
9
|
+
export async function extractCrate(crateFile) {
|
|
10
|
+
const dir = await mkdtemp(join(tmpdir(), 'piot-crate-'));
|
|
11
|
+
await execCapture('tar', ['-xzf', crateFile, '-C', dir]);
|
|
12
12
|
return dir;
|
|
13
13
|
}
|
|
14
14
|
//# sourceMappingURL=extract-crate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract-crate.js","sourceRoot":"","sources":["../../../src/verify/crate/extract-crate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"extract-crate.js","sourceRoot":"","sources":["../../../src/verify/crate/extract-crate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,SAAiB;IAClD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;IACzD,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACzD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -8,5 +8,5 @@
|
|
|
8
8
|
* registry` stores `.crate` files nested under the root, so the search
|
|
9
9
|
* recurses.
|
|
10
10
|
*/
|
|
11
|
-
export declare function findCrateFile(registryRoot: string, name: string, version: string): string | null
|
|
11
|
+
export declare function findCrateFile(registryRoot: string, name: string, version: string): Promise<string | null>;
|
|
12
12
|
//# sourceMappingURL=find-crate-file.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-crate-file.d.ts","sourceRoot":"","sources":["../../../src/verify/crate/find-crate-file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,
|
|
1
|
+
{"version":3,"file":"find-crate-file.d.ts","sourceRoot":"","sources":["../../../src/verify/crate/find-crate-file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,wBAAsB,aAAa,CACjC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQxB"}
|
|
@@ -8,13 +8,13 @@
|
|
|
8
8
|
* registry` stores `.crate` files nested under the root, so the search
|
|
9
9
|
* recurses.
|
|
10
10
|
*/
|
|
11
|
-
import {
|
|
11
|
+
import { stat } from 'node:fs/promises';
|
|
12
12
|
import { basename } from 'node:path';
|
|
13
13
|
import { listFilesRecursive } from '../../utils/list-files-recursive.js';
|
|
14
|
-
export function findCrateFile(registryRoot, name, version) {
|
|
14
|
+
export async function findCrateFile(registryRoot, name, version) {
|
|
15
15
|
const target = `${name}-${version}.crate`;
|
|
16
|
-
for (const file of listFilesRecursive(registryRoot)) {
|
|
17
|
-
if (basename(file) === target &&
|
|
16
|
+
for (const file of await listFilesRecursive(registryRoot)) {
|
|
17
|
+
if (basename(file) === target && (await stat(file)).size > 0) {
|
|
18
18
|
return file;
|
|
19
19
|
}
|
|
20
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-crate-file.js","sourceRoot":"","sources":["../../../src/verify/crate/find-crate-file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"find-crate-file.js","sourceRoot":"","sources":["../../../src/verify/crate/find-crate-file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAEzE,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,YAAoB,EACpB,IAAY,EACZ,OAAe;IAEf,MAAM,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,QAAQ,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,MAAM,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC;QAC1D,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC7D,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
* This is the crates-side of the npm verify's "files[] dir is populated"
|
|
7
7
|
* check: proof the publish shipped the source tree, not an empty tarball.
|
|
8
8
|
*/
|
|
9
|
-
export declare function hasCrateSource(dir: string): boolean
|
|
9
|
+
export declare function hasCrateSource(dir: string): Promise<boolean>;
|
|
10
10
|
//# sourceMappingURL=has-crate-source.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"has-crate-source.d.ts","sourceRoot":"","sources":["../../../src/verify/crate/has-crate-source.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,
|
|
1
|
+
{"version":3,"file":"has-crate-source.d.ts","sourceRoot":"","sources":["../../../src/verify/crate/has-crate-source.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASlE"}
|
|
@@ -8,12 +8,12 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { basename, dirname } from 'node:path';
|
|
10
10
|
import { listFilesRecursive } from '../../utils/list-files-recursive.js';
|
|
11
|
-
export function hasCrateSource(dir) {
|
|
11
|
+
export async function hasCrateSource(dir) {
|
|
12
12
|
// Match a `lib.rs` / `main.rs` whose parent dir is `src`, via
|
|
13
13
|
// basename/dirname rather than a `/src/…` string suffix — the extracted
|
|
14
14
|
// paths use the platform separator, so a literal `/` check silently
|
|
15
15
|
// misses on Windows (`…\src\lib.rs`) and the unit matrix goes red.
|
|
16
|
-
return listFilesRecursive(dir).some((f) => {
|
|
16
|
+
return (await listFilesRecursive(dir)).some((f) => {
|
|
17
17
|
const name = basename(f);
|
|
18
18
|
return (name === 'lib.rs' || name === 'main.rs') && basename(dirname(f)) === 'src';
|
|
19
19
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"has-crate-source.js","sourceRoot":"","sources":["../../../src/verify/crate/has-crate-source.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAEzE,MAAM,UAAU,cAAc,CAAC,GAAW;
|
|
1
|
+
{"version":3,"file":"has-crate-source.js","sourceRoot":"","sources":["../../../src/verify/crate/has-crate-source.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAEzE,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW;IAC9C,8DAA8D;IAC9D,wEAAwE;IACxE,oEAAoE;IACpE,mEAAmE;IACnE,OAAO,CAAC,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACzB,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC;IACrF,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
*
|
|
14
14
|
* The diagnostic this gate gives (the rust-vanilla-first-publish fixture):
|
|
15
15
|
* without it, a publish that silently no-op'd or produced an empty `.crate`
|
|
16
|
-
* would still go green.
|
|
16
|
+
* would still go green. Async throughout, per the engine convention.
|
|
17
17
|
* Returns the process exit code (0 ok, 1 on any miss).
|
|
18
18
|
*/
|
|
19
19
|
import type { VerifyCrateOptions } from './types.js';
|
|
20
|
-
export declare function verifyCrate(opts: VerifyCrateOptions): number
|
|
20
|
+
export declare function verifyCrate(opts: VerifyCrateOptions): Promise<number>;
|
|
21
21
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/verify/crate/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAQH,OAAO,KAAK,EAAY,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE/D,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/verify/crate/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAQH,OAAO,KAAK,EAAY,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE/D,wBAAsB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CA+B3E"}
|
|
@@ -13,15 +13,15 @@
|
|
|
13
13
|
*
|
|
14
14
|
* The diagnostic this gate gives (the rust-vanilla-first-publish fixture):
|
|
15
15
|
* without it, a publish that silently no-op'd or produced an empty `.crate`
|
|
16
|
-
* would still go green.
|
|
16
|
+
* would still go green. Async throughout, per the engine convention.
|
|
17
17
|
* Returns the process exit code (0 ok, 1 on any miss).
|
|
18
18
|
*/
|
|
19
|
-
import {
|
|
19
|
+
import { rm } from 'node:fs/promises';
|
|
20
20
|
import { extractCrate } from './extract-crate.js';
|
|
21
21
|
import { findCrateFile } from './find-crate-file.js';
|
|
22
22
|
import { hasCrateSource } from './has-crate-source.js';
|
|
23
23
|
import { listFilesRecursive } from '../../utils/list-files-recursive.js';
|
|
24
|
-
export function verifyCrate(opts) {
|
|
24
|
+
export async function verifyCrate(opts) {
|
|
25
25
|
const rows = JSON.parse(opts.matrix).filter((r) => r.kind === 'crates');
|
|
26
26
|
if (rows.length === 0) {
|
|
27
27
|
process.stdout.write('No crates rows; nothing to verify.\n');
|
|
@@ -29,22 +29,22 @@ export function verifyCrate(opts) {
|
|
|
29
29
|
}
|
|
30
30
|
let fail = 0;
|
|
31
31
|
for (const row of rows) {
|
|
32
|
-
const crateFile = findCrateFile(opts.registryRoot, row.name, row.version);
|
|
32
|
+
const crateFile = await findCrateFile(opts.registryRoot, row.name, row.version);
|
|
33
33
|
if (crateFile === null) {
|
|
34
34
|
process.stdout.write(`::error::[${row.name}@${row.version}] no .crate file found (or empty) under ${opts.registryRoot}\n`);
|
|
35
35
|
fail = 1;
|
|
36
36
|
continue;
|
|
37
37
|
}
|
|
38
|
-
const extracted = extractCrate(crateFile);
|
|
39
|
-
if (hasCrateSource(extracted)) {
|
|
38
|
+
const extracted = await extractCrate(crateFile);
|
|
39
|
+
if (await hasCrateSource(extracted)) {
|
|
40
40
|
process.stdout.write(`ok: ${crateFile} contains src/lib.rs or src/main.rs\n`);
|
|
41
41
|
}
|
|
42
42
|
else {
|
|
43
|
-
const listing = listFilesRecursive(extracted).join(' ');
|
|
43
|
+
const listing = (await listFilesRecursive(extracted)).join(' ');
|
|
44
44
|
process.stdout.write(`::error::[${row.name}@${row.version}] .crate tarball missing src/lib.rs and src/main.rs. Tarball contents: ${listing}\n`);
|
|
45
45
|
fail = 1;
|
|
46
46
|
}
|
|
47
|
-
|
|
47
|
+
await rm(extracted, { recursive: true, force: true });
|
|
48
48
|
}
|
|
49
49
|
return fail;
|
|
50
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/verify/crate/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/verify/crate/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAGzE,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAwB;IACxD,MAAM,IAAI,GAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IACxF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC7D,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAChF,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,aAAa,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,2CAA2C,IAAI,CAAC,YAAY,IAAI,CACrG,CAAC;YACF,IAAI,GAAG,CAAC,CAAC;YACT,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,MAAM,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,SAAS,uCAAuC,CAAC,CAAC;QAChF,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,CAAC,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,aAAa,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,0EAA0E,OAAO,IAAI,CAC1H,CAAC;YACF,IAAI,GAAG,CAAC,CAAC;QACX,CAAC;QACD,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -11,10 +11,10 @@
|
|
|
11
11
|
* Caller owns cleanup of the returned `root`.
|
|
12
12
|
*/
|
|
13
13
|
export interface ExtractedTarball {
|
|
14
|
-
/** Temp dir to `
|
|
14
|
+
/** Temp dir to `rm` when done. */
|
|
15
15
|
root: string;
|
|
16
16
|
/** The unpacked `package/` directory inside the tarball. */
|
|
17
17
|
packageDir: string;
|
|
18
18
|
}
|
|
19
|
-
export declare function downloadNpmTarball(url: string, retryDelay: number): ExtractedTarball
|
|
19
|
+
export declare function downloadNpmTarball(url: string, retryDelay: number): Promise<ExtractedTarball>;
|
|
20
20
|
//# sourceMappingURL=download.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../src/verify/npm-tarball/download.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../src/verify/npm-tarball/download.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAUnG"}
|
|
@@ -10,19 +10,19 @@
|
|
|
10
10
|
*
|
|
11
11
|
* Caller owns cleanup of the returned `root`.
|
|
12
12
|
*/
|
|
13
|
-
import {
|
|
14
|
-
import { mkdirSync, mkdtempSync } from 'node:fs';
|
|
13
|
+
import { mkdir, mkdtemp } from 'node:fs/promises';
|
|
15
14
|
import { tmpdir } from 'node:os';
|
|
16
15
|
import { join } from 'node:path';
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
import { execCapture } from '../../utils/exec-capture.js';
|
|
17
|
+
export async function downloadNpmTarball(url, retryDelay) {
|
|
18
|
+
const root = await mkdtemp(join(tmpdir(), 'piot-tarball-'));
|
|
19
19
|
const tgz = join(root, 'pkg.tgz');
|
|
20
20
|
const extracted = join(root, 'extracted');
|
|
21
|
-
|
|
21
|
+
await execCapture('curl', [
|
|
22
22
|
'-fsSL', '--retry', '5', '--retry-all-errors', '--retry-delay', String(retryDelay), '-o', tgz, url,
|
|
23
23
|
]);
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
await mkdir(extracted);
|
|
25
|
+
await execCapture('tar', ['-xzf', tgz, '-C', extracted]);
|
|
26
26
|
return { root, packageDir: join(extracted, 'package') };
|
|
27
27
|
}
|
|
28
28
|
//# sourceMappingURL=download.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../../src/verify/npm-tarball/download.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../../src/verify/npm-tarball/download.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAS1D,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAAW,EAAE,UAAkB;IACtE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC1C,MAAM,WAAW,CAAC,MAAM,EAAE;QACxB,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG;KACnG,CAAC,CAAC;IACH,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;IACvB,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IACzD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;AAC1D,CAAC"}
|
|
@@ -8,5 +8,5 @@
|
|
|
8
8
|
* without it. Absent locally points at a different misconfiguration. The
|
|
9
9
|
* string is appended to the tarball-missing `::error::`.
|
|
10
10
|
*/
|
|
11
|
-
export declare function localDirState(localPath: string): string
|
|
11
|
+
export declare function localDirState(localPath: string): Promise<string>;
|
|
12
12
|
//# sourceMappingURL=local-dir-state.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-dir-state.d.ts","sourceRoot":"","sources":["../../../src/verify/npm-tarball/local-dir-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"local-dir-state.d.ts","sourceRoot":"","sources":["../../../src/verify/npm-tarball/local-dir-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMtE"}
|
|
@@ -8,11 +8,12 @@
|
|
|
8
8
|
* without it. Absent locally points at a different misconfiguration. The
|
|
9
9
|
* string is appended to the tarball-missing `::error::`.
|
|
10
10
|
*/
|
|
11
|
-
import {
|
|
11
|
+
import { stat } from 'node:fs/promises';
|
|
12
12
|
import { listFilesRecursive } from '../../utils/list-files-recursive.js';
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
import { pathExists } from '../../utils/path-exists.js';
|
|
14
|
+
export async function localDirState(localPath) {
|
|
15
|
+
if ((await pathExists(localPath)) && (await stat(localPath)).isDirectory()) {
|
|
16
|
+
const files = await listFilesRecursive(localPath);
|
|
16
17
|
return `local ${localPath}: present, ${files.length} file(s) — ${files.join(' ')} `;
|
|
17
18
|
}
|
|
18
19
|
return `local ${localPath}: missing`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-dir-state.js","sourceRoot":"","sources":["../../../src/verify/npm-tarball/local-dir-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"local-dir-state.js","sourceRoot":"","sources":["../../../src/verify/npm-tarball/local-dir-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,SAAiB;IACnD,IAAI,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QAC3E,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAClD,OAAO,SAAS,SAAS,cAAc,KAAK,CAAC,MAAM,cAAc,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACtF,CAAC;IACD,OAAO,SAAS,SAAS,WAAW,CAAC;AACvC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/verify/npm-tarball/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/verify/npm-tarball/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAUH,OAAO,KAAK,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAEtE,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,UAAU,EAAE,EAClB,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC,MAAM,CAAC,CA2DjB"}
|
|
@@ -14,10 +14,11 @@
|
|
|
14
14
|
* `lib`); dotted entries (`README.md`) are individual files and need no
|
|
15
15
|
* per-tree assertion. Returns the process exit code (0 ok, 1 on any miss).
|
|
16
16
|
*/
|
|
17
|
-
import {
|
|
17
|
+
import { readFile, rm, stat } from 'node:fs/promises';
|
|
18
18
|
import { join } from 'node:path';
|
|
19
19
|
import { downloadNpmTarball } from './download.js';
|
|
20
20
|
import { listFilesRecursive } from '../../utils/list-files-recursive.js';
|
|
21
|
+
import { pathExists } from '../../utils/path-exists.js';
|
|
21
22
|
import { localDirState } from './local-dir-state.js';
|
|
22
23
|
import { resolveNpmTarballUrl } from './resolve-url.js';
|
|
23
24
|
export async function verifyNpmTarballMain(rows, opts) {
|
|
@@ -34,7 +35,7 @@ export async function verifyNpmTarballMain(rows, opts) {
|
|
|
34
35
|
let fail = 0;
|
|
35
36
|
for (const row of npmRows) {
|
|
36
37
|
const pkgDirLocal = join(opts.cwd, row.path);
|
|
37
|
-
const pkgJson = JSON.parse(
|
|
38
|
+
const pkgJson = JSON.parse(await readFile(join(pkgDirLocal, 'package.json'), 'utf8'));
|
|
38
39
|
const pkgName = pkgJson.name;
|
|
39
40
|
const version = row.version;
|
|
40
41
|
const dirs = (pkgJson.files ?? []).filter((f) => !f.includes('.'));
|
|
@@ -49,22 +50,22 @@ export async function verifyNpmTarballMain(rows, opts) {
|
|
|
49
50
|
fail = 1;
|
|
50
51
|
continue;
|
|
51
52
|
}
|
|
52
|
-
const { root, packageDir } = downloadNpmTarball(url, 5);
|
|
53
|
+
const { root, packageDir } = await downloadNpmTarball(url, 5);
|
|
53
54
|
for (const d of dirs) {
|
|
54
55
|
const target = join(packageDir, d);
|
|
55
56
|
// `-d` before counting: `listFilesRecursive` reads the dir, so it
|
|
56
57
|
// must not run on a non-directory. The `&&` short-circuit mirrors
|
|
57
58
|
// the bash `[ -d dir ] && [ "$(find … | wc -l)" -gt 0 ]`.
|
|
58
|
-
if (
|
|
59
|
-
const count = listFilesRecursive(target).length;
|
|
59
|
+
if ((await pathExists(target)) && (await stat(target)).isDirectory() && (await listFilesRecursive(target)).length > 0) {
|
|
60
|
+
const count = (await listFilesRecursive(target)).length;
|
|
60
61
|
process.stdout.write(` ok: package/${d}/ (${count} file(s))\n`);
|
|
61
62
|
}
|
|
62
63
|
else {
|
|
63
|
-
process.stdout.write(`::error::[${pkgName}@${version}] tarball missing '${d}'. ${localDirState(join(pkgDirLocal, d))}\n`);
|
|
64
|
+
process.stdout.write(`::error::[${pkgName}@${version}] tarball missing '${d}'. ${await localDirState(join(pkgDirLocal, d))}\n`);
|
|
64
65
|
fail = 1;
|
|
65
66
|
}
|
|
66
67
|
}
|
|
67
|
-
|
|
68
|
+
await rm(root, { recursive: true, force: true });
|
|
68
69
|
}
|
|
69
70
|
return fail;
|
|
70
71
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/verify/npm-tarball/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/verify/npm-tarball/main.ts"],"names":[],"mappings":"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"}
|