putitoutthere 0.2.43 → 0.2.45

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.
Files changed (43) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/MIGRATIONS.md +74 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -1
  5. package/dist/cli.js +61 -0
  6. package/dist/cli.js.map +1 -1
  7. package/dist/verify/bundle-cli/compute-stage-suffix.d.ts +15 -0
  8. package/dist/verify/bundle-cli/compute-stage-suffix.d.ts.map +1 -0
  9. package/dist/verify/bundle-cli/compute-stage-suffix.js +22 -0
  10. package/dist/verify/bundle-cli/compute-stage-suffix.js.map +1 -0
  11. package/dist/verify/bundle-cli/index.d.ts +25 -0
  12. package/dist/verify/bundle-cli/index.d.ts.map +1 -0
  13. package/dist/verify/bundle-cli/index.js +69 -0
  14. package/dist/verify/bundle-cli/index.js.map +1 -0
  15. package/dist/verify/bundle-cli/read-python-source.d.ts +16 -0
  16. package/dist/verify/bundle-cli/read-python-source.d.ts.map +1 -0
  17. package/dist/verify/bundle-cli/read-python-source.js +29 -0
  18. package/dist/verify/bundle-cli/read-python-source.js.map +1 -0
  19. package/dist/verify/bundle-cli/types.d.ts +22 -0
  20. package/dist/verify/bundle-cli/types.d.ts.map +1 -0
  21. package/dist/verify/bundle-cli/types.js +5 -0
  22. package/dist/verify/bundle-cli/types.js.map +1 -0
  23. package/dist/verify/wheel/find-dist-file.d.ts +8 -0
  24. package/dist/verify/wheel/find-dist-file.d.ts.map +1 -0
  25. package/dist/verify/wheel/find-dist-file.js +23 -0
  26. package/dist/verify/wheel/find-dist-file.js.map +1 -0
  27. package/dist/verify/wheel/index.d.ts +22 -0
  28. package/dist/verify/wheel/index.d.ts.map +1 -0
  29. package/dist/verify/wheel/index.js +58 -0
  30. package/dist/verify/wheel/index.js.map +1 -0
  31. package/dist/verify/wheel/read-wheel-version.d.ts +12 -0
  32. package/dist/verify/wheel/read-wheel-version.d.ts.map +1 -0
  33. package/dist/verify/wheel/read-wheel-version.js +26 -0
  34. package/dist/verify/wheel/read-wheel-version.js.map +1 -0
  35. package/dist/verify/wheel/read-zip-entry.d.ts +13 -0
  36. package/dist/verify/wheel/read-zip-entry.d.ts.map +1 -0
  37. package/dist/verify/wheel/read-zip-entry.js +50 -0
  38. package/dist/verify/wheel/read-zip-entry.js.map +1 -0
  39. package/dist/verify/wheel/types.d.ts +17 -0
  40. package/dist/verify/wheel/types.d.ts.map +1 -0
  41. package/dist/verify/wheel/types.js +5 -0
  42. package/dist/verify/wheel/types.js.map +1 -0
  43. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -14,6 +14,8 @@ are prefixed `**BREAKING**` and link to the matching section in
14
14
 
15
15
  - Added: `putitoutthere verify npm-tarball` — a new `verify` subcommand that downloads a published npm tarball back from the registry and asserts it honors the shape it declared: main/noarch rows must contain every directory entry their `package.json` `files[]` declares (present and non-empty), and `--per-triple` asserts each synthesized platform package ships a non-`package.json` file (its `.node` / executable). Absorbs the two inline verification blocks the reusable e2e workflow (`e2e-fixture-job.yml`) previously carried as untested bash — same row selection, same `npm view` packument-lag retry, same `::error::` messages — into one colocated-tested engine command invoked from both former sites (part of epic #442). `verify` is now a command family: bare `verify` (and the new explicit spelling `verify posture`) is the unchanged #414 OIDC-vs-token publish/trust posture check; `verify npm-tarball` is this new artifact-content check. #443. (verified by: integration, e2e/CLI)
16
16
  - Added: `putitoutthere verify crate` — the crates-side sibling of `verify npm-tarball` (#443). Reads a published `.crate` back off the `cargo-http-registry` disk root the engine published to, extracts it, and asserts the crate ships its source tree (`src/lib.rs` or `src/main.rs` surfaces) — proof the publish shipped real contents, not an empty or silently no-op'd tarball. Absorbs the inline `.crate` verification block the reusable e2e workflow (`e2e-fixture-job.yml`, #334) carried as untested bash — same crates-row selection, same present-and-non-empty `.crate` guard, same `::error::`/`ok:` messages — into one colocated-tested engine command invoked from its former site (part of epic #442). Takes `--matrix <plan-json>` and `--registry-root <dir>`; unlike the npm sibling it reads local disk (same host, same job), so there is no HTTP download or retry. #449. (verified by: integration, e2e/CLI)
17
+ - Added: `putitoutthere verify wheel` — the pypi-side sibling of the verify family (#443, #449). Asserts a built maturin artifact under `<path>/dist` carries the planned version: a wheel row's first `*.whl` must have a `*.dist-info/METADATA` `Version:` equal to `--version`, and an sdist row (`--target sdist`) must produce a `*.tar.gz` whose filename contains it. Absorbs the inline "Verify wheel/sdist version matches matrix.version" bash block the reusable e2e workflow (`e2e-fixture-job.yml`, #276) carried as untested bash — same file selection, same `::error::`/`ok wheel:`/`ok sdist:` messages, same exit code — into one colocated-tested engine command. The wheel's METADATA is read with a dependency-free pure-Node zip reader (no `unzip`), so the command runs on every platform the maturin matrix builds on, Windows included. Takes `--path <pkg-dir>`, `--version <planned>`, and `--target <sdist|triple>`. #450. (verified by: integration, e2e/CLI)
18
+ - Added: `putitoutthere verify bundle-cli` — the last member of the `verify` family (#443, #449, #450). Asserts a maturin bundled-CLI wheel under `<path>/dist` contains its cross-compiled binary: the wheel's first `*.whl` must carry an entry whose path ends `<stage_suffix>/<bin>`, where `stage_suffix` is `--stage-to` with `[tool.maturin].python-source` (or the legacy `python_source`) subtracted from the front, and `<bin>` gains a `.exe` suffix on a Windows `--target`. This is the codified engine twin of the inline "bundle_cli — verify wheel contains `<stage_to>/<bin>`" bash block the reusable release workflow (`_matrix.yml`, #282/#358) carries — same wheel selection, same python-source stripping, same `(^|/)<stage_suffix>/<expected>$` match, same `::error::`/`ok bundle_cli:` messages and exit code — now colocated-tested, reusing the same dependency-free pure-Node zip reader as `verify wheel` (no `unzip`, Windows included). Takes `--path <pkg-dir>`, `--stage-to <dir>`, `--bin <name>`, and `--target <triple>`. Note: `_matrix.yml` invokes the engine only via `action.yml` (which has no `verify` surface) and builds no `dist/`, so its inline copy stays until the reusable workflow gains a way to call the engine; the tested command is the single source of truth going forward. #451. (verified by: integration, e2e/CLI)
17
19
 
18
20
  ### Changed
19
21
 
package/MIGRATIONS.md CHANGED
@@ -21,6 +21,80 @@ Each section covers five things, in order:
21
21
 
22
22
  ## Unreleased
23
23
 
24
+ ### New `verify bundle-cli` subcommand
25
+
26
+ **Summary.** `putitoutthere verify bundle-cli` completes the `verify` command
27
+ family (alongside `verify posture`, `verify npm-tarball`, `verify crate`, and
28
+ `verify wheel`). It asserts a maturin bundled-CLI wheel under `<path>/dist`
29
+ contains its cross-compiled binary at a path ending `<stage_suffix>/<bin>`,
30
+ where `stage_suffix` is `--stage-to` with `[tool.maturin].python-source` (or
31
+ the legacy `python_source`) subtracted from the front, and `<bin>` gains a
32
+ `.exe` suffix on a Windows `--target`. It codifies, as one colocated-tested
33
+ engine command, the inline "bundle_cli — verify wheel contains
34
+ `<stage_to>/<bin>`" bash block the reusable release workflow carries
35
+ (`_matrix.yml`, #282/#358); the behavior is unchanged — same wheel selection,
36
+ same python-source stripping, same match, same error messages and exit code.
37
+ The wheel is read with the same dependency-free pure-Node zip reader as
38
+ `verify wheel` (no `unzip`), so it runs on every platform the maturin matrix
39
+ builds on, Windows included. Unlike the earlier siblings' single copies —
40
+ which lived in `e2e-fixture-job.yml`, a workflow that runs `node
41
+ dist/cli-bin.js verify …` directly — this check's only copy lives in
42
+ `_matrix.yml`, which invokes the engine solely via `action.yml` (no `verify`
43
+ surface) and builds no `dist/`; that inline copy therefore stays in place
44
+ until the reusable workflow gains a way to call the engine, with the tested
45
+ command as the single source of truth going forward.
46
+
47
+ **Required changes.** None. Additive. Consumers compose with the reusable
48
+ workflow, not the CLI directly (design-commitment #10); this subcommand is
49
+ an internal seam.
50
+
51
+ **Deprecations removed.** None.
52
+
53
+ **Behavior changes without code changes.** None.
54
+
55
+ **Verification.** With a maturin bundled-CLI wheel under `<path>/dist`,
56
+ `putitoutthere verify bundle-cli --path <path> --stage-to <dir> --bin <name> --target <triple>`
57
+ prints `ok bundle_cli: <stage_suffix>/<bin> present in <wheel>` and exits 0
58
+ when the binary is staged; a wheel missing it exits 1 with `wheel <name>
59
+ missing bundle_cli binary at <stage_suffix>/<bin>` followed by a `wheel
60
+ contents:` listing, and a package with no wheel under `dist/` exits 1 with
61
+ `no wheel produced under <dir>`.
62
+
63
+ ---
64
+
65
+ ### New `verify wheel` subcommand
66
+
67
+ **Summary.** `putitoutthere verify wheel` joins the `verify` command family
68
+ (alongside `verify posture`, `verify npm-tarball`, and `verify crate`). It
69
+ asserts a built maturin artifact under `<path>/dist` carries the planned
70
+ version: a wheel row's first `*.whl` must have a `*.dist-info/METADATA`
71
+ `Version:` equal to `--version`, and an sdist row (`--target sdist`) must
72
+ produce a `*.tar.gz` whose filename contains it. This extracts the inline
73
+ "Verify wheel/sdist version matches matrix.version" bash block the reusable
74
+ e2e workflow carried (`e2e-fixture-job.yml`, #276) into one colocated-tested
75
+ engine command (epic #442, sub-issue #450); the behavior is unchanged — same
76
+ file selection, same error/ok messages, same exit code. The wheel's METADATA
77
+ is read with a dependency-free pure-Node zip reader (no `unzip`), so the
78
+ command runs on every platform the maturin matrix builds on.
79
+
80
+ **Required changes.** None. Additive. Consumers compose with the reusable
81
+ workflow, not the CLI directly (design-commitment #10); this subcommand is
82
+ an internal seam the workflow invokes.
83
+
84
+ **Deprecations removed.** None.
85
+
86
+ **Behavior changes without code changes.** None.
87
+
88
+ **Verification.** With a maturin build under `<path>/dist`,
89
+ `putitoutthere verify wheel --path <path> --version <v> --target <triple>`
90
+ prints `ok wheel: <name>.whl METADATA Version=<v>` and exits 0 when the
91
+ wheel carries `<v>`; a mismatch exits 1 with
92
+ `wheel METADATA Version='<actual>' but plan='<v>'`. `--target sdist` checks
93
+ the sdist filename instead (`ok sdist:` / `does not contain planned
94
+ version`).
95
+
96
+ ---
97
+
24
98
  ### New `verify crate` subcommand
25
99
 
26
100
  **Summary.** `putitoutthere verify crate` joins the `verify` command family
package/dist/cli.d.ts CHANGED
@@ -51,6 +51,9 @@ interface ParsedFlags {
51
51
  matrix?: string | undefined;
52
52
  registry?: string | undefined;
53
53
  registryRoot?: string | undefined;
54
+ target?: string | undefined;
55
+ stageTo?: string | undefined;
56
+ bin?: string | undefined;
54
57
  perTriple: boolean;
55
58
  }
56
59
  export declare function parseFlags(argv: readonly string[]): ParsedFlags;
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AA+EH,UAAU,WAAW;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,IAAI,EAAE,OAAO,CAAC;IAGd,KAAK,EAAE,OAAO,CAAC;IAIf,MAAM,EAAE,OAAO,CAAC;IAIhB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAG7B,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAIrC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAG9B,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,CAgC/D;AAED,wBAAsB,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA4SlE"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAsFH,UAAU,WAAW;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,IAAI,EAAE,OAAO,CAAC;IAGd,KAAK,EAAE,OAAO,CAAC;IAIf,MAAM,EAAE,OAAO,CAAC;IAIhB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAG7B,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAIrC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAG9B,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAIlC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAG5B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,CAmC/D;AAED,wBAAsB,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA2UlE"}
package/dist/cli.js CHANGED
@@ -48,8 +48,10 @@ import { releaseGithub } from './release-github/index.js';
48
48
  import { formatStatusRow } from './status-format.js';
49
49
  import { computeStatus } from './status.js';
50
50
  import { formatVerifyRow } from './verify/posture-format.js';
51
+ import { verifyBundleCli } from './verify/bundle-cli/index.js';
51
52
  import { verifyCrate } from './verify/crate/index.js';
52
53
  import { verifyNpmTarball } from './verify/npm-tarball/index.js';
54
+ import { verifyWheel } from './verify/wheel/index.js';
53
55
  import { computeVerify } from './verify/posture.js';
54
56
  import { writeCrateVersionForBuild } from './write-crate-version.js';
55
57
  import { writeLauncherFromConfig } from './write-launcher.js';
@@ -84,6 +86,8 @@ function printUsage() {
84
86
  ' verify Report publish/trust posture — OIDC vs token, per registry (#403)',
85
87
  ' verify npm-tarball Assert a published npm tarball honors package.json files[] (#443)',
86
88
  ' verify crate Assert a published .crate ships its source tree (#449)',
89
+ ' verify wheel Assert a built wheel/sdist carries the planned version (#450)',
90
+ ' verify bundle-cli Assert a maturin wheel contains its staged bundle_cli binary (#451)',
87
91
  ' release-github Cut a GitHub Release for each new tag on HEAD (#444)',
88
92
  ' write-version Bump a package manifest to the planned version (pre-build; #276)',
89
93
  ' write-crate-version Bump a crate Cargo.toml to the planned version (pre-build; #366)',
@@ -99,6 +103,9 @@ function printUsage() {
99
103
  ' --matrix <json> plan matrix (verify npm-tarball)',
100
104
  ' --registry <url> registry to read from (verify npm-tarball); default real npm',
101
105
  ' --registry-root <dir> cargo-http-registry disk root to read .crate files from (verify crate)',
106
+ ' --target <t> matrix target: `sdist` or a wheel triple (verify wheel / bundle-cli)',
107
+ ' --stage-to <dir> wheel-relative dir the bundle_cli binary is staged into (verify bundle-cli)',
108
+ ' --bin <name> bundle_cli binary name (verify bundle-cli)',
102
109
  ' --per-triple verify synthesized per-triple tarballs (verify npm-tarball)',
103
110
  ' --check exit non-zero when status finds drift',
104
111
  ' --dry-run report what reconcile would do without writing tags',
@@ -149,6 +156,15 @@ export function parseFlags(argv) {
149
156
  else if (a === '--registry-root') {
150
157
  out.registryRoot = argv[++i];
151
158
  }
159
+ else if (a === '--target') {
160
+ out.target = argv[++i];
161
+ }
162
+ else if (a === '--stage-to') {
163
+ out.stageTo = argv[++i];
164
+ }
165
+ else if (a === '--bin') {
166
+ out.bin = argv[++i];
167
+ }
152
168
  else if (a === '--per-triple') {
153
169
  out.perTriple = true;
154
170
  }
@@ -340,6 +356,51 @@ export async function run(argv) {
340
356
  }
341
357
  return verifyCrate({ matrix: flags.matrix, registryRoot: flags.registryRoot });
342
358
  }
359
+ if (sub === 'wheel') {
360
+ // #450: assert the built wheel/sdist under <path>/dist carries
361
+ // the planned version. Reads the wheel zip with a pure-Node
362
+ // reader (no unzip), so it runs on the Windows maturin rows too.
363
+ if (!flags.path) {
364
+ throw new Error('verify wheel requires --path <pkg-dir>');
365
+ }
366
+ if (!flags.version) {
367
+ throw new Error('verify wheel requires --version <planned>');
368
+ }
369
+ if (flags.target === undefined) {
370
+ throw new Error('verify wheel requires --target <sdist|triple>');
371
+ }
372
+ return verifyWheel({
373
+ cwd: flags.cwd,
374
+ path: flags.path,
375
+ version: flags.version,
376
+ target: flags.target,
377
+ });
378
+ }
379
+ if (sub === 'bundle-cli') {
380
+ // #451: assert the maturin bundled-CLI wheel under <path>/dist
381
+ // contains its cross-compiled binary at <stage_to>/<bin>. Reads
382
+ // the wheel zip with the same pure-Node reader (no unzip), so it
383
+ // runs on the Windows maturin rows too.
384
+ if (!flags.path) {
385
+ throw new Error('verify bundle-cli requires --path <pkg-dir>');
386
+ }
387
+ if (!flags.stageTo) {
388
+ throw new Error('verify bundle-cli requires --stage-to <dir>');
389
+ }
390
+ if (!flags.bin) {
391
+ throw new Error('verify bundle-cli requires --bin <name>');
392
+ }
393
+ if (flags.target === undefined) {
394
+ throw new Error('verify bundle-cli requires --target <triple>');
395
+ }
396
+ return verifyBundleCli({
397
+ cwd: flags.cwd,
398
+ path: flags.path,
399
+ stageTo: flags.stageTo,
400
+ bin: flags.bin,
401
+ target: flags.target,
402
+ });
403
+ }
343
404
  if (sub !== 'posture') {
344
405
  throw new Error(`unknown verify subcommand: ${sub}`);
345
406
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The wheel-relative directory the bundle_cli binary is expected at (#451).
3
+ *
4
+ * The engine analogue of the bash
5
+ * `stage_suffix="${STAGE_TO#./}"`
6
+ * `if [ -n "$python_source" ]; then stripped="${stage_suffix#"$python_source"/}"; … fi`
7
+ * — drop a single leading `./` from `stage_to`, then, when a non-empty
8
+ * `python-source` is an exact leading path segment, subtract it (maturin
9
+ * strips that dir from the wheel layout). A `python-source` that is set but
10
+ * is *not* a prefix of `stage_to` leaves the suffix unchanged — that
11
+ * combination is the consumer's misconfiguration to surface, not this
12
+ * function's to paper over, matching the bash's `!=` guard.
13
+ */
14
+ export declare function computeStageSuffix(stageTo: string, pythonSource: string): string;
15
+ //# sourceMappingURL=compute-stage-suffix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compute-stage-suffix.d.ts","sourceRoot":"","sources":["../../../src/verify/bundle-cli/compute-stage-suffix.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAOhF"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * The wheel-relative directory the bundle_cli binary is expected at (#451).
3
+ *
4
+ * The engine analogue of the bash
5
+ * `stage_suffix="${STAGE_TO#./}"`
6
+ * `if [ -n "$python_source" ]; then stripped="${stage_suffix#"$python_source"/}"; … fi`
7
+ * — drop a single leading `./` from `stage_to`, then, when a non-empty
8
+ * `python-source` is an exact leading path segment, subtract it (maturin
9
+ * strips that dir from the wheel layout). A `python-source` that is set but
10
+ * is *not* a prefix of `stage_to` leaves the suffix unchanged — that
11
+ * combination is the consumer's misconfiguration to surface, not this
12
+ * function's to paper over, matching the bash's `!=` guard.
13
+ */
14
+ export function computeStageSuffix(stageTo, pythonSource) {
15
+ const stageSuffix = stageTo.replace(/^\.\//, '');
16
+ if (pythonSource === '') {
17
+ return stageSuffix;
18
+ }
19
+ const prefix = `${pythonSource}/`;
20
+ return stageSuffix.startsWith(prefix) ? stageSuffix.slice(prefix.length) : stageSuffix;
21
+ }
22
+ //# sourceMappingURL=compute-stage-suffix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compute-stage-suffix.js","sourceRoot":"","sources":["../../../src/verify/bundle-cli/compute-stage-suffix.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,UAAU,kBAAkB,CAAC,OAAe,EAAE,YAAoB;IACtE,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACjD,IAAI,YAAY,KAAK,EAAE,EAAE,CAAC;QACxB,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,MAAM,MAAM,GAAG,GAAG,YAAY,GAAG,CAAC;IAClC,OAAO,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AACzF,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * `putitoutthere verify bundle-cli` — assert a maturin bundled-CLI wheel
3
+ * contains its cross-compiled binary at `<stage_to>/<bin>` (#451, epic #442).
4
+ *
5
+ * Extraction of the inline "bundle_cli — verify wheel contains
6
+ * <stage_to>/<bin>" bash block in `.github/workflows/_matrix.yml`. That step
7
+ * guards the #282/#358 contract: a `[package.bundle_cli]` build must stage
8
+ * its per-target binary into the wheel, so a consumer who declares a bundled
9
+ * CLI actually ships one. Without it, a build that silently failed to stage
10
+ * the binary would still produce a wheel and go green — the release surprise
11
+ * the no-surprises commitment exists to catch.
12
+ *
13
+ * The binary's expected path is `<stage_suffix>/<bin><ext>` where
14
+ * `stage_suffix` is `stage_to` with `[tool.maturin].python-source`
15
+ * subtracted (maturin strips that dir from the wheel layout) and `ext` is
16
+ * `.exe` on a Windows target. The wheel is a zip; its entries are read with
17
+ * the pure-Node reader `verify wheel` (#450) already ships — no `unzip`, so
18
+ * this runs on every platform the maturin matrix builds on, Windows
19
+ * included — and the match mirrors the bash `grep -qE
20
+ * "(^|/)<stage_suffix>/<expected>$"`. Synchronous throughout. Returns the
21
+ * process exit code (0 ok, 1 on a miss).
22
+ */
23
+ import type { VerifyBundleCliOptions } from './types.js';
24
+ export declare function verifyBundleCli(opts: VerifyBundleCliOptions): number;
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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,wBAAgB,eAAe,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,CA4CpE"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * `putitoutthere verify bundle-cli` — assert a maturin bundled-CLI wheel
3
+ * contains its cross-compiled binary at `<stage_to>/<bin>` (#451, epic #442).
4
+ *
5
+ * Extraction of the inline "bundle_cli — verify wheel contains
6
+ * <stage_to>/<bin>" bash block in `.github/workflows/_matrix.yml`. That step
7
+ * guards the #282/#358 contract: a `[package.bundle_cli]` build must stage
8
+ * its per-target binary into the wheel, so a consumer who declares a bundled
9
+ * CLI actually ships one. Without it, a build that silently failed to stage
10
+ * the binary would still produce a wheel and go green — the release surprise
11
+ * the no-surprises commitment exists to catch.
12
+ *
13
+ * The binary's expected path is `<stage_suffix>/<bin><ext>` where
14
+ * `stage_suffix` is `stage_to` with `[tool.maturin].python-source`
15
+ * subtracted (maturin strips that dir from the wheel layout) and `ext` is
16
+ * `.exe` on a Windows target. The wheel is a zip; its entries are read with
17
+ * the pure-Node reader `verify wheel` (#450) already ships — no `unzip`, so
18
+ * this runs on every platform the maturin matrix builds on, Windows
19
+ * included — and the match mirrors the bash `grep -qE
20
+ * "(^|/)<stage_suffix>/<expected>$"`. Synchronous throughout. Returns the
21
+ * process exit code (0 ok, 1 on a miss).
22
+ */
23
+ import { readFileSync } from 'node:fs';
24
+ import { basename, isAbsolute, join, resolve } from 'node:path';
25
+ import { findDistFile } from '../wheel/find-dist-file.js';
26
+ import { readZipEntry } from '../wheel/read-zip-entry.js';
27
+ import { computeStageSuffix } from './compute-stage-suffix.js';
28
+ import { readPythonSource } from './read-python-source.js';
29
+ export function verifyBundleCli(opts) {
30
+ const pkgDir = isAbsolute(opts.path) ? opts.path : resolve(opts.cwd, opts.path);
31
+ const distDir = join(pkgDir, 'dist');
32
+ const wheel = findDistFile(distDir, '.whl');
33
+ if (wheel === null) {
34
+ process.stdout.write(`::error::no wheel produced under ${distDir}\n`);
35
+ return 1;
36
+ }
37
+ const stageSuffix = computeStageSuffix(opts.stageTo, readPythonSource(pkgDir));
38
+ const ext = opts.target.includes('windows') ? '.exe' : '';
39
+ const expected = `${opts.bin}${ext}`;
40
+ const suffix = `${stageSuffix}/${expected}`;
41
+ // The bash `unzip -l | awk '{print $NF}' | grep -qE "(^|/)…$"` over the
42
+ // wheel's entry names. The bash regex only ever anchors a fixed path suffix
43
+ // (`stage_suffix`/`bin` are literal paths, never patterns), so match it as
44
+ // a literal: `(^|/)<suffix>$` holds exactly when the entry is `<suffix>` or
45
+ // ends with `/<suffix>`, i.e. `"/"+name` ends with `"/"+suffix`. Building a
46
+ // RegExp from the interpolated path would both mis-handle a `.`/`+` in a
47
+ // real path and open a regex-injection seam (CodeQL) for zero benefit.
48
+ // `readZipEntry` visits entries until one matches, so the matcher doubles
49
+ // as the "wheel contents" collector: on a miss it has walked (and recorded)
50
+ // every name for the diagnostic listing the bash dumps with `unzip -l`; on
51
+ // a hit it short-circuits, and the listing is not needed.
52
+ const entries = [];
53
+ const present = readZipEntry(readFileSync(wheel), (name) => {
54
+ entries.push(name);
55
+ return `/${name}`.endsWith(`/${suffix}`);
56
+ }) !== null;
57
+ const base = basename(wheel);
58
+ if (!present) {
59
+ process.stdout.write(`::error::wheel ${base} missing bundle_cli binary at ${suffix}\n`);
60
+ process.stdout.write('wheel contents:\n');
61
+ for (const name of entries) {
62
+ process.stdout.write(`${name}\n`);
63
+ }
64
+ return 1;
65
+ }
66
+ process.stdout.write(`ok bundle_cli: ${suffix} present in ${base}\n`);
67
+ return 0;
68
+ }
69
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/verify/bundle-cli/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,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,UAAU,eAAe,CAAC,IAA4B;IAC1D,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,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5C,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,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/E,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,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE;QACzD,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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Read `[tool.maturin].python-source` (or the legacy `python_source`
3
+ * spelling) from a package's `pyproject.toml`, normalized (#451).
4
+ *
5
+ * The engine analogue of the inline `python3 - <<PY … tomllib …` block in
6
+ * `.github/workflows/_matrix.yml`'s "bundle_cli — verify wheel contains …"
7
+ * step. maturin strips this directory from the wheel layout, so it is
8
+ * subtracted from the front of `stage_to` before the binary path is built
9
+ * (see `computeStageSuffix`). Missing file, missing table, or missing key
10
+ * all resolve to `""` — the same "unset ⇒ leave stage_suffix unchanged"
11
+ * behaviour as the bash. Both spellings are honoured because maturin has
12
+ * accepted either across releases. Normalization mirrors the bash: drop a
13
+ * single leading `./` and any trailing slashes.
14
+ */
15
+ export declare function readPythonSource(pkgDir: string): string;
16
+ //# sourceMappingURL=read-python-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-python-source.d.ts","sourceRoot":"","sources":["../../../src/verify/bundle-cli/read-python-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAWH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAUvD"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Read `[tool.maturin].python-source` (or the legacy `python_source`
3
+ * spelling) from a package's `pyproject.toml`, normalized (#451).
4
+ *
5
+ * The engine analogue of the inline `python3 - <<PY … tomllib …` block in
6
+ * `.github/workflows/_matrix.yml`'s "bundle_cli — verify wheel contains …"
7
+ * step. maturin strips this directory from the wheel layout, so it is
8
+ * subtracted from the front of `stage_to` before the binary path is built
9
+ * (see `computeStageSuffix`). Missing file, missing table, or missing key
10
+ * all resolve to `""` — the same "unset ⇒ leave stage_suffix unchanged"
11
+ * behaviour as the bash. Both spellings are honoured because maturin has
12
+ * accepted either across releases. Normalization mirrors the bash: drop a
13
+ * single leading `./` and any trailing slashes.
14
+ */
15
+ import { existsSync, readFileSync } from 'node:fs';
16
+ import { join } from 'node:path';
17
+ import { parse as parseToml } from 'smol-toml';
18
+ export function readPythonSource(pkgDir) {
19
+ const pyproject = join(pkgDir, 'pyproject.toml');
20
+ if (!existsSync(pyproject)) {
21
+ return '';
22
+ }
23
+ const cfg = parseToml(readFileSync(pyproject, 'utf8'));
24
+ const maturin = cfg.tool?.maturin;
25
+ const raw = maturin?.['python-source'] ?? maturin?.python_source;
26
+ const src = typeof raw === 'string' ? raw : '';
27
+ return src.replace(/^\.\//, '').replace(/\/+$/, '');
28
+ }
29
+ //# sourceMappingURL=read-python-source.js.map
@@ -0,0 +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,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC;AAM/C,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,GAAG,GAAG,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAgC,CAAC;IACtF,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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Option shape for `verify bundle-cli` (#451).
3
+ */
4
+ export interface VerifyBundleCliOptions {
5
+ /** Working dir `--path` resolves against (default process.cwd()). */
6
+ cwd: string;
7
+ /** Package dir; the built wheel lives under `<path>/dist`. */
8
+ path: string;
9
+ /**
10
+ * The `bundle_cli.stage_to` path the binary was staged into, relative to
11
+ * the wheel root (a `[tool.maturin].python-source` prefix is subtracted).
12
+ */
13
+ stageTo: string;
14
+ /** The `bundle_cli.bin` name (a `.exe` suffix is added on Windows targets). */
15
+ bin: string;
16
+ /**
17
+ * The matrix row's target triple. A triple containing `windows` selects
18
+ * the `.exe` binary suffix; any other value adds none.
19
+ */
20
+ target: string;
21
+ }
22
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/verify/bundle-cli/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,sBAAsB;IACrC,qEAAqE;IACrE,GAAG,EAAE,MAAM,CAAC;IACZ,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Option shape for `verify bundle-cli` (#451).
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/verify/bundle-cli/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The first regular file directly under `dir` whose name ends with `ext`, or
3
+ * null when none exists (#450). Non-recursive — the analogue of the bash
4
+ * `find "$dist_dir" -maxdepth 1 -name '*<ext>' -print -quit`. Sorted for a
5
+ * deterministic pick when a dist dir holds more than one match.
6
+ */
7
+ export declare function findDistFile(dir: string, ext: string): string | null;
8
+ //# sourceMappingURL=find-dist-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-dist-file.d.ts","sourceRoot":"","sources":["../../../src/verify/wheel/find-dist-file.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAapE"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * The first regular file directly under `dir` whose name ends with `ext`, or
3
+ * null when none exists (#450). Non-recursive — the analogue of the bash
4
+ * `find "$dist_dir" -maxdepth 1 -name '*<ext>' -print -quit`. Sorted for a
5
+ * deterministic pick when a dist dir holds more than one match.
6
+ */
7
+ import { existsSync, readdirSync, statSync } from 'node:fs';
8
+ import { join } from 'node:path';
9
+ export function findDistFile(dir, ext) {
10
+ if (!existsSync(dir)) {
11
+ return null;
12
+ }
13
+ for (const name of readdirSync(dir).sort()) {
14
+ if (name.endsWith(ext)) {
15
+ const full = join(dir, name);
16
+ if (statSync(full).isFile()) {
17
+ return full;
18
+ }
19
+ }
20
+ }
21
+ return null;
22
+ }
23
+ //# sourceMappingURL=find-dist-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-dist-file.js","sourceRoot":"","sources":["../../../src/verify/wheel/find-dist-file.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,GAAW;IACnD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC7B,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC5B,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * `putitoutthere verify wheel` — assert the built wheel/sdist carries the
3
+ * planned version (#450, epic #442).
4
+ *
5
+ * Extraction of the inline "Verify wheel/sdist version matches
6
+ * matrix.version" bash block (#276) in `.github/workflows/e2e-fixture-job.yml`.
7
+ * The contract, per that step: "the build artifact carries matrix.version",
8
+ * verified directly against the produced files — independent of which
9
+ * mechanism (write-version, SETUPTOOLS_SCM_PRETEND_VERSION, …) set the
10
+ * manifest, so it catches a divergence regardless of which build path
11
+ * silently regressed.
12
+ *
13
+ * For an sdist row (`--target sdist`) the sdist filename must end
14
+ * `-<version>.tar.gz`; for a wheel row the first `*.whl`'s
15
+ * `*.dist-info/METADATA` `Version:` must equal `--version`. The wheel is
16
+ * read with a pure-Node zip reader (no `unzip`), so this runs on every
17
+ * platform the maturin matrix builds on. Synchronous throughout. Returns the
18
+ * process exit code (0 ok, 1 on any miss).
19
+ */
20
+ import type { VerifyWheelOptions } from './types.js';
21
+ export declare function verifyWheel(opts: VerifyWheelOptions): number;
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/verify/wheel/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAOH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,wBAAgB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAuC5D"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * `putitoutthere verify wheel` — assert the built wheel/sdist carries the
3
+ * planned version (#450, epic #442).
4
+ *
5
+ * Extraction of the inline "Verify wheel/sdist version matches
6
+ * matrix.version" bash block (#276) in `.github/workflows/e2e-fixture-job.yml`.
7
+ * The contract, per that step: "the build artifact carries matrix.version",
8
+ * verified directly against the produced files — independent of which
9
+ * mechanism (write-version, SETUPTOOLS_SCM_PRETEND_VERSION, …) set the
10
+ * manifest, so it catches a divergence regardless of which build path
11
+ * silently regressed.
12
+ *
13
+ * For an sdist row (`--target sdist`) the sdist filename must end
14
+ * `-<version>.tar.gz`; for a wheel row the first `*.whl`'s
15
+ * `*.dist-info/METADATA` `Version:` must equal `--version`. The wheel is
16
+ * read with a pure-Node zip reader (no `unzip`), so this runs on every
17
+ * platform the maturin matrix builds on. Synchronous throughout. Returns the
18
+ * process exit code (0 ok, 1 on any miss).
19
+ */
20
+ import { existsSync, statSync } from 'node:fs';
21
+ import { basename, isAbsolute, join, resolve } from 'node:path';
22
+ import { findDistFile } from './find-dist-file.js';
23
+ import { readWheelVersion } from './read-wheel-version.js';
24
+ export function verifyWheel(opts) {
25
+ const pkgDir = isAbsolute(opts.path) ? opts.path : resolve(opts.cwd, opts.path);
26
+ const distDir = join(pkgDir, 'dist');
27
+ if (!existsSync(distDir) || !statSync(distDir).isDirectory()) {
28
+ process.stdout.write(`::error::no dist/ produced under ${distDir}\n`);
29
+ return 1;
30
+ }
31
+ if (opts.target === 'sdist') {
32
+ const sdist = findDistFile(distDir, '.tar.gz');
33
+ if (sdist === null) {
34
+ process.stdout.write(`::error::no sdist produced in ${distDir}\n`);
35
+ return 1;
36
+ }
37
+ const name = basename(sdist);
38
+ if (name.endsWith(`-${opts.version}.tar.gz`)) {
39
+ process.stdout.write(`ok sdist: ${name}\n`);
40
+ return 0;
41
+ }
42
+ process.stdout.write(`::error::sdist filename '${name}' does not contain planned version '${opts.version}'\n`);
43
+ return 1;
44
+ }
45
+ const wheel = findDistFile(distDir, '.whl');
46
+ if (wheel === null) {
47
+ process.stdout.write(`::error::no wheel produced in ${distDir}\n`);
48
+ return 1;
49
+ }
50
+ const actual = readWheelVersion(wheel);
51
+ if (actual !== opts.version) {
52
+ process.stdout.write(`::error::wheel METADATA Version='${actual ?? ''}' but plan='${opts.version}' (wheel: ${basename(wheel)})\n`);
53
+ return 1;
54
+ }
55
+ process.stdout.write(`ok wheel: ${basename(wheel)} METADATA Version=${actual}\n`);
56
+ return 0;
57
+ }
58
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/verify/wheel/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEhE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG3D,MAAM,UAAU,WAAW,CAAC,IAAwB;IAClD,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,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,OAAO,IAAI,CAAC,CAAC;QACtE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC/C,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,OAAO,IAAI,CAAC,CAAC;YACnE,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,SAAS,CAAC,EAAE,CAAC;YAC7C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC;YAC5C,OAAO,CAAC,CAAC;QACX,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,4BAA4B,IAAI,uCAAuC,IAAI,CAAC,OAAO,KAAK,CACzF,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5C,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,OAAO,IAAI,CAAC,CAAC;QACnE,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,MAAM,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,oCAAoC,MAAM,IAAI,EAAE,eAAe,IAAI,CAAC,OAAO,aAAa,QAAQ,CAAC,KAAK,CAAC,KAAK,CAC7G,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,QAAQ,CAAC,KAAK,CAAC,qBAAqB,MAAM,IAAI,CAAC,CAAC;IAClF,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Read the `Version:` field from a wheel's `*.dist-info/METADATA` (#450).
3
+ *
4
+ * The engine analogue of the bash
5
+ * `unzip -p "$wheel" '*.dist-info/METADATA' | awk '/^Version:/ { print $2 }'`,
6
+ * but via the pure-Node zip reader so it needs no `unzip`. Returns the
7
+ * version string, or null when the wheel carries no METADATA or no
8
+ * `Version:` line. `Metadata-Version:` is deliberately not matched — only a
9
+ * line that begins exactly `Version:`, mirroring the bash `^Version:`.
10
+ */
11
+ export declare function readWheelVersion(wheelPath: string): string | null;
12
+ //# sourceMappingURL=read-wheel-version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-wheel-version.d.ts","sourceRoot":"","sources":["../../../src/verify/wheel/read-wheel-version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYjE"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Read the `Version:` field from a wheel's `*.dist-info/METADATA` (#450).
3
+ *
4
+ * The engine analogue of the bash
5
+ * `unzip -p "$wheel" '*.dist-info/METADATA' | awk '/^Version:/ { print $2 }'`,
6
+ * but via the pure-Node zip reader so it needs no `unzip`. Returns the
7
+ * version string, or null when the wheel carries no METADATA or no
8
+ * `Version:` line. `Metadata-Version:` is deliberately not matched — only a
9
+ * line that begins exactly `Version:`, mirroring the bash `^Version:`.
10
+ */
11
+ import { readFileSync } from 'node:fs';
12
+ import { readZipEntry } from './read-zip-entry.js';
13
+ export function readWheelVersion(wheelPath) {
14
+ const meta = readZipEntry(readFileSync(wheelPath), (name) => name.endsWith('.dist-info/METADATA'));
15
+ if (meta === null) {
16
+ return null;
17
+ }
18
+ for (const line of meta.toString('utf8').split(/\r?\n/)) {
19
+ const m = /^Version:[ \t]*(\S+)/.exec(line);
20
+ if (m) {
21
+ return m[1];
22
+ }
23
+ }
24
+ return null;
25
+ }
26
+ //# sourceMappingURL=read-wheel-version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-wheel-version.js","sourceRoot":"","sources":["../../../src/verify/wheel/read-wheel-version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;IACnG,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACxD,MAAM,CAAC,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,EAAE,CAAC;YACN,OAAO,CAAC,CAAC,CAAC,CAAE,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Extract the first zip entry whose name satisfies `matches`, returning its
3
+ * decompressed bytes (or null if none matches) (#450).
4
+ *
5
+ * A minimal pure-Node zip reader for the stored (method 0) and deflate
6
+ * (method 8) entries a wheel uses — enough to read `dist-info/METADATA`
7
+ * without an `unzip` / `tar` subprocess, so `verify wheel` runs on every
8
+ * platform the maturin matrix builds on (Windows included). Wheels are not
9
+ * ZIP64 and carry no archive comment, so the common-case layout is all that
10
+ * is handled.
11
+ */
12
+ export declare function readZipEntry(buf: Buffer, matches: (name: string) => boolean): Buffer | null;
13
+ //# sourceMappingURL=read-zip-entry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-zip-entry.d.ts","sourceRoot":"","sources":["../../../src/verify/wheel/read-zip-entry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM,GAAG,IAAI,CAqC3F"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Extract the first zip entry whose name satisfies `matches`, returning its
3
+ * decompressed bytes (or null if none matches) (#450).
4
+ *
5
+ * A minimal pure-Node zip reader for the stored (method 0) and deflate
6
+ * (method 8) entries a wheel uses — enough to read `dist-info/METADATA`
7
+ * without an `unzip` / `tar` subprocess, so `verify wheel` runs on every
8
+ * platform the maturin matrix builds on (Windows included). Wheels are not
9
+ * ZIP64 and carry no archive comment, so the common-case layout is all that
10
+ * is handled.
11
+ */
12
+ import { inflateRawSync } from 'node:zlib';
13
+ export function readZipEntry(buf, matches) {
14
+ // End Of Central Directory record: scan back for its signature.
15
+ let eocd = -1;
16
+ for (let i = buf.length - 22; i >= 0; i--) {
17
+ if (buf.readUInt32LE(i) === 0x06054b50) {
18
+ eocd = i;
19
+ break;
20
+ }
21
+ }
22
+ if (eocd < 0) {
23
+ return null;
24
+ }
25
+ const count = buf.readUInt16LE(eocd + 10);
26
+ let p = buf.readUInt32LE(eocd + 16); // central-directory offset
27
+ // The EOCD gives the exact entry count, and central-directory headers are
28
+ // contiguous, so read exactly `count` of them.
29
+ for (let n = 0; n < count; n++) {
30
+ const method = buf.readUInt16LE(p + 10);
31
+ const compSize = buf.readUInt32LE(p + 20);
32
+ const fnLen = buf.readUInt16LE(p + 28);
33
+ const extraLen = buf.readUInt16LE(p + 30);
34
+ const commentLen = buf.readUInt16LE(p + 32);
35
+ const localOffset = buf.readUInt32LE(p + 42);
36
+ const name = buf.toString('utf8', p + 46, p + 46 + fnLen);
37
+ if (matches(name)) {
38
+ // Data starts after the LOCAL header's own name + extra fields
39
+ // (its extra length can differ from the central directory's).
40
+ const lFnLen = buf.readUInt16LE(localOffset + 26);
41
+ const lExtraLen = buf.readUInt16LE(localOffset + 28);
42
+ const dataStart = localOffset + 30 + lFnLen + lExtraLen;
43
+ const raw = buf.subarray(dataStart, dataStart + compSize);
44
+ return method === 0 ? Buffer.from(raw) : inflateRawSync(raw);
45
+ }
46
+ p += 46 + fnLen + extraLen + commentLen;
47
+ }
48
+ return null;
49
+ }
50
+ //# sourceMappingURL=read-zip-entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-zip-entry.js","sourceRoot":"","sources":["../../../src/verify/wheel/read-zip-entry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,OAAkC;IAC1E,gEAAgE;IAChE,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;YACvC,IAAI,GAAG,CAAC,CAAC;YACT,MAAM;QACR,CAAC;IACH,CAAC;IACD,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,2BAA2B;IAChE,0EAA0E;IAC1E,+CAA+C;IAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;QAC1D,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAClB,+DAA+D;YAC/D,8DAA8D;YAC9D,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;YAClD,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;YACrD,MAAM,SAAS,GAAG,WAAW,GAAG,EAAE,GAAG,MAAM,GAAG,SAAS,CAAC;YACxD,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,QAAQ,CAAC,CAAC;YAC1D,OAAO,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC/D,CAAC;QACD,CAAC,IAAI,EAAE,GAAG,KAAK,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC1C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Option shape for `verify wheel` (#450).
3
+ */
4
+ export interface VerifyWheelOptions {
5
+ /** Working dir `--path` resolves against (default process.cwd()). */
6
+ cwd: string;
7
+ /** Package dir; the build artifact lives under `<path>/dist`. */
8
+ path: string;
9
+ /** The planned version the artifact must carry. */
10
+ version: string;
11
+ /**
12
+ * The matrix row's target. `sdist` selects the sdist-filename check; any
13
+ * other value (a wheel triple) selects the wheel-METADATA check.
14
+ */
15
+ target: string;
16
+ }
17
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/verify/wheel/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,kBAAkB;IACjC,qEAAqE;IACrE,GAAG,EAAE,MAAM,CAAC;IACZ,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Option shape for `verify wheel` (#450).
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/verify/wheel/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "putitoutthere",
3
- "version": "0.2.43",
3
+ "version": "0.2.45",
4
4
  "description": "Polyglot release orchestrator for crates.io, PyPI, and npm",
5
5
  "license": "MIT",
6
6
  "repository": {