putitoutthere 0.2.67 → 0.2.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/action.js +2 -1
- package/dist/action.js.map +1 -1
- package/dist/advance-floating-major.d.ts +1 -2
- package/dist/advance-floating-major.d.ts.map +1 -1
- package/dist/advance-floating-major.js +8 -9
- package/dist/advance-floating-major.js.map +1 -1
- package/dist/advance-v0.d.ts +3 -4
- package/dist/advance-v0.d.ts.map +1 -1
- package/dist/advance-v0.js +5 -6
- package/dist/advance-v0.js.map +1 -1
- package/dist/cascade.d.ts.map +1 -1
- package/dist/cascade.js +2 -1
- package/dist/cascade.js.map +1 -1
- package/dist/check-crate-size.d.ts +1 -1
- package/dist/check-crate-size.d.ts.map +1 -1
- package/dist/check-crate-size.js +22 -13
- package/dist/check-crate-size.js.map +1 -1
- package/dist/check.d.ts +1 -1
- package/dist/check.d.ts.map +1 -1
- package/dist/check.js +69 -61
- package/dist/check.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +15 -15
- package/dist/cli.js.map +1 -1
- package/dist/completeness.d.ts +3 -2
- package/dist/completeness.d.ts.map +1 -1
- package/dist/completeness.js +14 -13
- package/dist/completeness.js.map +1 -1
- package/dist/config.d.ts +4 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +5 -5
- package/dist/config.js.map +1 -1
- package/dist/ensure-tag.d.ts +1 -1
- package/dist/ensure-tag.d.ts.map +1 -1
- package/dist/ensure-tag.js +4 -4
- package/dist/ensure-tag.js.map +1 -1
- package/dist/find-workspace-root.d.ts +1 -1
- package/dist/find-workspace-root.d.ts.map +1 -1
- package/dist/find-workspace-root.js +3 -3
- package/dist/find-workspace-root.js.map +1 -1
- package/dist/fold-action-bundle.d.ts +1 -1
- package/dist/fold-action-bundle.d.ts.map +1 -1
- package/dist/fold-action-bundle.js +5 -5
- package/dist/fold-action-bundle.js.map +1 -1
- package/dist/force-move-tag.d.ts +1 -1
- package/dist/force-move-tag.d.ts.map +1 -1
- package/dist/force-move-tag.js +3 -3
- package/dist/force-move-tag.js.map +1 -1
- package/dist/git.d.ts +19 -21
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +44 -49
- package/dist/git.js.map +1 -1
- package/dist/glob.d.ts +1 -1
- package/dist/glob.d.ts.map +1 -1
- package/dist/glob.js +17 -7
- package/dist/glob.js.map +1 -1
- package/dist/handlers/crates.d.ts +2 -1
- package/dist/handlers/crates.d.ts.map +1 -1
- package/dist/handlers/crates.js +35 -36
- package/dist/handlers/crates.js.map +1 -1
- package/dist/handlers/npm-platform.d.ts +1 -0
- package/dist/handlers/npm-platform.d.ts.map +1 -1
- package/dist/handlers/npm-platform.js +39 -41
- package/dist/handlers/npm-platform.js.map +1 -1
- package/dist/handlers/npm.d.ts.map +1 -1
- package/dist/handlers/npm.js +30 -23
- package/dist/handlers/npm.js.map +1 -1
- package/dist/handlers/pypi.js +17 -12
- package/dist/handlers/pypi.js.map +1 -1
- package/dist/normalize-artifacts.d.ts +1 -1
- package/dist/normalize-artifacts.d.ts.map +1 -1
- package/dist/normalize-artifacts.js +8 -7
- package/dist/normalize-artifacts.js.map +1 -1
- package/dist/plan-status.js +1 -1
- package/dist/plan-status.js.map +1 -1
- package/dist/plan.d.ts.map +1 -1
- package/dist/plan.js +29 -27
- package/dist/plan.js.map +1 -1
- package/dist/preflight.d.ts +14 -14
- package/dist/preflight.d.ts.map +1 -1
- package/dist/preflight.js +56 -56
- package/dist/preflight.js.map +1 -1
- package/dist/publish.d.ts.map +1 -1
- package/dist/publish.js +25 -17
- package/dist/publish.js.map +1 -1
- package/dist/python-versions.d.ts +1 -1
- package/dist/python-versions.d.ts.map +1 -1
- package/dist/python-versions.js +5 -5
- package/dist/python-versions.js.map +1 -1
- package/dist/reconcile.js +3 -3
- package/dist/reconcile.js.map +1 -1
- package/dist/release-github/gh-release-create.d.ts +1 -1
- package/dist/release-github/gh-release-create.d.ts.map +1 -1
- package/dist/release-github/gh-release-create.js +3 -4
- package/dist/release-github/gh-release-create.js.map +1 -1
- package/dist/release-github/gh-release-exists.d.ts +1 -1
- package/dist/release-github/gh-release-exists.d.ts.map +1 -1
- package/dist/release-github/gh-release-exists.js +3 -3
- package/dist/release-github/gh-release-exists.js.map +1 -1
- package/dist/release-github/index.d.ts +4 -5
- package/dist/release-github/index.d.ts.map +1 -1
- package/dist/release-github/index.js +8 -9
- package/dist/release-github/index.js.map +1 -1
- package/dist/resolve-tag-commit.d.ts +2 -2
- package/dist/resolve-tag-commit.d.ts.map +1 -1
- package/dist/resolve-tag-commit.js +4 -4
- package/dist/resolve-tag-commit.js.map +1 -1
- package/dist/status.js +2 -2
- package/dist/status.js.map +1 -1
- package/dist/trailer.d.ts +1 -0
- package/dist/trailer.d.ts.map +1 -1
- package/dist/trailer.js +1 -1
- package/dist/trailer.js.map +1 -1
- package/dist/utils/exec-capture.d.ts +20 -0
- package/dist/utils/exec-capture.d.ts.map +1 -0
- package/dist/utils/exec-capture.js +25 -0
- package/dist/utils/exec-capture.js.map +1 -0
- package/dist/utils/exec-error.d.ts +16 -0
- package/dist/utils/exec-error.d.ts.map +1 -0
- package/dist/utils/exec-error.js +21 -0
- package/dist/utils/exec-error.js.map +1 -0
- package/dist/utils/exec-inherit.d.ts +13 -0
- package/dist/utils/exec-inherit.d.ts.map +1 -0
- package/dist/utils/exec-inherit.js +25 -0
- package/dist/utils/exec-inherit.js.map +1 -0
- package/dist/utils/list-files-recursive.d.ts +2 -2
- package/dist/utils/list-files-recursive.d.ts.map +1 -1
- package/dist/utils/list-files-recursive.js +7 -6
- package/dist/utils/list-files-recursive.js.map +1 -1
- package/dist/utils/path-exists.d.ts +3 -0
- package/dist/utils/path-exists.d.ts.map +1 -0
- package/dist/utils/path-exists.js +12 -0
- package/dist/utils/path-exists.js.map +1 -0
- package/dist/utils/sleep.d.ts +3 -0
- package/dist/utils/sleep.d.ts.map +1 -0
- package/dist/utils/sleep.js +5 -0
- package/dist/utils/sleep.js.map +1 -0
- package/dist/verbose.d.ts +1 -1
- package/dist/verbose.d.ts.map +1 -1
- package/dist/verbose.js +5 -5
- package/dist/verbose.js.map +1 -1
- package/dist/verify/bundle-cli/index.d.ts +2 -2
- package/dist/verify/bundle-cli/index.d.ts.map +1 -1
- package/dist/verify/bundle-cli/index.js +6 -6
- package/dist/verify/bundle-cli/index.js.map +1 -1
- package/dist/verify/bundle-cli/read-python-source.d.ts +1 -1
- package/dist/verify/bundle-cli/read-python-source.d.ts.map +1 -1
- package/dist/verify/bundle-cli/read-python-source.js +5 -4
- package/dist/verify/bundle-cli/read-python-source.js.map +1 -1
- package/dist/verify/crate/extract-crate.d.ts +1 -1
- package/dist/verify/crate/extract-crate.d.ts.map +1 -1
- package/dist/verify/crate/extract-crate.js +5 -5
- package/dist/verify/crate/extract-crate.js.map +1 -1
- package/dist/verify/crate/find-crate-file.d.ts +1 -1
- package/dist/verify/crate/find-crate-file.d.ts.map +1 -1
- package/dist/verify/crate/find-crate-file.js +4 -4
- package/dist/verify/crate/find-crate-file.js.map +1 -1
- package/dist/verify/crate/has-crate-source.d.ts +1 -1
- package/dist/verify/crate/has-crate-source.d.ts.map +1 -1
- package/dist/verify/crate/has-crate-source.js +2 -2
- package/dist/verify/crate/has-crate-source.js.map +1 -1
- package/dist/verify/crate/index.d.ts +2 -2
- package/dist/verify/crate/index.d.ts.map +1 -1
- package/dist/verify/crate/index.js +8 -8
- package/dist/verify/crate/index.js.map +1 -1
- package/dist/verify/npm-tarball/download.d.ts +2 -2
- package/dist/verify/npm-tarball/download.d.ts.map +1 -1
- package/dist/verify/npm-tarball/download.js +7 -7
- package/dist/verify/npm-tarball/download.js.map +1 -1
- package/dist/verify/npm-tarball/local-dir-state.d.ts +1 -1
- package/dist/verify/npm-tarball/local-dir-state.d.ts.map +1 -1
- package/dist/verify/npm-tarball/local-dir-state.js +5 -4
- package/dist/verify/npm-tarball/local-dir-state.js.map +1 -1
- package/dist/verify/npm-tarball/main.d.ts.map +1 -1
- package/dist/verify/npm-tarball/main.js +8 -7
- package/dist/verify/npm-tarball/main.js.map +1 -1
- package/dist/verify/npm-tarball/resolve-url.js +4 -4
- package/dist/verify/npm-tarball/resolve-url.js.map +1 -1
- package/dist/verify/npm-tarball/triple.js +5 -5
- package/dist/verify/npm-tarball/triple.js.map +1 -1
- package/dist/verify/posture.js +1 -1
- package/dist/verify/posture.js.map +1 -1
- package/dist/verify/wheel/find-dist-file.d.ts +1 -1
- package/dist/verify/wheel/find-dist-file.d.ts.map +1 -1
- package/dist/verify/wheel/find-dist-file.js +6 -5
- package/dist/verify/wheel/find-dist-file.js.map +1 -1
- package/dist/verify/wheel/index.d.ts +2 -2
- package/dist/verify/wheel/index.d.ts.map +1 -1
- package/dist/verify/wheel/index.js +8 -7
- package/dist/verify/wheel/index.js.map +1 -1
- package/dist/verify/wheel/read-wheel-version.d.ts +1 -1
- package/dist/verify/wheel/read-wheel-version.d.ts.map +1 -1
- package/dist/verify/wheel/read-wheel-version.js +3 -3
- package/dist/verify/wheel/read-wheel-version.js.map +1 -1
- package/dist/wheel-abi.d.ts +2 -2
- package/dist/wheel-abi.d.ts.map +1 -1
- package/dist/wheel-abi.js +9 -7
- package/dist/wheel-abi.js.map +1 -1
- package/dist/write-crate-version.d.ts +1 -1
- package/dist/write-crate-version.d.ts.map +1 -1
- package/dist/write-crate-version.js +4 -4
- package/dist/write-crate-version.js.map +1 -1
- package/dist/write-launcher.d.ts +2 -2
- package/dist/write-launcher.d.ts.map +1 -1
- package/dist/write-launcher.js +9 -9
- package/dist/write-launcher.js.map +1 -1
- package/dist/write-resolved-cargo-version.d.ts +1 -1
- package/dist/write-resolved-cargo-version.d.ts.map +1 -1
- package/dist/write-resolved-cargo-version.js +6 -6
- package/dist/write-resolved-cargo-version.js.map +1 -1
- package/dist/write-version.d.ts +1 -1
- package/dist/write-version.d.ts.map +1 -1
- package/dist/write-version.js +7 -5
- package/dist/write-version.js.map +1 -1
- package/package.json +4 -4
package/dist/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
|
|
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
|
package/dist/action.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.js","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC;IAChD,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE,CAAC;IACnE,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC;IACrD,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE,CAAC;IACjE,MAAM,WAAW,GACf,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC;IAExE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,0DAA0D,CAC3D,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,kEAAkE;IAClE,kEAAkE;IAClE,8DAA8D;IAC9D,+DAA+D;IAC/D,eAAe;IACf,qEAAqE;IACrE,2DAA2D;IAC3D,iEAAiE;IACjE,8BAA8B;IAC9B,oEAAoE;IACpE,iDAAiD;IACjD,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;IAChD,IAAI,OAAO,KAAK,eAAe,IAAI,OAAO,KAAK,qBAAqB,EAAE,CAAC;QACrE,IAAI,gBAAgB,EAAE,CAAC;YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QAAA,CAAC;QAC9D,IAAI,YAAY,EAAE,CAAC;YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAAA,CAAC;IAC3D,CAAC;SAAM,IAAI,OAAO,KAAK,gBAAgB,EAAE,CAAC;QACxC,IAAI,gBAAgB,EAAE,CAAC;YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QAAA,CAAC;IAChE,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpB,IAAI,gBAAgB,EAAE,CAAC;YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QAAA,CAAC;QAC7D,8DAA8D;QAC9D,mEAAmE;QACnE,2CAA2C;QAC3C,IAAI,eAAe,EAAE,CAAC;YAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;QAAA,CAAC;IAC1E,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uEAAuE,IAAI,IAAI,CAChF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC;AAED,uEAAuE;AACvE,iEAAiE;AACjE,sEAAsE;AACtE,kEAAkE;AAClE,sEAAsE;AACtE,qEAAqE;AACrE,kEAAkE;AAClE,kEAAkE;AAClE,gEAAgE;AAChE,uDAAuD;AACvD,
|
|
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
|
|
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
|
|
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"}
|
package/dist/advance-v0.d.ts
CHANGED
|
@@ -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
|
-
*
|
|
13
|
-
*
|
|
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
|
package/dist/advance-v0.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advance-v0.d.ts","sourceRoot":"","sources":["../src/advance-v0.ts"],"names":[],"mappings":"AAAA
|
|
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"}
|
package/dist/advance-v0.js
CHANGED
|
@@ -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
|
-
*
|
|
13
|
-
*
|
|
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
|
package/dist/advance-v0.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advance-v0.js","sourceRoot":"","sources":["../src/advance-v0.ts"],"names":[],"mappings":"AAAA
|
|
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"}
|
package/dist/cascade.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
|
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)) {
|
package/dist/cascade.js.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/check-crate-size.js
CHANGED
|
@@ -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
|
|
64
|
+
async function packagedCrateBytes(cargoTomlPath) {
|
|
65
|
+
let stderr;
|
|
66
|
+
let status;
|
|
65
67
|
try {
|
|
66
|
-
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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 (
|
|
83
|
+
if (status !== 0) {
|
|
75
84
|
return null;
|
|
76
85
|
}
|
|
77
|
-
return parseCargoCompressedBytes(
|
|
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":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,
|
|
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
|
package/dist/check.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;
|
|
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 {
|
|
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 (!
|
|
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({
|
|
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 (!
|
|
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
|
|
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({
|
|
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 (!
|
|
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 (!
|
|
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 (!
|
|
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
|
|
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
|
|
283
|
-
|
|
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 =
|
|
355
|
+
raw = await readFile(path, 'utf8');
|
|
348
356
|
}
|
|
349
357
|
catch {
|
|
350
358
|
return null;
|