putitoutthere 0.2.67 → 0.2.69

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. package/dist/action.js +2 -1
  2. package/dist/action.js.map +1 -1
  3. package/dist/advance-floating-major.d.ts +1 -2
  4. package/dist/advance-floating-major.d.ts.map +1 -1
  5. package/dist/advance-floating-major.js +8 -9
  6. package/dist/advance-floating-major.js.map +1 -1
  7. package/dist/advance-v0.d.ts +3 -4
  8. package/dist/advance-v0.d.ts.map +1 -1
  9. package/dist/advance-v0.js +5 -6
  10. package/dist/advance-v0.js.map +1 -1
  11. package/dist/cascade.d.ts.map +1 -1
  12. package/dist/cascade.js +2 -1
  13. package/dist/cascade.js.map +1 -1
  14. package/dist/check-crate-size.d.ts +1 -1
  15. package/dist/check-crate-size.d.ts.map +1 -1
  16. package/dist/check-crate-size.js +22 -13
  17. package/dist/check-crate-size.js.map +1 -1
  18. package/dist/check.d.ts +1 -1
  19. package/dist/check.d.ts.map +1 -1
  20. package/dist/check.js +69 -61
  21. package/dist/check.js.map +1 -1
  22. package/dist/cli.d.ts.map +1 -1
  23. package/dist/cli.js +15 -15
  24. package/dist/cli.js.map +1 -1
  25. package/dist/completeness.d.ts +3 -2
  26. package/dist/completeness.d.ts.map +1 -1
  27. package/dist/completeness.js +14 -13
  28. package/dist/completeness.js.map +1 -1
  29. package/dist/config.d.ts +4 -2
  30. package/dist/config.d.ts.map +1 -1
  31. package/dist/config.js +5 -5
  32. package/dist/config.js.map +1 -1
  33. package/dist/ensure-tag.d.ts +1 -1
  34. package/dist/ensure-tag.d.ts.map +1 -1
  35. package/dist/ensure-tag.js +4 -4
  36. package/dist/ensure-tag.js.map +1 -1
  37. package/dist/find-workspace-root.d.ts +1 -1
  38. package/dist/find-workspace-root.d.ts.map +1 -1
  39. package/dist/find-workspace-root.js +3 -3
  40. package/dist/find-workspace-root.js.map +1 -1
  41. package/dist/fold-action-bundle.d.ts +1 -1
  42. package/dist/fold-action-bundle.d.ts.map +1 -1
  43. package/dist/fold-action-bundle.js +5 -5
  44. package/dist/fold-action-bundle.js.map +1 -1
  45. package/dist/force-move-tag.d.ts +1 -1
  46. package/dist/force-move-tag.d.ts.map +1 -1
  47. package/dist/force-move-tag.js +3 -3
  48. package/dist/force-move-tag.js.map +1 -1
  49. package/dist/git.d.ts +19 -21
  50. package/dist/git.d.ts.map +1 -1
  51. package/dist/git.js +44 -49
  52. package/dist/git.js.map +1 -1
  53. package/dist/glob.d.ts +1 -1
  54. package/dist/glob.d.ts.map +1 -1
  55. package/dist/glob.js +17 -7
  56. package/dist/glob.js.map +1 -1
  57. package/dist/handlers/crates.d.ts +2 -1
  58. package/dist/handlers/crates.d.ts.map +1 -1
  59. package/dist/handlers/crates.js +35 -36
  60. package/dist/handlers/crates.js.map +1 -1
  61. package/dist/handlers/npm-platform.d.ts +1 -0
  62. package/dist/handlers/npm-platform.d.ts.map +1 -1
  63. package/dist/handlers/npm-platform.js +39 -41
  64. package/dist/handlers/npm-platform.js.map +1 -1
  65. package/dist/handlers/npm.d.ts.map +1 -1
  66. package/dist/handlers/npm.js +30 -23
  67. package/dist/handlers/npm.js.map +1 -1
  68. package/dist/handlers/pypi.js +17 -12
  69. package/dist/handlers/pypi.js.map +1 -1
  70. package/dist/normalize-artifacts.d.ts +1 -1
  71. package/dist/normalize-artifacts.d.ts.map +1 -1
  72. package/dist/normalize-artifacts.js +8 -7
  73. package/dist/normalize-artifacts.js.map +1 -1
  74. package/dist/plan-status.js +1 -1
  75. package/dist/plan-status.js.map +1 -1
  76. package/dist/plan.d.ts.map +1 -1
  77. package/dist/plan.js +29 -27
  78. package/dist/plan.js.map +1 -1
  79. package/dist/preflight.d.ts +14 -14
  80. package/dist/preflight.d.ts.map +1 -1
  81. package/dist/preflight.js +56 -56
  82. package/dist/preflight.js.map +1 -1
  83. package/dist/publish.d.ts.map +1 -1
  84. package/dist/publish.js +25 -17
  85. package/dist/publish.js.map +1 -1
  86. package/dist/python-versions.d.ts +1 -1
  87. package/dist/python-versions.d.ts.map +1 -1
  88. package/dist/python-versions.js +5 -5
  89. package/dist/python-versions.js.map +1 -1
  90. package/dist/reconcile.js +3 -3
  91. package/dist/reconcile.js.map +1 -1
  92. package/dist/release-github/gh-release-create.d.ts +1 -1
  93. package/dist/release-github/gh-release-create.d.ts.map +1 -1
  94. package/dist/release-github/gh-release-create.js +3 -4
  95. package/dist/release-github/gh-release-create.js.map +1 -1
  96. package/dist/release-github/gh-release-exists.d.ts +1 -1
  97. package/dist/release-github/gh-release-exists.d.ts.map +1 -1
  98. package/dist/release-github/gh-release-exists.js +3 -3
  99. package/dist/release-github/gh-release-exists.js.map +1 -1
  100. package/dist/release-github/index.d.ts +4 -5
  101. package/dist/release-github/index.d.ts.map +1 -1
  102. package/dist/release-github/index.js +8 -9
  103. package/dist/release-github/index.js.map +1 -1
  104. package/dist/resolve-tag-commit.d.ts +2 -2
  105. package/dist/resolve-tag-commit.d.ts.map +1 -1
  106. package/dist/resolve-tag-commit.js +4 -4
  107. package/dist/resolve-tag-commit.js.map +1 -1
  108. package/dist/status.js +2 -2
  109. package/dist/status.js.map +1 -1
  110. package/dist/trailer.d.ts +1 -0
  111. package/dist/trailer.d.ts.map +1 -1
  112. package/dist/trailer.js +1 -1
  113. package/dist/trailer.js.map +1 -1
  114. package/dist/utils/exec-capture.d.ts +20 -0
  115. package/dist/utils/exec-capture.d.ts.map +1 -0
  116. package/dist/utils/exec-capture.js +25 -0
  117. package/dist/utils/exec-capture.js.map +1 -0
  118. package/dist/utils/exec-error.d.ts +16 -0
  119. package/dist/utils/exec-error.d.ts.map +1 -0
  120. package/dist/utils/exec-error.js +21 -0
  121. package/dist/utils/exec-error.js.map +1 -0
  122. package/dist/utils/exec-inherit.d.ts +13 -0
  123. package/dist/utils/exec-inherit.d.ts.map +1 -0
  124. package/dist/utils/exec-inherit.js +25 -0
  125. package/dist/utils/exec-inherit.js.map +1 -0
  126. package/dist/utils/list-files-recursive.d.ts +2 -2
  127. package/dist/utils/list-files-recursive.d.ts.map +1 -1
  128. package/dist/utils/list-files-recursive.js +7 -6
  129. package/dist/utils/list-files-recursive.js.map +1 -1
  130. package/dist/utils/path-exists.d.ts +3 -0
  131. package/dist/utils/path-exists.d.ts.map +1 -0
  132. package/dist/utils/path-exists.js +12 -0
  133. package/dist/utils/path-exists.js.map +1 -0
  134. package/dist/utils/sleep.d.ts +3 -0
  135. package/dist/utils/sleep.d.ts.map +1 -0
  136. package/dist/utils/sleep.js +5 -0
  137. package/dist/utils/sleep.js.map +1 -0
  138. package/dist/verbose.d.ts +1 -1
  139. package/dist/verbose.d.ts.map +1 -1
  140. package/dist/verbose.js +5 -5
  141. package/dist/verbose.js.map +1 -1
  142. package/dist/verify/bundle-cli/index.d.ts +2 -2
  143. package/dist/verify/bundle-cli/index.d.ts.map +1 -1
  144. package/dist/verify/bundle-cli/index.js +6 -6
  145. package/dist/verify/bundle-cli/index.js.map +1 -1
  146. package/dist/verify/bundle-cli/read-python-source.d.ts +1 -1
  147. package/dist/verify/bundle-cli/read-python-source.d.ts.map +1 -1
  148. package/dist/verify/bundle-cli/read-python-source.js +5 -4
  149. package/dist/verify/bundle-cli/read-python-source.js.map +1 -1
  150. package/dist/verify/crate/extract-crate.d.ts +1 -1
  151. package/dist/verify/crate/extract-crate.d.ts.map +1 -1
  152. package/dist/verify/crate/extract-crate.js +5 -5
  153. package/dist/verify/crate/extract-crate.js.map +1 -1
  154. package/dist/verify/crate/find-crate-file.d.ts +1 -1
  155. package/dist/verify/crate/find-crate-file.d.ts.map +1 -1
  156. package/dist/verify/crate/find-crate-file.js +4 -4
  157. package/dist/verify/crate/find-crate-file.js.map +1 -1
  158. package/dist/verify/crate/has-crate-source.d.ts +1 -1
  159. package/dist/verify/crate/has-crate-source.d.ts.map +1 -1
  160. package/dist/verify/crate/has-crate-source.js +2 -2
  161. package/dist/verify/crate/has-crate-source.js.map +1 -1
  162. package/dist/verify/crate/index.d.ts +2 -2
  163. package/dist/verify/crate/index.d.ts.map +1 -1
  164. package/dist/verify/crate/index.js +8 -8
  165. package/dist/verify/crate/index.js.map +1 -1
  166. package/dist/verify/npm-tarball/download.d.ts +2 -2
  167. package/dist/verify/npm-tarball/download.d.ts.map +1 -1
  168. package/dist/verify/npm-tarball/download.js +7 -7
  169. package/dist/verify/npm-tarball/download.js.map +1 -1
  170. package/dist/verify/npm-tarball/local-dir-state.d.ts +1 -1
  171. package/dist/verify/npm-tarball/local-dir-state.d.ts.map +1 -1
  172. package/dist/verify/npm-tarball/local-dir-state.js +5 -4
  173. package/dist/verify/npm-tarball/local-dir-state.js.map +1 -1
  174. package/dist/verify/npm-tarball/main.d.ts.map +1 -1
  175. package/dist/verify/npm-tarball/main.js +8 -7
  176. package/dist/verify/npm-tarball/main.js.map +1 -1
  177. package/dist/verify/npm-tarball/resolve-url.js +4 -4
  178. package/dist/verify/npm-tarball/resolve-url.js.map +1 -1
  179. package/dist/verify/npm-tarball/triple.js +5 -5
  180. package/dist/verify/npm-tarball/triple.js.map +1 -1
  181. package/dist/verify/posture.js +1 -1
  182. package/dist/verify/posture.js.map +1 -1
  183. package/dist/verify/wheel/find-dist-file.d.ts +1 -1
  184. package/dist/verify/wheel/find-dist-file.d.ts.map +1 -1
  185. package/dist/verify/wheel/find-dist-file.js +6 -5
  186. package/dist/verify/wheel/find-dist-file.js.map +1 -1
  187. package/dist/verify/wheel/index.d.ts +2 -2
  188. package/dist/verify/wheel/index.d.ts.map +1 -1
  189. package/dist/verify/wheel/index.js +8 -7
  190. package/dist/verify/wheel/index.js.map +1 -1
  191. package/dist/verify/wheel/read-wheel-version.d.ts +1 -1
  192. package/dist/verify/wheel/read-wheel-version.d.ts.map +1 -1
  193. package/dist/verify/wheel/read-wheel-version.js +3 -3
  194. package/dist/verify/wheel/read-wheel-version.js.map +1 -1
  195. package/dist/wheel-abi.d.ts +2 -2
  196. package/dist/wheel-abi.d.ts.map +1 -1
  197. package/dist/wheel-abi.js +9 -7
  198. package/dist/wheel-abi.js.map +1 -1
  199. package/dist/write-crate-version.d.ts +1 -1
  200. package/dist/write-crate-version.d.ts.map +1 -1
  201. package/dist/write-crate-version.js +4 -4
  202. package/dist/write-crate-version.js.map +1 -1
  203. package/dist/write-launcher.d.ts +2 -2
  204. package/dist/write-launcher.d.ts.map +1 -1
  205. package/dist/write-launcher.js +9 -9
  206. package/dist/write-launcher.js.map +1 -1
  207. package/dist/write-resolved-cargo-version.d.ts +1 -1
  208. package/dist/write-resolved-cargo-version.d.ts.map +1 -1
  209. package/dist/write-resolved-cargo-version.js +6 -6
  210. package/dist/write-resolved-cargo-version.js.map +1 -1
  211. package/dist/write-version.d.ts +1 -1
  212. package/dist/write-version.d.ts.map +1 -1
  213. package/dist/write-version.js +7 -5
  214. package/dist/write-version.js.map +1 -1
  215. package/package.json +4 -4
package/dist/action.js CHANGED
@@ -73,8 +73,9 @@ export async function main() {
73
73
  // `main()` was never called, the action exited 0 immediately, and
74
74
  // `_matrix.yml`'s pre-maturin write-version step bumped nothing
75
75
  // (PR #277, e2e Windows maturin failures). Issue #276.
76
- /* v8 ignore next 3 -- entry-point guard; only reachable when invoked as a binary */
76
+ /* v8 ignore start -- entry-point guard; only reachable when invoked as a binary */
77
77
  if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
78
78
  void main();
79
79
  }
80
+ /* v8 ignore stop */
80
81
  //# sourceMappingURL=action.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"action.js","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"action.js","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"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"}
@@ -15,9 +15,8 @@
15
15
  * package the config declares, `parseTagVersion` reads the version back
16
16
  * out, and the shared `forceMoveTag` performs the move — so the floating
17
17
  * tag can never track a release the publish path wouldn't recognize.
18
- * Synchronous, per the engine convention.
19
18
  */
20
19
  export declare function advanceFloatingMajor(opts: {
21
20
  cwd: string;
22
- }): number;
21
+ }): Promise<number>;
23
22
  //# sourceMappingURL=advance-floating-major.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"advance-floating-major.d.ts","sourceRoot":"","sources":["../src/advance-floating-major.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AASH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAiClE"}
1
+ {"version":3,"file":"advance-floating-major.d.ts","sourceRoot":"","sources":["../src/advance-floating-major.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AASH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAiCjF"}
@@ -15,21 +15,20 @@
15
15
  * package the config declares, `parseTagVersion` reads the version back
16
16
  * out, and the shared `forceMoveTag` performs the move — so the floating
17
17
  * tag can never track a release the publish path wouldn't recognize.
18
- * Synchronous, per the engine convention.
19
18
  */
20
19
  import { join } from 'node:path';
21
20
  import { loadConfig } from './config.js';
22
21
  import { forceMoveTag } from './force-move-tag.js';
23
22
  import { fetchTagsForce, lastTag, tagCommit, tagList } from './git.js';
24
23
  import { parseTagVersion } from './tag-template.js';
25
- export function advanceFloatingMajor(opts) {
24
+ export async function advanceFloatingMajor(opts) {
26
25
  const gitOpts = { cwd: opts.cwd };
27
- const config = loadConfig(join(opts.cwd, 'putitoutthere.toml'));
26
+ const config = await loadConfig(join(opts.cwd, 'putitoutthere.toml'));
28
27
  const pkg = config.packages[0];
29
28
  // Refresh remote tags (force, so a tag moved on the remote since checkout
30
29
  // doesn't reject the fetch — #199) before re-deriving "latest release".
31
- fetchTagsForce(gitOpts);
32
- const latest = lastTag(pkg.name, pkg.tag_format, gitOpts);
30
+ await fetchTagsForce(gitOpts);
31
+ const latest = await lastTag(pkg.name, pkg.tag_format, gitOpts);
33
32
  if (latest === null) {
34
33
  process.stdout.write('No putitoutthere-v* tags yet; nothing to track.\n');
35
34
  return 0;
@@ -38,15 +37,15 @@ export function advanceFloatingMajor(opts) {
38
37
  const version = parseTagVersion(pkg.tag_format, pkg.name, latest);
39
38
  const major = version.split('.')[0];
40
39
  const floating = `v${major}`;
41
- const target = tagCommit(latest, gitOpts);
42
- const existing = tagList(floating, gitOpts);
43
- const current = existing.length > 0 ? tagCommit(floating, gitOpts) : null;
40
+ const target = await tagCommit(latest, gitOpts);
41
+ const existing = await tagList(floating, gitOpts);
42
+ const current = existing.length > 0 ? await tagCommit(floating, gitOpts) : null;
44
43
  if (current === target) {
45
44
  process.stdout.write(`Floating tag ${floating} already at ${latest}; no update.\n`);
46
45
  return 0;
47
46
  }
48
47
  process.stdout.write(`Moving floating tag ${floating} -> ${target} (latest release ${latest})\n`);
49
- forceMoveTag(floating, target, gitOpts);
48
+ await forceMoveTag(floating, target, gitOpts);
50
49
  return 0;
51
50
  }
52
51
  //# sourceMappingURL=advance-floating-major.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"advance-floating-major.js","sourceRoot":"","sources":["../src/advance-floating-major.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,UAAU,oBAAoB,CAAC,IAAqB;IACxD,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAChE,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;IAEhC,0EAA0E;IAC1E,wEAAwE;IACxE,cAAc,CAAC,OAAO,CAAC,CAAC;IAExB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC1D,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QAC1E,OAAO,CAAC,CAAC;IACX,CAAC;IAED,2EAA2E;IAC3E,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,CAAE,CAAC;IACnE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,IAAI,KAAK,EAAE,CAAC;IAE7B,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1E,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,QAAQ,eAAe,MAAM,gBAAgB,CAAC,CAAC;QACpF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uBAAuB,QAAQ,OAAO,MAAM,oBAAoB,MAAM,KAAK,CAC5E,CAAC;IACF,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,OAAO,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"advance-floating-major.js","sourceRoot":"","sources":["../src/advance-floating-major.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAqB;IAC9D,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC;IACtE,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;IAEhC,0EAA0E;IAC1E,wEAAwE;IACxE,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;IAE9B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAChE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QAC1E,OAAO,CAAC,CAAC;IACX,CAAC;IAED,2EAA2E;IAC3E,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,CAAE,CAAC;IACnE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,IAAI,KAAK,EAAE,CAAC;IAE7B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChF,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,QAAQ,eAAe,MAAM,gBAAgB,CAAC,CAAC;QACpF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uBAAuB,QAAQ,OAAO,MAAM,oBAAoB,MAAM,KAAK,CAC5E,CAAC;IACF,MAAM,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -9,11 +9,10 @@
9
9
  * The workflow's Fold step (`fold-bundle`) synthesizes that commit first;
10
10
  * this then points `v0` at it.
11
11
  *
12
- * Synchronous, per the engine convention. Reuses the shared `forceMoveTag`
13
- * so the local `git tag -f` + ref-scoped force-push match the
14
- * floating-major mover exactly.
12
+ * Reuses the shared `forceMoveTag` so the local `git tag -f` + ref-scoped
13
+ * force-push match the floating-major mover exactly.
15
14
  */
16
15
  export declare function advanceV0(opts: {
17
16
  cwd: string;
18
- }): number;
17
+ }): Promise<number>;
19
18
  //# sourceMappingURL=advance-v0.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"advance-v0.d.ts","sourceRoot":"","sources":["../src/advance-v0.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,wBAAgB,SAAS,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAKvD"}
1
+ {"version":3,"file":"advance-v0.d.ts","sourceRoot":"","sources":["../src/advance-v0.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,wBAAsB,SAAS,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAKtE"}
@@ -9,16 +9,15 @@
9
9
  * The workflow's Fold step (`fold-bundle`) synthesizes that commit first;
10
10
  * this then points `v0` at it.
11
11
  *
12
- * Synchronous, per the engine convention. Reuses the shared `forceMoveTag`
13
- * so the local `git tag -f` + ref-scoped force-push match the
14
- * floating-major mover exactly.
12
+ * Reuses the shared `forceMoveTag` so the local `git tag -f` + ref-scoped
13
+ * force-push match the floating-major mover exactly.
15
14
  */
16
15
  import { forceMoveTag } from './force-move-tag.js';
17
16
  import { headCommit } from './git.js';
18
- export function advanceV0(opts) {
19
- const target = headCommit({ cwd: opts.cwd });
17
+ export async function advanceV0(opts) {
18
+ const target = await headCommit({ cwd: opts.cwd });
20
19
  process.stdout.write(`Moving v0 -> ${target}\n`);
21
- forceMoveTag('v0', target, { cwd: opts.cwd });
20
+ await forceMoveTag('v0', target, { cwd: opts.cwd });
22
21
  return 0;
23
22
  }
24
23
  //# sourceMappingURL=advance-v0.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"advance-v0.js","sourceRoot":"","sources":["../src/advance-v0.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,UAAU,SAAS,CAAC,IAAqB;IAC7C,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,MAAM,IAAI,CAAC,CAAC;IACjD,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"advance-v0.js","sourceRoot":"","sources":["../src/advance-v0.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAqB;IACnD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,MAAM,IAAI,CAAC,CAAC;IACjD,MAAM,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACpD,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cascade.d.ts","sourceRoot":"","sources":["../src/cascade.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AAE7E,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,qBAAqB,EAAE,qBAAqB,GAC3C,OAAO,EAAE,CAoCX;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,CAqCjE"}
1
+ {"version":3,"file":"cascade.d.ts","sourceRoot":"","sources":["../src/cascade.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AAE7E,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,qBAAqB,EAAE,qBAAqB,GAC3C,OAAO,EAAE,CAoCX;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,CAsCjE"}
package/dist/cascade.js CHANGED
@@ -91,10 +91,11 @@ export function assertNoCycles(packages) {
91
91
  // `byName.get` is only undefined here when `visit` was entered with
92
92
  // a name we iterated over packages for — that list IS the keys of
93
93
  // byName, so this branch is unreachable under normal use. Defensive.
94
- /* v8 ignore next */
94
+ /* v8 ignore start -- byName always contains every visited name; unreachable */
95
95
  if (!node) {
96
96
  return;
97
97
  }
98
+ /* v8 ignore stop */
98
99
  /* v8 ignore next -- depends_on default is always [] from the Zod schema */
99
100
  for (const dep of node.depends_on ?? []) {
100
101
  if (!byName.has(dep)) {
@@ -1 +1 @@
1
- {"version":3,"file":"cascade.js","sourceRoot":"","sources":["../src/cascade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cascade.js","sourceRoot":"","sources":["../src/cascade.ts"],"names":[],"mappings":"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"}
@@ -22,5 +22,5 @@ import type { Package } from './config.js';
22
22
  * within the limit — or when a crate's size can't be determined, in
23
23
  * which case the check skips it rather than inventing a finding.
24
24
  */
25
- export declare function checkCratesPackageSize(packages: readonly Package[]): CheckFinding[];
25
+ export declare function checkCratesPackageSize(packages: readonly Package[]): Promise<CheckFinding[]>;
26
26
  //# sourceMappingURL=check-crate-size.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"check-crate-size.d.ts","sourceRoot":"","sources":["../src/check-crate-size.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAc3C;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAC3B,YAAY,EAAE,CAehB"}
1
+ {"version":3,"file":"check-crate-size.d.ts","sourceRoot":"","sources":["../src/check-crate-size.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAgB3C;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,SAAS,OAAO,EAAE,GAC3B,OAAO,CAAC,YAAY,EAAE,CAAC,CAezB"}
@@ -14,9 +14,10 @@
14
14
  * config loader is covered by
15
15
  * `tests/integration/check-crate-size.integration.test.ts`.
16
16
  */
17
- import { spawnSync } from 'node:child_process';
18
17
  import { join } from 'node:path';
19
18
  import { ErrorCodes } from './error-codes.js';
19
+ import { execCapture } from './utils/exec-capture.js';
20
+ import { ExecError } from './utils/exec-error.js';
20
21
  // crates.io rejects any `.crate` upload over this size.
21
22
  const CRATES_MAX_UPLOAD_BYTES = 10 * 1024 * 1024;
22
23
  const CARGO_SIZE_UNIT_BYTES = {
@@ -32,14 +33,14 @@ const CARGO_SIZE_UNIT_BYTES = {
32
33
  * within the limit — or when a crate's size can't be determined, in
33
34
  * which case the check skips it rather than inventing a finding.
34
35
  */
35
- export function checkCratesPackageSize(packages) {
36
+ export async function checkCratesPackageSize(packages) {
36
37
  const findings = [];
37
38
  for (const p of packages) {
38
39
  if (p.kind !== 'crates') {
39
40
  continue;
40
41
  }
41
42
  const cargoTomlPath = join(p.path, 'Cargo.toml');
42
- const compressedBytes = packagedCrateBytes(cargoTomlPath);
43
+ const compressedBytes = await packagedCrateBytes(cargoTomlPath);
43
44
  if (compressedBytes === null) {
44
45
  continue;
45
46
  }
@@ -60,21 +61,29 @@ export function checkCratesPackageSize(packages) {
60
61
  * mirroring the null-means-skip shape `listTrackedFiles` uses outside a
61
62
  * git repo.
62
63
  */
63
- function packagedCrateBytes(cargoTomlPath) {
64
- let result;
64
+ async function packagedCrateBytes(cargoTomlPath) {
65
+ let stderr;
66
+ let status;
65
67
  try {
66
- result = spawnSync('cargo', ['package', '--no-verify', '--allow-dirty', '--manifest-path', cargoTomlPath], { encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'] });
68
+ const r = await execCapture('cargo', [
69
+ 'package', '--no-verify', '--allow-dirty', '--manifest-path', cargoTomlPath,
70
+ ]);
71
+ stderr = r.stderr;
72
+ status = 0;
67
73
  }
68
- catch {
69
- return null;
70
- }
71
- if (result.error !== undefined) {
72
- return null;
74
+ catch (err) {
75
+ // cargo absent (ENOENT → status null) or a non-zero exit both mean
76
+ // "can't verify"; skip rather than invent a size finding.
77
+ if (!(err instanceof ExecError)) {
78
+ return null;
79
+ }
80
+ stderr = err.stderr;
81
+ status = err.status;
73
82
  }
74
- if (result.status !== 0) {
83
+ if (status !== 0) {
75
84
  return null;
76
85
  }
77
- return parseCargoCompressedBytes(result.stderr);
86
+ return parseCargoCompressedBytes(stderr);
78
87
  }
79
88
  /**
80
89
  * Pull the compressed `.crate` size out of `cargo package`'s summary
@@ -1 +1 @@
1
- {"version":3,"file":"check-crate-size.js","sourceRoot":"","sources":["../src/check-crate-size.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check-crate-size.js","sourceRoot":"","sources":["../src/check-crate-size.ts"],"names":[],"mappings":"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"}
package/dist/check.d.ts CHANGED
@@ -45,5 +45,5 @@ export interface CheckOptions {
45
45
  * check assumes a parsed `Config`, and a missing or malformed file
46
46
  * would otherwise cascade into a noisy stack trace per package.
47
47
  */
48
- export declare function runChecks(opts: CheckOptions): CheckFinding[];
48
+ export declare function runChecks(opts: CheckOptions): Promise<CheckFinding[]>;
49
49
  //# sourceMappingURL=check.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AA0BH,MAAM,WAAW,YAAY;IAC3B;yEACqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;iDAC6C;IAC7C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,EAAE,CA2C5D"}
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AA2BH,MAAM,WAAW,YAAY;IAC3B;yEACqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;iDAC6C;IAC7C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAgD3E"}
package/dist/check.js CHANGED
@@ -22,8 +22,7 @@
22
22
  *
23
23
  * Issue #319.
24
24
  */
25
- import { execFileSync } from 'node:child_process';
26
- import { existsSync, readFileSync, statSync } from 'node:fs';
25
+ import { readFile, stat } from 'node:fs/promises';
27
26
  import { dirname, isAbsolute, join, resolve } from 'node:path';
28
27
  import { parse as parseToml } from 'smol-toml';
29
28
  import { assertNoCycles } from './cascade.js';
@@ -31,6 +30,8 @@ import { checkCratesPackageSize } from './check-crate-size.js';
31
30
  import { loadConfig } from './config.js';
32
31
  import { ErrorCodes } from './error-codes.js';
33
32
  import { expandDirGlob, matchesAny } from './glob.js';
33
+ import { execCapture } from './utils/exec-capture.js';
34
+ import { pathExists } from './utils/path-exists.js';
34
35
  import { assertTripleSupported } from './handlers/npm-platform.js';
35
36
  import { checkCargoShape, checkCratesMetadata, checkPackageJsonShape, checkProvenanceMetadata, checkPyprojectShape, checkPypiVersionSource, checkRepoUrlMatch, } from './preflight.js';
36
37
  import { formatTag } from './tag-template.js';
@@ -45,11 +46,11 @@ import { normalizeTarget } from './types.js';
45
46
  * check assumes a parsed `Config`, and a missing or malformed file
46
47
  * would otherwise cascade into a noisy stack trace per package.
47
48
  */
48
- export function runChecks(opts) {
49
+ export async function runChecks(opts) {
49
50
  const findings = [];
50
51
  const cwd = opts.cwd;
51
52
  const cfgPath = opts.configPath ?? join(cwd, 'putitoutthere.toml');
52
- if (!existsSync(cfgPath)) {
53
+ if (!(await pathExists(cfgPath))) {
53
54
  findings.push({
54
55
  message: `putitoutthere.toml not found at ${cfgPath}. Drop one at the repo root; see https://github.com/thekevinscott/putitoutthere#2-drop-in-putitoutthere-toml`,
55
56
  });
@@ -57,7 +58,7 @@ export function runChecks(opts) {
57
58
  }
58
59
  let packages;
59
60
  try {
60
- const config = loadConfig(cfgPath);
61
+ const config = await loadConfig(cfgPath);
61
62
  // Anchor pkg.path to opts.cwd up front so per-kind fs ops point at
62
63
  // the right tree even when the CLI is invoked with --cwd from
63
64
  // outside the repo (mirrors publish.ts's loop).
@@ -67,57 +68,62 @@ export function runChecks(opts) {
67
68
  }));
68
69
  }
69
70
  catch (err) {
70
- findings.push({ message: err instanceof Error ? err.message : String(err) });
71
+ findings.push({
72
+ message: err instanceof Error
73
+ ? err.message
74
+ : /* v8 ignore next -- loadConfig only ever throws Error; the String(err) fallback is unreachable */
75
+ String(err),
76
+ });
71
77
  return findings;
72
78
  }
73
- checkPaths(packages, findings);
74
- checkGlobsMatchTrackedFiles(packages, cwd, findings);
79
+ await checkPaths(packages, findings);
80
+ await checkGlobsMatchTrackedFiles(packages, cwd, findings);
75
81
  checkDependsOn(packages, findings);
76
82
  checkTagTemplateCollisions(packages, findings);
77
- checkNpmRepository(packages, findings);
78
- checkCratesPackageMetadata(packages, findings);
79
- findings.push(...checkCratesPackageSize(packages));
80
- checkPyprojectAndBundleCli(packages, cwd, findings);
81
- checkPypiVersion(packages, findings);
82
- checkPyprojectShapeFindings(packages, findings);
83
- checkCargoShapeFindings(packages, cwd, findings);
84
- checkPackageJsonShapeFindings(packages, findings);
83
+ await checkNpmRepository(packages, findings);
84
+ await checkCratesPackageMetadata(packages, findings);
85
+ findings.push(...(await checkCratesPackageSize(packages)));
86
+ await checkPyprojectAndBundleCli(packages, cwd, findings);
87
+ await checkPypiVersion(packages, findings);
88
+ await checkPyprojectShapeFindings(packages, findings);
89
+ await checkCargoShapeFindings(packages, cwd, findings);
90
+ await checkPackageJsonShapeFindings(packages, findings);
85
91
  checkNpmTargetTriples(packages, findings);
86
- checkRepoUrlMatchFindings(packages, findings);
92
+ await checkRepoUrlMatchFindings(packages, findings);
87
93
  return findings;
88
94
  }
89
- function checkRepoUrlMatchFindings(packages, findings) {
95
+ async function checkRepoUrlMatchFindings(packages, findings) {
90
96
  // Sourced from GHA's process env at PR time when this runs inside the
91
97
  // reusable workflow. Locally invoked `putitoutthere check` outside any
92
98
  // GHA context will skip the check (the preflight returns no findings
93
99
  // when GITHUB_REPOSITORY is unset), which is the right behaviour:
94
100
  // there is no workflow source to disagree with.
95
101
  const githubRepository = process.env.GITHUB_REPOSITORY;
96
- for (const f of checkRepoUrlMatch(packages, { githubRepository })) {
102
+ for (const f of await checkRepoUrlMatch(packages, { githubRepository })) {
97
103
  findings.push({
98
104
  package: f.package,
99
105
  message: `[${ErrorCodes.REPO_URL_MISMATCH}] ${f.manifestPath}: declared repository "${f.declaredOwnerRepo}" does not match GITHUB_REPOSITORY "${f.expectedOwnerRepo}". npm rejects \`--provenance\` publishes whose package.json#repository.url disagrees with the OIDC source claim (422); crates.io / PyPI trusted-publisher paths carry the same risk.`,
100
106
  });
101
107
  }
102
108
  }
103
- function checkPyprojectShapeFindings(packages, findings) {
104
- for (const f of checkPyprojectShape(packages)) {
109
+ async function checkPyprojectShapeFindings(packages, findings) {
110
+ for (const f of await checkPyprojectShape(packages)) {
105
111
  findings.push({
106
112
  package: f.package,
107
113
  message: `[${f.code}] ${f.pyprojectPath}: ${f.detail}`,
108
114
  });
109
115
  }
110
116
  }
111
- function checkCargoShapeFindings(packages, cwd, findings) {
112
- for (const f of checkCargoShape(packages, { cwd })) {
117
+ async function checkCargoShapeFindings(packages, cwd, findings) {
118
+ for (const f of await checkCargoShape(packages, { cwd })) {
113
119
  findings.push({
114
120
  package: f.package,
115
121
  message: `[${f.code}] ${f.cargoTomlPath}: ${f.detail}`,
116
122
  });
117
123
  }
118
124
  }
119
- function checkPackageJsonShapeFindings(packages, findings) {
120
- for (const f of checkPackageJsonShape(packages)) {
125
+ async function checkPackageJsonShapeFindings(packages, findings) {
126
+ for (const f of await checkPackageJsonShape(packages)) {
121
127
  findings.push({
122
128
  package: f.package,
123
129
  message: `[${f.code}] ${f.packageJsonPath}: ${f.detail}`,
@@ -125,9 +131,9 @@ function checkPackageJsonShapeFindings(packages, findings) {
125
131
  }
126
132
  }
127
133
  /* ----------------------------- internals ----------------------------- */
128
- function checkPaths(packages, findings) {
134
+ async function checkPaths(packages, findings) {
129
135
  for (const p of packages) {
130
- if (!existsSync(p.path) || !statSync(p.path).isDirectory()) {
136
+ if (!(await pathExists(p.path)) || !(await stat(p.path)).isDirectory()) {
131
137
  findings.push({
132
138
  package: p.name,
133
139
  message: `path "${p.path}" does not exist or is not a directory in the worktree`,
@@ -135,13 +141,13 @@ function checkPaths(packages, findings) {
135
141
  }
136
142
  }
137
143
  }
138
- function checkGlobsMatchTrackedFiles(packages, cwd, findings) {
139
- const tracked = listTrackedFiles(cwd);
140
- /* v8 ignore next -- tests always seed a git repo; defensive against
141
- callers outside one */
144
+ async function checkGlobsMatchTrackedFiles(packages, cwd, findings) {
145
+ const tracked = await listTrackedFiles(cwd);
146
+ /* v8 ignore start -- checks run inside the repo checkout where git ls-files always resolves; the null branch is defensive against callers outside a worktree */
142
147
  if (tracked === null) {
143
148
  return;
144
149
  }
150
+ /* v8 ignore stop -- end of defensive guard above */
145
151
  for (const p of packages) {
146
152
  const matched = tracked.some((f) => matchesAny(p.globs, f));
147
153
  if (!matched) {
@@ -157,7 +163,12 @@ function checkDependsOn(packages, findings) {
157
163
  assertNoCycles(packages);
158
164
  }
159
165
  catch (err) {
160
- findings.push({ message: err instanceof Error ? err.message : String(err) });
166
+ findings.push({
167
+ message: err instanceof Error
168
+ ? err.message
169
+ : /* v8 ignore next -- assertNoCycles only ever throws Error; the String(err) fallback is unreachable */
170
+ String(err),
171
+ });
161
172
  }
162
173
  }
163
174
  function checkTagTemplateCollisions(packages, findings) {
@@ -180,8 +191,8 @@ function checkTagTemplateCollisions(packages, findings) {
180
191
  }
181
192
  }
182
193
  }
183
- function checkNpmRepository(packages, findings) {
184
- for (const f of checkProvenanceMetadata(packages)) {
194
+ async function checkNpmRepository(packages, findings) {
195
+ for (const f of await checkProvenanceMetadata(packages)) {
185
196
  const reason = f.reason === 'missing'
186
197
  ? `${f.packageJsonPath} not found`
187
198
  : `${f.packageJsonPath} has missing or empty \`repository\``;
@@ -191,21 +202,21 @@ function checkNpmRepository(packages, findings) {
191
202
  });
192
203
  }
193
204
  }
194
- function checkCratesPackageMetadata(packages, findings) {
195
- for (const f of checkCratesMetadata(packages)) {
205
+ async function checkCratesPackageMetadata(packages, findings) {
206
+ for (const f of await checkCratesMetadata(packages)) {
196
207
  findings.push({
197
208
  package: f.package,
198
209
  message: `[${ErrorCodes.CRATES_MISSING_METADATA}] ${f.cargoTomlPath} missing required Cargo.toml [package] field(s): ${f.missing.join(', ')}. crates.io rejects the publish after cargo's verification build.`,
199
210
  });
200
211
  }
201
212
  }
202
- function checkPyprojectAndBundleCli(packages, cwd, findings) {
213
+ async function checkPyprojectAndBundleCli(packages, cwd, findings) {
203
214
  for (const p of packages) {
204
215
  if (p.kind !== 'pypi') {
205
216
  continue;
206
217
  }
207
218
  const pyprojectPath = join(p.path, 'pyproject.toml');
208
- if (!existsSync(pyprojectPath)) {
219
+ if (!(await pathExists(pyprojectPath))) {
209
220
  findings.push({
210
221
  package: p.name,
211
222
  message: `pyproject.toml not found at ${pyprojectPath}`,
@@ -223,21 +234,21 @@ function checkPyprojectAndBundleCli(packages, cwd, findings) {
223
234
  ? bundleCli.crate_path
224
235
  : resolve(cwd, bundleCli.crate_path);
225
236
  const cargoTomlPath = join(cratePathAbs, 'Cargo.toml');
226
- if (!existsSync(cratePathAbs) || !statSync(cratePathAbs).isDirectory()) {
237
+ if (!(await pathExists(cratePathAbs)) || !(await stat(cratePathAbs)).isDirectory()) {
227
238
  findings.push({
228
239
  package: p.name,
229
240
  message: `bundle_cli.crate_path "${bundleCli.crate_path}" does not exist or is not a directory`,
230
241
  });
231
242
  continue;
232
243
  }
233
- if (!existsSync(cargoTomlPath)) {
244
+ if (!(await pathExists(cargoTomlPath))) {
234
245
  findings.push({
235
246
  package: p.name,
236
247
  message: `bundle_cli.crate_path "${bundleCli.crate_path}" has no Cargo.toml`,
237
248
  });
238
249
  continue;
239
250
  }
240
- const declaredBins = readDeclaredBins(cargoTomlPath);
251
+ const declaredBins = await readDeclaredBins(cargoTomlPath);
241
252
  if (!declaredBins.includes(bundleCli.bin)) {
242
253
  findings.push({
243
254
  package: p.name,
@@ -246,8 +257,8 @@ function checkPyprojectAndBundleCli(packages, cwd, findings) {
246
257
  }
247
258
  }
248
259
  }
249
- function checkPypiVersion(packages, findings) {
250
- for (const f of checkPypiVersionSource(packages)) {
260
+ async function checkPypiVersion(packages, findings) {
261
+ for (const f of await checkPypiVersionSource(packages)) {
251
262
  findings.push({
252
263
  package: f.package,
253
264
  message: `[${ErrorCodes.PYPI_STATIC_VERSION}] ${f.pyprojectPath} declares a static \`[project].version\` literal. Use \`[project].dynamic = ["version"]\` with hatch-vcs (recommended), setuptools-scm, or the maturin Cargo.toml-driven path — putitoutthere does not edit pyproject.toml at release time, so a literal silently ships the previous release.`,
@@ -271,29 +282,26 @@ function checkNpmTargetTriples(packages, findings) {
271
282
  catch (err) {
272
283
  findings.push({
273
284
  package: p.name,
274
- message: err instanceof Error ? err.message : String(err),
285
+ message: err instanceof Error
286
+ ? err.message
287
+ : /* v8 ignore next -- assertTripleSupported only ever throws Error; the String(err) fallback is unreachable */
288
+ String(err),
275
289
  });
276
290
  }
277
291
  }
278
292
  }
279
293
  }
280
- function listTrackedFiles(cwd) {
294
+ async function listTrackedFiles(cwd) {
281
295
  try {
282
- const out = execFileSync('git', ['ls-files'], {
283
- cwd,
284
- encoding: 'utf8',
285
- stdio: ['ignore', 'pipe', 'pipe'],
286
- });
287
- return out.split('\n').filter((l) => l.length > 0);
288
- /* v8 ignore start -- defensive against callers outside a git repo */
296
+ const { stdout } = await execCapture('git', ['ls-files'], { cwd });
297
+ return stdout.split('\n').filter((l) => l.length > 0);
289
298
  }
290
299
  catch {
291
300
  return null;
292
301
  }
293
- /* v8 ignore stop */
294
302
  }
295
- function readDeclaredBins(cargoTomlPath) {
296
- const parsed = parseCargoToml(cargoTomlPath);
303
+ async function readDeclaredBins(cargoTomlPath) {
304
+ const parsed = await parseCargoToml(cargoTomlPath);
297
305
  if (parsed === null) {
298
306
  return [];
299
307
  }
@@ -308,8 +316,8 @@ function readDeclaredBins(cargoTomlPath) {
308
316
  // cargo resolves them. parseCargoToml returns null for missing /
309
317
  // malformed manifests, so stray entries silently drop out — cargo's
310
318
  // own diagnostics own surfacing those.
311
- for (const memberManifest of workspaceMemberManifests(parsed, cargoTomlPath)) {
312
- const memberParsed = parseCargoToml(memberManifest);
319
+ for (const memberManifest of await workspaceMemberManifests(parsed, cargoTomlPath)) {
320
+ const memberParsed = await parseCargoToml(memberManifest);
313
321
  if (memberParsed === null) {
314
322
  continue;
315
323
  }
@@ -321,7 +329,7 @@ function readDeclaredBins(cargoTomlPath) {
321
329
  }
322
330
  return result;
323
331
  }
324
- function workspaceMemberManifests(parsed, cargoTomlPath) {
332
+ async function workspaceMemberManifests(parsed, cargoTomlPath) {
325
333
  const workspace = parsed.workspace;
326
334
  if (typeof workspace !== 'object' || workspace === null) {
327
335
  return [];
@@ -334,17 +342,17 @@ function workspaceMemberManifests(parsed, cargoTomlPath) {
334
342
  const out = [];
335
343
  for (const m of members) {
336
344
  if (typeof m === 'string') {
337
- for (const memberDir of expandDirGlob(workspaceDir, m)) {
345
+ for (const memberDir of await expandDirGlob(workspaceDir, m)) {
338
346
  out.push(join(memberDir, 'Cargo.toml'));
339
347
  }
340
348
  }
341
349
  }
342
350
  return out;
343
351
  }
344
- function parseCargoToml(path) {
352
+ async function parseCargoToml(path) {
345
353
  let raw;
346
354
  try {
347
- raw = readFileSync(path, 'utf8');
355
+ raw = await readFile(path, 'utf8');
348
356
  }
349
357
  catch {
350
358
  return null;