putitoutthere 0.1.46 → 0.1.48
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/CHANGELOG.md +55 -0
- package/MIGRATIONS.md +195 -0
- package/action.yml +8 -4
- package/dist/action.d.ts +3 -3
- package/dist/action.d.ts.map +1 -1
- package/dist/action.js +7 -8
- package/dist/action.js.map +1 -1
- package/dist/cli.d.ts +12 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +22 -8
- package/dist/cli.js.map +1 -1
- package/dist/completeness.js +6 -0
- package/dist/completeness.js.map +1 -1
- package/dist/handlers/crates.d.ts +2 -2
- package/dist/handlers/crates.d.ts.map +1 -1
- package/dist/handlers/crates.js +18 -6
- package/dist/handlers/crates.js.map +1 -1
- package/dist/handlers/npm-platform.d.ts.map +1 -1
- package/dist/handlers/npm-platform.js +12 -8
- package/dist/handlers/npm-platform.js.map +1 -1
- package/dist/handlers/npm.d.ts.map +1 -1
- package/dist/handlers/npm.js +0 -3
- package/dist/handlers/npm.js.map +1 -1
- package/dist/handlers/pypi.d.ts.map +1 -1
- package/dist/handlers/pypi.js +24 -11
- package/dist/handlers/pypi.js.map +1 -1
- package/dist/log.d.ts.map +1 -1
- package/dist/log.js.map +1 -1
- package/dist/plan.js +21 -6
- package/dist/plan.js.map +1 -1
- package/dist/publish.d.ts +0 -1
- package/dist/publish.d.ts.map +1 -1
- package/dist/publish.js +9 -20
- package/dist/publish.js.map +1 -1
- package/dist/types.d.ts +0 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/verbose.js.map +1 -1
- package/package.json +2 -3
package/CHANGELOG.md
CHANGED
|
@@ -45,6 +45,61 @@ are prefixed `**BREAKING**` and link to the matching section in
|
|
|
45
45
|
|
|
46
46
|
### Fixed
|
|
47
47
|
|
|
48
|
+
- **PyPI artifact discovery now matches the documented `{name}-sdist` and `{name}-wheel-{target}` shapes exactly.** (#244)
|
|
49
|
+
Previously the handler used a bare prefix match (`entry.startsWith("{name}-")`), which silently picked up sibling packages whose names extended the same prefix (e.g. `foo`'s discovery matched `foo-extras-sdist`). The handler now matches the sdist directory exactly and the wheel directories by `{name}-wheel-` prefix only. Affects multi-package repos where one pypi package's name is a prefix of another's.
|
|
50
|
+
|
|
51
|
+
- **Reusable workflow's maturin sdist row now uses `command: sdist`.** (#244)
|
|
52
|
+
`maturin build --sdist` builds a wheel AND an sdist; the sdist row's
|
|
53
|
+
artifact tarball ended up containing a manylinux wheel that collided
|
|
54
|
+
with the per-target wheel rows at upload time, causing twine to abort
|
|
55
|
+
with `400 File already exists`. Splitting the sdist invocation to use
|
|
56
|
+
`command: sdist` (sdist-only) eliminates the collision.
|
|
57
|
+
|
|
58
|
+
- **Synthesized npm platform packages now inherit `repository`, `license`, and `homepage` from the main `package.json`.** (#244)
|
|
59
|
+
npm's provenance verifier rejected platform tarballs with `E422 Error verifying sigstore provenance bundle: Failed to validate repository information: package.json: "repository.url" is "", expected to match "https://github.com/<owner>/<repo>"`. The synthesizer used to write only `name`/`version`/`os`/`cpu`/`files`/`main`/`libc`; the empty repository URL didn't match the publishing repo baked into the sigstore bundle. Identity fields are now copied from the main package so per-target tarballs validate. Affects `build = "napi"` and `build = "bundled-cli"` packages.
|
|
60
|
+
|
|
61
|
+
- **Reusable workflow's npm build step now forces `shell: bash`.** (#244)
|
|
62
|
+
The build matrix can target Windows runners, where GitHub Actions defaults
|
|
63
|
+
to `pwsh` for `run:` blocks. The npm build's `if [ -f package-lock.json ]`
|
|
64
|
+
branch is bash syntax, which PowerShell parsed as a malformed expression
|
|
65
|
+
and aborted with `ParserError`. Adding `shell: bash` makes the step
|
|
66
|
+
portable across Linux, macOS, and Windows runners. No config changes
|
|
67
|
+
required for consumers; pure JS-on-ubuntu setups were unaffected.
|
|
68
|
+
|
|
69
|
+
- **Reusable workflow now exchanges OIDC ID-token for a `CARGO_REGISTRY_TOKEN`
|
|
70
|
+
before invoking the engine.** (#244) `cargo publish` was failing with
|
|
71
|
+
`error: no token found, please run cargo login` because the publish
|
|
72
|
+
job's env had no `CARGO_REGISTRY_TOKEN`. PyPI uploads (twine) and npm
|
|
73
|
+
publish both consume the OIDC ID-token directly via registry-side
|
|
74
|
+
acceptance; cargo doesn't — it needs a registry-issued bearer token,
|
|
75
|
+
which `rust-lang/crates-io-auth-action@v1` produces from the OIDC
|
|
76
|
+
ID-token. The workflow now runs that action conditionally (only when
|
|
77
|
+
the plan contains a `kind = "crates"` row) and exports the resulting
|
|
78
|
+
token to `$GITHUB_ENV` for the engine subprocess. No config or
|
|
79
|
+
workflow changes required for consumers.
|
|
80
|
+
|
|
81
|
+
- **Crates publish's pre-cargo dirty-tree check now ignores the
|
|
82
|
+
reusable workflow's `artifacts/` scratch directory.** (#244)
|
|
83
|
+
The pre-publish guard scans `git status --porcelain` for stray edits
|
|
84
|
+
outside the managed `Cargo.toml` (the engine passes `--allow-dirty`
|
|
85
|
+
to cargo to permit the writeVersion bump, then re-imposes a narrower
|
|
86
|
+
check). Reusable workflow's `actions/download-artifact@v4` step
|
|
87
|
+
always creates `artifacts/` under cwd, even for crates-only
|
|
88
|
+
fixtures with nothing to download — the pre-check was rejecting
|
|
89
|
+
with `unexpected dirty files in the working tree outside ... -
|
|
90
|
+
artifacts/`. The scan now treats `${ctx.artifactsRoot}` (the dir
|
|
91
|
+
the engine itself populates) as engine-managed and skips it. No
|
|
92
|
+
config or workflow changes required.
|
|
93
|
+
|
|
94
|
+
- **Crates publish no longer fails the completeness check.** (#244)
|
|
95
|
+
`cargo publish` packages and uploads from source on the registry
|
|
96
|
+
side, so the reusable workflow never produces a `<name>-crate/`
|
|
97
|
+
artifact directory. The pre-publish completeness check was demanding
|
|
98
|
+
a `.crate` file that nothing in the pipeline ever creates, which made
|
|
99
|
+
any consumer with a `kind = "crates"` package fail with
|
|
100
|
+
`missing artifact directory <name>-crate/` before cargo was ever
|
|
101
|
+
invoked. Crates rows now skip the completeness check (same reasoning
|
|
102
|
+
as vanilla npm rows). No config or workflow changes required.
|
|
48
103
|
- **Scaffolded `release.yml` now forwards `GITHUB_TOKEN` to the publish
|
|
49
104
|
step.** piot has cut GitHub Releases alongside tag pushes since #26, but
|
|
50
105
|
Actions doesn't auto-mount the runner token as an env var, so the
|
package/MIGRATIONS.md
CHANGED
|
@@ -21,6 +21,201 @@ Each section covers five things, in order:
|
|
|
21
21
|
|
|
22
22
|
## Unreleased
|
|
23
23
|
|
|
24
|
+
### PyPI artifact discovery matches `{name}-sdist` and `{name}-wheel-` exactly
|
|
25
|
+
|
|
26
|
+
**Summary.** `src/handlers/pypi.ts:collectArtifacts` used a bare prefix
|
|
27
|
+
match (`entry.startsWith("{name}-")`) to find a package's artifact
|
|
28
|
+
directories under `artifacts/`. Sibling packages whose names extended
|
|
29
|
+
the same prefix (`foo` and `foo-extras`) collided: `foo`'s discovery
|
|
30
|
+
also picked up `foo-extras-sdist`, and twine then uploaded the sibling's
|
|
31
|
+
tarball under `foo`'s OIDC identity, failing PyPI's project-name check.
|
|
32
|
+
The handler now matches the sdist directory exactly (`{name}-sdist`)
|
|
33
|
+
and the wheel directories by `{name}-wheel-` prefix only — the two
|
|
34
|
+
shapes the planner documents in §12.4.
|
|
35
|
+
|
|
36
|
+
**Required changes.** None.
|
|
37
|
+
|
|
38
|
+
**Deprecations removed.** None.
|
|
39
|
+
|
|
40
|
+
**Behavior changes without code changes.** Repos with multiple pypi
|
|
41
|
+
packages where one name is a prefix of another (e.g. `foo` and
|
|
42
|
+
`foo-extras`) no longer cross-upload artifacts. Single-package repos
|
|
43
|
+
and repos with non-overlapping names are unaffected.
|
|
44
|
+
|
|
45
|
+
**Verification.** A repo declaring both `foo` and `foo-extras` as
|
|
46
|
+
pypi packages publishes the correct tarballs to each project; neither
|
|
47
|
+
job uploads the other's artifacts.
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
### Reusable workflow's maturin sdist row uses `command: sdist`
|
|
52
|
+
|
|
53
|
+
**Summary.** The reusable workflow's pypi-maturin build step was a single
|
|
54
|
+
`PyO3/maturin-action@v1` invocation with `command: build` and an
|
|
55
|
+
`--sdist` flag conditional on the row being the sdist target. `maturin
|
|
56
|
+
build --sdist` is documented as "build a wheel AND an sdist" — the
|
|
57
|
+
sdist's artifact directory ended up containing both a `.tar.gz` and a
|
|
58
|
+
manylinux wheel, which collided at upload time with the per-target
|
|
59
|
+
wheel rows and aborted twine with `400 File already exists`. The build
|
|
60
|
+
step is now split into two: `command: sdist` for the sdist row
|
|
61
|
+
(sdist-only) and `command: build` with `--target` for wheel rows.
|
|
62
|
+
|
|
63
|
+
**Required changes.** None.
|
|
64
|
+
|
|
65
|
+
**Deprecations removed.** None.
|
|
66
|
+
|
|
67
|
+
**Behavior changes without code changes.** Maturin packages with a
|
|
68
|
+
`sdist` row in their plan now upload a single `.tar.gz` from that row,
|
|
69
|
+
not a wheel-plus-sdist pair. Per-target wheel rows are unaffected.
|
|
70
|
+
|
|
71
|
+
**Verification.** A maturin-built package with `sdist` in `targets`
|
|
72
|
+
publishes to PyPI without `400 File already exists`. The sdist
|
|
73
|
+
artifact directory contains `.tar.gz` only.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
### Synthesized npm platform packages inherit `repository`/`license`/`homepage`
|
|
78
|
+
|
|
79
|
+
**Summary.** npm's provenance verifier rejected platform-package tarballs
|
|
80
|
+
with `E422 Error verifying sigstore provenance bundle: Failed to validate
|
|
81
|
+
repository information: package.json: "repository.url" is ""`. The
|
|
82
|
+
synthesizer in `src/handlers/npm-platform.ts` previously wrote only
|
|
83
|
+
`name`/`version`/`os`/`cpu`/`files`/`main`/`libc` into the per-target
|
|
84
|
+
`package.json`. The publishing GitHub repo URL is bound into the
|
|
85
|
+
sigstore bundle by `npm publish --provenance`; npm cross-checks it
|
|
86
|
+
against `package.json.repository.url` at upload time, so an empty value
|
|
87
|
+
fails verification. Identity fields (`repository`, `license`, `homepage`)
|
|
88
|
+
are now read from the main package's `package.json` and copied into each
|
|
89
|
+
synthesized platform package. Affects `build = "napi"` and
|
|
90
|
+
`build = "bundled-cli"` packages.
|
|
91
|
+
|
|
92
|
+
**Required changes.** None — the fix is automatic. To benefit, ensure
|
|
93
|
+
the main package's `package.json` declares a `repository.url` that
|
|
94
|
+
matches the publishing repo (npm provenance has always required this for
|
|
95
|
+
the main package; platform packages now share the same expectation).
|
|
96
|
+
|
|
97
|
+
**Deprecations removed.** None.
|
|
98
|
+
|
|
99
|
+
**Behavior changes without code changes.** Per-target platform tarballs
|
|
100
|
+
on the registry now carry the same `repository`/`license`/`homepage`
|
|
101
|
+
values as the main package, instead of being absent.
|
|
102
|
+
|
|
103
|
+
**Verification.** A `build = "napi"` or `build = "bundled-cli"` package
|
|
104
|
+
publishes its platform tarballs to npm without `E422` provenance errors.
|
|
105
|
+
`npm view <pkg>-<target>@<version> repository` returns the main
|
|
106
|
+
package's repository URL.
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
### Reusable workflow's npm build step forces `shell: bash`
|
|
111
|
+
|
|
112
|
+
**Summary.** The build matrix can target Windows runners. GitHub Actions
|
|
113
|
+
defaults to `pwsh` for `run:` blocks on Windows, but the npm build's
|
|
114
|
+
shape detection (`if [ -f package-lock.json ]; then npm ci; elif ... fi`)
|
|
115
|
+
is bash syntax — PowerShell parsed it as a malformed expression and
|
|
116
|
+
aborted with `ParserError` before any package manager ran. The step now
|
|
117
|
+
sets `shell: bash` explicitly, which is portable across Linux, macOS,
|
|
118
|
+
and Windows runners (Git Bash ships on `windows-latest`).
|
|
119
|
+
|
|
120
|
+
**Required changes.** None.
|
|
121
|
+
|
|
122
|
+
**Deprecations removed.** None.
|
|
123
|
+
|
|
124
|
+
**Behavior changes without code changes.** Consumers whose plan includes
|
|
125
|
+
an npm package targeting Windows runners (e.g. native node-addon shapes,
|
|
126
|
+
`napi-rs` matrices) now succeed past the install step. Linux/macOS-only
|
|
127
|
+
matrices are unaffected — bash was already the default there.
|
|
128
|
+
|
|
129
|
+
**Verification.** An npm package with a Windows row in its plan
|
|
130
|
+
completes the install + build step on `windows-latest`; the job log
|
|
131
|
+
shows `Run if [ -f package-lock.json ]` executing under bash, not pwsh.
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
### Reusable workflow exchanges OIDC token for `CARGO_REGISTRY_TOKEN`
|
|
136
|
+
|
|
137
|
+
**Summary.** Crates publishes were failing with `error: no token found,
|
|
138
|
+
please run cargo login` — the reusable workflow was relying on cargo to
|
|
139
|
+
find an OIDC token in env, but cargo only consumes
|
|
140
|
+
`CARGO_REGISTRY_TOKEN` (a registry-issued bearer), not raw OIDC
|
|
141
|
+
ID-tokens. The publish job now runs `rust-lang/crates-io-auth-action@v1`
|
|
142
|
+
when the plan contains a crates row and exports its `outputs.token`
|
|
143
|
+
as `CARGO_REGISTRY_TOKEN` for the engine subprocess.
|
|
144
|
+
|
|
145
|
+
**Required changes.** None for consumers using the reusable workflow as
|
|
146
|
+
documented. Repos publishing to crates.io must have a configured trusted
|
|
147
|
+
publisher on crates.io pointing at their `release.yml` — same prerequisite
|
|
148
|
+
as before, just now actually exercised.
|
|
149
|
+
|
|
150
|
+
**Deprecations removed.** None.
|
|
151
|
+
|
|
152
|
+
**Behavior changes without code changes.** Crates publish in the
|
|
153
|
+
reusable workflow now reaches the registry; previously it failed at
|
|
154
|
+
the cargo invocation. JS/Python-only repos are unaffected — the auth
|
|
155
|
+
step is gated on `contains(needs.plan.outputs.matrix, '"kind":"crates"')`
|
|
156
|
+
and skips entirely when no crates row is in the plan.
|
|
157
|
+
|
|
158
|
+
**Verification.** A `kind = "crates"` package whose trusted publisher is
|
|
159
|
+
configured on crates.io now publishes successfully through the reusable
|
|
160
|
+
workflow. The publish job log shows the `Authenticate with crates.io
|
|
161
|
+
(OIDC)` step running before `putitoutthere publish`.
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
### Crates publish's pre-cargo dirty-tree check ignores `artifacts/`
|
|
166
|
+
|
|
167
|
+
**Summary.** The crates handler scans `git status --porcelain` before
|
|
168
|
+
invoking `cargo publish --allow-dirty`, refusing to proceed if anything
|
|
169
|
+
other than the managed `Cargo.toml` is dirty (the writeVersion bump
|
|
170
|
+
runs in the same job and would otherwise be the only legitimate dirty
|
|
171
|
+
file). The reusable workflow's `actions/download-artifact@v4` step
|
|
172
|
+
always creates `artifacts/` at the repo root before publish runs —
|
|
173
|
+
even for crates-only fixtures that have nothing to download — and the
|
|
174
|
+
pre-check was rejecting on `?? artifacts/`. The scan now treats the
|
|
175
|
+
engine's own `artifactsRoot` as managed scratch space and skips files
|
|
176
|
+
under it.
|
|
177
|
+
|
|
178
|
+
**Required changes.** None.
|
|
179
|
+
|
|
180
|
+
**Deprecations removed.** None.
|
|
181
|
+
|
|
182
|
+
**Behavior changes without code changes.** Crates publishes that
|
|
183
|
+
previously errored with `unexpected dirty files in the working tree
|
|
184
|
+
outside <Cargo.toml>: - artifacts/` now proceed to `cargo publish`.
|
|
185
|
+
Stray edits anywhere else in the tree still fail the check.
|
|
186
|
+
|
|
187
|
+
**Verification.** A `kind = "crates"` package in a repo whose only
|
|
188
|
+
"dirty" file (alongside the managed `Cargo.toml`) is the engine's
|
|
189
|
+
`artifacts/` directory now reaches cargo. `git status --porcelain`
|
|
190
|
+
showing `?? artifacts/` is no longer fatal.
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
### Crates publish no longer fails the pre-publish completeness check
|
|
195
|
+
|
|
196
|
+
**Summary.** Consumers with a `kind = "crates"` package previously hit
|
|
197
|
+
`Artifact completeness check failed: missing artifact directory
|
|
198
|
+
<name>-crate/` before cargo was ever invoked. The reusable workflow
|
|
199
|
+
does not upload a `.crate` artifact (cargo packages and uploads from
|
|
200
|
+
source on the registry side), so the file the check demanded never
|
|
201
|
+
existed in the pipeline. The completeness check now skips crates
|
|
202
|
+
rows. Same reasoning as vanilla npm rows, which were already skipped.
|
|
203
|
+
|
|
204
|
+
**Required changes.** None.
|
|
205
|
+
|
|
206
|
+
**Deprecations removed.** None.
|
|
207
|
+
|
|
208
|
+
**Behavior changes without code changes.** Crates publishes that
|
|
209
|
+
previously errored at the completeness gate now reach `cargo publish`.
|
|
210
|
+
A crates row whose source tree is genuinely broken still fails — the
|
|
211
|
+
failure just happens at the cargo step, not before.
|
|
212
|
+
|
|
213
|
+
**Verification.** A `kind = "crates"` package in
|
|
214
|
+
`putitoutthere.toml` no longer requires any artifact upload step in
|
|
215
|
+
the consumer's workflow. Trigger a release with a `release: patch`
|
|
216
|
+
trailer; the publish job's "Run putitoutthere publish" step should
|
|
217
|
+
log `crates: cargo publish ...` instead of aborting on completeness.
|
|
218
|
+
|
|
24
219
|
### `[[package]].paths` renamed to `globs`
|
|
25
220
|
|
|
26
221
|
**Summary.** The `path` / `paths` pair in `[[package]]` was confusing —
|
package/action.yml
CHANGED
|
@@ -7,10 +7,14 @@ inputs:
|
|
|
7
7
|
description: 'Which CLI subcommand to run. Canonical values are `plan` and `publish`.'
|
|
8
8
|
required: false
|
|
9
9
|
default: 'plan'
|
|
10
|
-
|
|
11
|
-
description:
|
|
10
|
+
working_directory:
|
|
11
|
+
description: >-
|
|
12
|
+
Path the CLI runs against (forwarded as `--cwd`). Defaults to the
|
|
13
|
+
runner working directory. Internal use; the reusable workflow
|
|
14
|
+
supplies this when invoked against a non-root tree (e.g. e2e
|
|
15
|
+
fixtures materialized into a subdir).
|
|
12
16
|
required: false
|
|
13
|
-
default: '
|
|
17
|
+
default: ''
|
|
14
18
|
fail_on_error:
|
|
15
19
|
description: 'If true, non-zero CLI exit codes fail the step.'
|
|
16
20
|
required: false
|
|
@@ -21,5 +25,5 @@ outputs:
|
|
|
21
25
|
description: "JSON matrix emitted by `plan`. Output key is omitted when the plan resolves to zero rows or when command is anything other than plan; downstream jobs should coalesce with `|| '[]'`."
|
|
22
26
|
|
|
23
27
|
runs:
|
|
24
|
-
using: '
|
|
28
|
+
using: 'node20'
|
|
25
29
|
main: 'dist-action/index.js'
|
package/dist/action.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* GitHub Actions wrapper. Bundled to `dist-action/index.js` via ncc.
|
|
3
3
|
*
|
|
4
|
-
* ~50-line adapter: read `INPUT_COMMAND` / `
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* ~50-line adapter: read `INPUT_COMMAND` / `INPUT_FAIL_ON_ERROR` →
|
|
5
|
+
* invoke the SDK's run() → surface the exit code. No GHA-specific
|
|
6
|
+
* logic lives here beyond input parsing.
|
|
7
7
|
*
|
|
8
8
|
* Issue #24. Plan: §5.2, §5.3.
|
|
9
9
|
*/
|
package/dist/action.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAwB1C"}
|
package/dist/action.js
CHANGED
|
@@ -1,25 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* GitHub Actions wrapper. Bundled to `dist-action/index.js` via ncc.
|
|
3
3
|
*
|
|
4
|
-
* ~50-line adapter: read `INPUT_COMMAND` / `
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* ~50-line adapter: read `INPUT_COMMAND` / `INPUT_FAIL_ON_ERROR` →
|
|
5
|
+
* invoke the SDK's run() → surface the exit code. No GHA-specific
|
|
6
|
+
* logic lives here beyond input parsing.
|
|
7
7
|
*
|
|
8
8
|
* Issue #24. Plan: §5.2, §5.3.
|
|
9
9
|
*/
|
|
10
10
|
import { run } from './cli.js';
|
|
11
11
|
export async function main() {
|
|
12
12
|
const command = process.env.INPUT_COMMAND ?? '';
|
|
13
|
-
const
|
|
13
|
+
const workingDirectory = process.env.INPUT_WORKING_DIRECTORY ?? '';
|
|
14
14
|
const failOnError = (process.env.INPUT_FAIL_ON_ERROR ?? 'true').toLowerCase() !== 'false';
|
|
15
15
|
if (!command) {
|
|
16
16
|
process.stderr.write('putitoutthere action: missing required input `command`\n');
|
|
17
17
|
process.exit(1);
|
|
18
18
|
}
|
|
19
|
-
const argv = ['node', 'putitoutthere', command];
|
|
20
|
-
if (
|
|
21
|
-
argv.push('--
|
|
22
|
-
argv.push('--json');
|
|
19
|
+
const argv = ['node', 'putitoutthere', command, '--json'];
|
|
20
|
+
if (workingDirectory)
|
|
21
|
+
argv.push('--cwd', workingDirectory);
|
|
23
22
|
const code = await run(argv);
|
|
24
23
|
if (code !== 0 && !failOnError) {
|
|
25
24
|
process.stderr.write(`putitoutthere action: ignoring non-zero exit (fail_on_error=false): ${code}\n`);
|
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,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,
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,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,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,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC1D,IAAI,gBAAgB;QAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAE3D,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,oFAAoF;AACpF,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpD,KAAK,IAAI,EAAE,CAAC;AACd,CAAC"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -12,8 +12,19 @@
|
|
|
12
12
|
* Global flags:
|
|
13
13
|
* --cwd <path> working directory (default: process.cwd())
|
|
14
14
|
* --config <path> path to putitoutthere.toml
|
|
15
|
-
* --dry-run for publish; no side effects
|
|
16
15
|
* --json machine-readable output
|
|
16
|
+
*
|
|
17
|
+
* `--dry-run` was removed deliberately (#244). The library's job is
|
|
18
|
+
* publishing; a non-publishing mode of the publish command was a
|
|
19
|
+
* coverage hole pretending to be a feature. Passing `--dry-run` now
|
|
20
|
+
* errors out.
|
|
17
21
|
*/
|
|
22
|
+
interface ParsedFlags {
|
|
23
|
+
cwd: string;
|
|
24
|
+
config?: string | undefined;
|
|
25
|
+
json: boolean;
|
|
26
|
+
}
|
|
27
|
+
export declare function parseFlags(argv: readonly string[]): ParsedFlags;
|
|
18
28
|
export declare function run(argv: readonly string[]): Promise<number>;
|
|
29
|
+
export {};
|
|
19
30
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAoCH,UAAU,WAAW;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,CA4B/D;AAED,wBAAsB,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA8FlE"}
|
package/dist/cli.js
CHANGED
|
@@ -12,9 +12,14 @@
|
|
|
12
12
|
* Global flags:
|
|
13
13
|
* --cwd <path> working directory (default: process.cwd())
|
|
14
14
|
* --config <path> path to putitoutthere.toml
|
|
15
|
-
* --dry-run for publish; no side effects
|
|
16
15
|
* --json machine-readable output
|
|
16
|
+
*
|
|
17
|
+
* `--dry-run` was removed deliberately (#244). The library's job is
|
|
18
|
+
* publishing; a non-publishing mode of the publish command was a
|
|
19
|
+
* coverage hole pretending to be a feature. Passing `--dry-run` now
|
|
20
|
+
* errors out.
|
|
17
21
|
*/
|
|
22
|
+
import { isAbsolute, resolve } from 'node:path';
|
|
18
23
|
import { plan } from './plan.js';
|
|
19
24
|
import { publish } from './publish.js';
|
|
20
25
|
import { VERSION } from './version.js';
|
|
@@ -34,17 +39,15 @@ function printUsage() {
|
|
|
34
39
|
'Options:',
|
|
35
40
|
' --cwd <path> working directory',
|
|
36
41
|
' --config <path> path to putitoutthere.toml',
|
|
37
|
-
' --dry-run publish without side effects',
|
|
38
42
|
' --json emit machine-readable output',
|
|
39
43
|
'',
|
|
40
44
|
'See https://github.com/thekevinscott/putitoutthere for docs.',
|
|
41
45
|
'',
|
|
42
46
|
].join('\n'));
|
|
43
47
|
}
|
|
44
|
-
function parseFlags(argv) {
|
|
48
|
+
export function parseFlags(argv) {
|
|
45
49
|
const out = {
|
|
46
50
|
cwd: process.cwd(),
|
|
47
|
-
dryRun: false,
|
|
48
51
|
json: false,
|
|
49
52
|
};
|
|
50
53
|
for (let i = 0; i < argv.length; i++) {
|
|
@@ -54,11 +57,23 @@ function parseFlags(argv) {
|
|
|
54
57
|
out.cwd = argv[++i] ?? out.cwd;
|
|
55
58
|
else if (a === '--config')
|
|
56
59
|
out.config = argv[++i];
|
|
57
|
-
else if (a === '--dry-run')
|
|
58
|
-
out.dryRun = true;
|
|
59
60
|
else if (a === '--json')
|
|
60
61
|
out.json = true;
|
|
62
|
+
else if (a === '--dry-run') {
|
|
63
|
+
// Removed in #244. Publishing is the library's only job; a
|
|
64
|
+
// non-publishing flavor of `publish` is a coverage hole, not
|
|
65
|
+
// a feature. Fail loudly so callers update their invocation.
|
|
66
|
+
throw new Error('--dry-run was removed. The CLI does not support a non-publishing publish mode; remove the flag from your invocation.');
|
|
67
|
+
}
|
|
61
68
|
}
|
|
69
|
+
// Always normalise --cwd to an absolute path. Downstream code joins
|
|
70
|
+
// `cwd` with `artifacts/` to derive paths it then hands to subprocesses
|
|
71
|
+
// (twine, cargo, npm) running with `cwd: ctx.cwd`. If cwd were left
|
|
72
|
+
// relative — e.g. `--cwd fixture-tree` from the JS action — those
|
|
73
|
+
// file paths would resolve as `fixture-tree/fixture-tree/...` from
|
|
74
|
+
// the subprocess's vantage. Anchor here once.
|
|
75
|
+
if (!isAbsolute(out.cwd))
|
|
76
|
+
out.cwd = resolve(out.cwd);
|
|
62
77
|
return out;
|
|
63
78
|
}
|
|
64
79
|
export async function run(argv) {
|
|
@@ -82,8 +97,8 @@ export async function run(argv) {
|
|
|
82
97
|
printUsage();
|
|
83
98
|
return 1;
|
|
84
99
|
}
|
|
85
|
-
const flags = parseFlags(rest);
|
|
86
100
|
try {
|
|
101
|
+
const flags = parseFlags(rest);
|
|
87
102
|
switch (cmd) {
|
|
88
103
|
case 'plan': {
|
|
89
104
|
const matrix = await plan({
|
|
@@ -120,7 +135,6 @@ export async function run(argv) {
|
|
|
120
135
|
cwd: flags.cwd,
|
|
121
136
|
/* v8 ignore next -- --config test covered in plan arm; publish shares the same plumbing */
|
|
122
137
|
...(flags.config !== undefined ? { configPath: flags.config } : {}),
|
|
123
|
-
dryRun: flags.dryRun,
|
|
124
138
|
});
|
|
125
139
|
if (flags.json) {
|
|
126
140
|
process.stdout.write(JSON.stringify(result) + '\n');
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/completeness.js
CHANGED
|
@@ -74,6 +74,12 @@ export function requireCompleteness(matrix, artifactsRoot) {
|
|
|
74
74
|
* otherwise a human-readable reason.
|
|
75
75
|
*/
|
|
76
76
|
function verifyRow(row, artifactsRoot) {
|
|
77
|
+
// crates: `cargo publish` packages and uploads from the source tree
|
|
78
|
+
// directly — the reusable workflow never uploads a `.crate` artifact
|
|
79
|
+
// (release.yml's upload step is `if: matrix.kind != 'crates'`), so
|
|
80
|
+
// there is nothing here to verify. Same logic as vanilla npm below.
|
|
81
|
+
if (row.kind === 'crates')
|
|
82
|
+
return null;
|
|
77
83
|
// Vanilla npm publishes from the source tree directly; the build
|
|
78
84
|
// step never produced a separate artifact for this kind, so there's
|
|
79
85
|
// nothing to check here. Same goes for a missing artifactsRoot --
|
package/dist/completeness.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completeness.js","sourceRoot":"","sources":["../src/completeness.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"completeness.js","sourceRoot":"","sources":["../src/completeness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAWjC;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,GAAc;IAC3C,MAAM,GAAG,GAAG,aAAa,GAAG,CAAC,aAAa,EAAE,CAAC;IAC7C,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,QAAQ,CAAC;QACnD,KAAK,MAAM;YACT,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC3B,OAAO,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,SAAS,CAAC;YACpD,CAAC;YACD,OAAO,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,oBAAoB,CAAC;QAC/D,KAAK,KAAK;YACR,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACrD,OAAO,GAAG,GAAG,eAAe,CAAC;YAC/B,CAAC;YACD,OAAO,GAAG,GAAG,qBAAqB,CAAC;IACvC,CAAC;AACH,CAAC;AAYD,MAAM,UAAU,iBAAiB,CAC/B,MAA4B,EAC5B,aAAqB;IAErB,MAAM,SAAS,GAAG,IAAI,GAAG,EAA+B,CAAC;IAEzD,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACnE,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAC7C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC;YACjB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;QACtC,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAA4B,EAC5B,aAAqB;IAErB,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEhC,MAAM,KAAK,GAAa,CAAC,qCAAqC,CAAC,CAAC;IAChE,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;QACxB,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,MAAM,aAAa,CAAC,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACxF,KAAK,CAAC,IAAI,CAAC,mBAAmB,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;IAC3E,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;IACnE,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,2EAA2E;AAE3E;;;GAGG;AACH,SAAS,SAAS,CAAC,GAAc,EAAE,aAAqB;IACtD,oEAAoE;IACpE,qEAAqE;IACrE,mEAAmE;IACnE,oEAAoE;IACpE,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACvC,iEAAiE;IACjE,oEAAoE;IACpE,kEAAkE;IAClE,iEAAiE;IACjE,YAAY;IACZ,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE/D,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;IACnD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,8BAA8B,GAAG,CAAC,aAAa,GAAG,CAAC;IAC5D,CAAC;IACD,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QACvB,6EAA6E;IAC/E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,eAAe,GAAG,CAAC,aAAa,MAAM,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IAClG,CAAC;IACD,oBAAoB;IACpB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,4BAA4B,GAAG,CAAC,aAAa,GAAG,CAAC;IAC1D,CAAC;IACD,OAAO,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS,CAAC,GAAW;IAC5B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9B,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1B,qFAAqF;QACrF,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;YACrB,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/B,CAAC;aAAM,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACtC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;QACD,oBAAoB;IACtB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,WAAW,CAAC,GAAc,EAAE,KAAe;IAClD,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC;gBAC/B,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,qBAAqB,GAAG,CAAC,aAAa,GAAG,CAAC;QAChD,KAAK,MAAM;YACT,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC3B,OAAO,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC;oBAChC,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,yBAAyB,GAAG,CAAC,aAAa,GAAG,CAAC;YACpD,CAAC;YACD,OAAO,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;gBAC7B,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,mBAAmB,GAAG,CAAC,aAAa,GAAG,CAAC;QAC9C,KAAK,KAAK;YACR,mEAAmE;YACnE,+DAA+D;YAC/D,4DAA4D;YAC5D,UAAU;YACV,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACrD,OAAO,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC;oBACnC,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,sBAAsB,GAAG,CAAC,aAAa,GAAG,CAAC;YACjD,CAAC;YACD,OAAO,IAAI,CAAC,CAAC,0DAA0D;IAC3E,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,KAAwB,EAAE,MAAc;IACzD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,OAAO,CAAC,KAAwB,EAAE,IAAY;IACrD,+DAA+D;IAC/D,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;AAC9E,CAAC;AACD,8FAA8F"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* alternative (TOML round-trip) loses formatting.
|
|
11
11
|
* - publish: `cargo publish --allow-dirty --verbose` with stderr
|
|
12
12
|
* captured for the failure dump. Short-circuits on
|
|
13
|
-
* already-published (idempotent).
|
|
13
|
+
* already-published (idempotent).
|
|
14
14
|
*
|
|
15
15
|
* --allow-dirty is required for our writeVersion-then-publish model
|
|
16
16
|
* (#135), but cargo's default dirty-check is exactly the safety net
|
|
@@ -40,6 +40,6 @@ export declare function replaceCargoVersion(source: string, version: string): st
|
|
|
40
40
|
* a git work tree, git command missing, etc) — callers treat null as
|
|
41
41
|
* "can't verify, fall through to cargo's own --allow-dirty behavior."
|
|
42
42
|
*/
|
|
43
|
-
export declare function scanDirtyOutsideManifest(cwd: string, pkgPath: string): string[] | null;
|
|
43
|
+
export declare function scanDirtyOutsideManifest(cwd: string, pkgPath: string, artifactsRoot?: string): string[] | null;
|
|
44
44
|
export declare const crates: Handler;
|
|
45
45
|
//# sourceMappingURL=crates.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crates.d.ts","sourceRoot":"","sources":["../../src/handlers/crates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAMH,OAAO,KAAK,EAAO,OAAO,EAAiB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"crates.d.ts","sourceRoot":"","sources":["../../src/handlers/crates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAMH,OAAO,KAAK,EAAO,OAAO,EAAiB,MAAM,aAAa,CAAC;AAuH/D;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAa3E;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,aAAa,CAAC,EAAE,MAAM,GACrB,MAAM,EAAE,GAAG,IAAI,CAwEjB;AAQD,eAAO,MAAM,MAAM,EAAE,OAKpB,CAAC"}
|
package/dist/handlers/crates.js
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* alternative (TOML round-trip) loses formatting.
|
|
11
11
|
* - publish: `cargo publish --allow-dirty --verbose` with stderr
|
|
12
12
|
* captured for the failure dump. Short-circuits on
|
|
13
|
-
* already-published (idempotent).
|
|
13
|
+
* already-published (idempotent).
|
|
14
14
|
*
|
|
15
15
|
* --allow-dirty is required for our writeVersion-then-publish model
|
|
16
16
|
* (#135), but cargo's default dirty-check is exactly the safety net
|
|
@@ -79,14 +79,11 @@ async function publishImpl(pkg, version, ctx) {
|
|
|
79
79
|
if (await isPublishedImpl(pkg, version, ctx)) {
|
|
80
80
|
return { status: 'already-published' };
|
|
81
81
|
}
|
|
82
|
-
if (ctx.dryRun) {
|
|
83
|
-
return { status: 'skipped' };
|
|
84
|
-
}
|
|
85
82
|
// #135: --allow-dirty disarms cargo's own "is the tree clean?" guard.
|
|
86
83
|
// Reinstate a narrower check: only the Cargo.toml we just wrote may
|
|
87
84
|
// be dirty. Anything else = a bug or a stray edit that would end up
|
|
88
85
|
// in the crate tarball. Published crates can't be unpublished.
|
|
89
|
-
const unexpected = scanDirtyOutsideManifest(ctx.cwd, pkg.path);
|
|
86
|
+
const unexpected = scanDirtyOutsideManifest(ctx.cwd, pkg.path, ctx.artifactsRoot);
|
|
90
87
|
if (unexpected !== null && unexpected.length > 0) {
|
|
91
88
|
throw new Error([
|
|
92
89
|
`cargo publish: refusing to proceed; unexpected dirty files in the working tree outside ${relativeOrSelf(ctx.cwd, join(pkg.path, 'Cargo.toml'))}:`,
|
|
@@ -158,7 +155,7 @@ export function replaceCargoVersion(source, version) {
|
|
|
158
155
|
* a git work tree, git command missing, etc) — callers treat null as
|
|
159
156
|
* "can't verify, fall through to cargo's own --allow-dirty behavior."
|
|
160
157
|
*/
|
|
161
|
-
export function scanDirtyOutsideManifest(cwd, pkgPath) {
|
|
158
|
+
export function scanDirtyOutsideManifest(cwd, pkgPath, artifactsRoot) {
|
|
162
159
|
// Confirm we're inside a git work tree. If not, bail and let cargo's
|
|
163
160
|
// own --allow-dirty handling take over.
|
|
164
161
|
try {
|
|
@@ -203,6 +200,15 @@ export function scanDirtyOutsideManifest(cwd, pkgPath) {
|
|
|
203
200
|
return null;
|
|
204
201
|
}
|
|
205
202
|
/* v8 ignore stop */
|
|
203
|
+
// Reusable workflow's `actions/download-artifact@v4` step creates
|
|
204
|
+
// `artifacts/` under cwd unconditionally — even for fixtures whose
|
|
205
|
+
// packages don't upload anything (crates-only). That entry is engine-
|
|
206
|
+
// managed scratch space, not a stray edit; skip it.
|
|
207
|
+
let artifactsRel = '';
|
|
208
|
+
if (artifactsRoot !== undefined && artifactsRoot !== '') {
|
|
209
|
+
const r = relative(cwd, artifactsRoot);
|
|
210
|
+
artifactsRel = r === '' ? '' : r.replace(/\\/g, '/');
|
|
211
|
+
}
|
|
206
212
|
const unexpected = [];
|
|
207
213
|
for (const raw of porcelain.split('\n')) {
|
|
208
214
|
if (raw.length < 4)
|
|
@@ -216,6 +222,12 @@ export function scanDirtyOutsideManifest(cwd, pkgPath) {
|
|
|
216
222
|
const normalized = path.startsWith('"') && path.endsWith('"') ? path.slice(1, -1) : path;
|
|
217
223
|
if (normalized === managedRel)
|
|
218
224
|
continue;
|
|
225
|
+
if (artifactsRel !== '' &&
|
|
226
|
+
(normalized === artifactsRel ||
|
|
227
|
+
normalized === `${artifactsRel}/` ||
|
|
228
|
+
normalized.startsWith(`${artifactsRel}/`))) {
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
219
231
|
unexpected.push(normalized);
|
|
220
232
|
}
|
|
221
233
|
return unexpected;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crates.js","sourceRoot":"","sources":["../../src/handlers/crates.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"crates.js","sourceRoot":"","sources":["../../src/handlers/crates.ts"],"names":[],"mappings":"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"}
|