Release 0.1.1: fix Node publish + bump everything
v0.1.0 reached crates.io, PyPI, and the wickra-wasm npm package, but the wickra Node binding never published because the workflow called `napi create-npm-dirs` (plural). The actual napi CLI command is `create-npm-dir` (singular, per target). Changes that make the next tag's release actually finish: - workflow: replace the broken step with a loop that runs `napi create-npm-dir -t <triple>` for each of our four build targets. - workflow: every registry publish step now treats "version already uploaded" as success. That makes re-runs (and partial-failure recoveries) safe instead of failing the whole job. - bindings/node/package.json: trim the napi.triples list to the four platforms we actually build (linux-x64-gnu, darwin-x64, darwin-arm64, win32-x64-msvc). The previous defaults+9-extras configuration would have made napi prepublish expect platform packages we never produced. - bindings/node/index.js: switch from local-only binary lookup to the proper napi loader that tries the local `.node` file first and falls back to the per-platform npm subpackage that's installed as an optional dependency in production. - Versions across all four published packages bumped to 0.1.1 so the Node binding can publish for the first time alongside refreshed cargo/pypi/wasm artefacts.
This commit is contained in:
@@ -20,24 +20,35 @@ jobs:
|
||||
- uses: dtolnay/rust-toolchain@stable
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
|
||||
- name: Publish wickra-core
|
||||
run: cargo publish -p wickra-core --token "$CARGO_REGISTRY_TOKEN"
|
||||
# Idempotent publishing: if the version is already on crates.io we
|
||||
# treat that as success so re-runs of the workflow don't fail.
|
||||
- name: Publish wickra-core (idempotent)
|
||||
run: |
|
||||
out=$(cargo publish -p wickra-core --token "$CARGO_REGISTRY_TOKEN" 2>&1) && echo "$out" \
|
||||
|| (echo "$out" | grep -q "already uploaded\|already exists" && echo "skip: already published" \
|
||||
|| (echo "$out"; exit 1))
|
||||
env:
|
||||
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
|
||||
|
||||
- name: Wait for crates.io index to refresh
|
||||
run: sleep 45
|
||||
|
||||
- name: Publish wickra-data
|
||||
run: cargo publish -p wickra-data --token "$CARGO_REGISTRY_TOKEN"
|
||||
- name: Publish wickra-data (idempotent)
|
||||
run: |
|
||||
out=$(cargo publish -p wickra-data --token "$CARGO_REGISTRY_TOKEN" 2>&1) && echo "$out" \
|
||||
|| (echo "$out" | grep -q "already uploaded\|already exists" && echo "skip: already published" \
|
||||
|| (echo "$out"; exit 1))
|
||||
env:
|
||||
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
|
||||
|
||||
- name: Wait for crates.io index to refresh
|
||||
run: sleep 45
|
||||
|
||||
- name: Publish wickra
|
||||
run: cargo publish -p wickra --token "$CARGO_REGISTRY_TOKEN"
|
||||
- name: Publish wickra (idempotent)
|
||||
run: |
|
||||
out=$(cargo publish -p wickra --token "$CARGO_REGISTRY_TOKEN" 2>&1) && echo "$out" \
|
||||
|| (echo "$out" | grep -q "already uploaded\|already exists" && echo "skip: already published" \
|
||||
|| (echo "$out"; exit 1))
|
||||
env:
|
||||
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
|
||||
|
||||
@@ -170,9 +181,12 @@ jobs:
|
||||
path: bindings/node/artifacts
|
||||
pattern: bindings-*
|
||||
|
||||
- name: Create npm/<platform>/ scaffolding
|
||||
- name: Create npm/<platform>/ scaffolding (one per target)
|
||||
working-directory: bindings/node
|
||||
run: npx napi create-npm-dirs
|
||||
run: |
|
||||
for t in x86_64-unknown-linux-gnu x86_64-apple-darwin aarch64-apple-darwin x86_64-pc-windows-msvc; do
|
||||
npx napi create-npm-dir -t "$t" .
|
||||
done
|
||||
|
||||
- name: Move binaries into platform package layout
|
||||
working-directory: bindings/node
|
||||
@@ -228,8 +242,11 @@ jobs:
|
||||
fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2));
|
||||
"
|
||||
|
||||
- name: Publish wickra-wasm to npm
|
||||
- name: Publish wickra-wasm to npm (idempotent)
|
||||
working-directory: bindings/wasm/pkg
|
||||
run: npm publish --access public
|
||||
run: |
|
||||
out=$(npm publish --access public 2>&1) && echo "$out" \
|
||||
|| (echo "$out" | grep -q "You cannot publish over" && echo "skip: version already on npm" \
|
||||
|| (echo "$out"; exit 1))
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||
|
||||
Reference in New Issue
Block a user