fix(crate): allowlist package contents to fit crates.io size cap (#152)
cargo publish of 0.1.5 failed with 413: the crate packaged everything (260 files, 10.1MiB compressed) and tests/fixtures alone is 10.2MB. Add an explicit include list (src, external/bcmaps which tounicode.rs loads at runtime, readme, license) — 1.3MiB compressed. Also add a workflow_dispatch fallback to publish-crate.yml so a failed publish can be retried without a version bump (0.1.5 is already on main, so a re-push won't register as a version change). Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
2c97f4979e
commit
2cd1cf1b23
@@ -4,6 +4,9 @@ on:
|
|||||||
push:
|
push:
|
||||||
branches: [main]
|
branches: [main]
|
||||||
paths: ['Cargo.toml']
|
paths: ['Cargo.toml']
|
||||||
|
# Manual fallback: retry a publish that failed after the version was
|
||||||
|
# already merged (a plain re-push won't register as a version change).
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -14,6 +17,10 @@ env:
|
|||||||
jobs:
|
jobs:
|
||||||
check-version:
|
check-version:
|
||||||
name: Check version change
|
name: Check version change
|
||||||
|
# Guard manual dispatches: crates.io trusted publishing matches
|
||||||
|
# repo+workflow+environment but NOT branch, so without this a
|
||||||
|
# workflow_dispatch from any branch could publish unmerged code.
|
||||||
|
if: github.ref == 'refs/heads/main'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
outputs:
|
outputs:
|
||||||
changed: ${{ steps.check.outputs.changed }}
|
changed: ${{ steps.check.outputs.changed }}
|
||||||
@@ -28,9 +35,17 @@ jobs:
|
|||||||
id: check
|
id: check
|
||||||
run: |
|
run: |
|
||||||
NEW_VERSION=$(python3 -c 'import pathlib, tomllib; print(tomllib.loads(pathlib.Path("Cargo.toml").read_text())["package"]["version"])')
|
NEW_VERSION=$(python3 -c 'import pathlib, tomllib; print(tomllib.loads(pathlib.Path("Cargo.toml").read_text())["package"]["version"])')
|
||||||
|
echo "version=$NEW_VERSION" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
|
||||||
|
# Manual dispatch publishes the current version regardless of the
|
||||||
|
# previous commit; the crates.io check below still prevents
|
||||||
|
# double-publishing an already-released version.
|
||||||
|
echo "manual dispatch: publishing v$NEW_VERSION"
|
||||||
|
echo "changed=true" >> "$GITHUB_OUTPUT"
|
||||||
|
else
|
||||||
OLD_VERSION=$(git show HEAD~1:Cargo.toml | python3 -c 'import sys, tomllib; print(tomllib.loads(sys.stdin.read())["package"]["version"])')
|
OLD_VERSION=$(git show HEAD~1:Cargo.toml | python3 -c 'import sys, tomllib; print(tomllib.loads(sys.stdin.read())["package"]["version"])')
|
||||||
echo "old=$OLD_VERSION new=$NEW_VERSION"
|
echo "old=$OLD_VERSION new=$NEW_VERSION"
|
||||||
echo "version=$NEW_VERSION" >> "$GITHUB_OUTPUT"
|
|
||||||
|
|
||||||
if [ "$NEW_VERSION" = "$OLD_VERSION" ]; then
|
if [ "$NEW_VERSION" = "$OLD_VERSION" ]; then
|
||||||
echo "changed=false" >> "$GITHUB_OUTPUT"
|
echo "changed=false" >> "$GITHUB_OUTPUT"
|
||||||
@@ -39,6 +54,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo "changed=true" >> "$GITHUB_OUTPUT"
|
echo "changed=true" >> "$GITHUB_OUTPUT"
|
||||||
|
fi
|
||||||
|
|
||||||
HTTP_STATUS=$(curl --silent --show-error --output /tmp/crate-version.json --write-out "%{http_code}" \
|
HTTP_STATUS=$(curl --silent --show-error --output /tmp/crate-version.json --write-out "%{http_code}" \
|
||||||
-H "User-Agent: firecrawl/pdf-inspector publish workflow (https://github.com/firecrawl/pdf-inspector)" \
|
-H "User-Agent: firecrawl/pdf-inspector publish workflow (https://github.com/firecrawl/pdf-inspector)" \
|
||||||
|
|||||||
@@ -8,6 +8,15 @@ description = "Fast PDF inspection, classification, and text extraction with sma
|
|||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://github.com/firecrawl/pdf-inspector"
|
repository = "https://github.com/firecrawl/pdf-inspector"
|
||||||
readme = "docs/rust-api.md"
|
readme = "docs/rust-api.md"
|
||||||
|
# Explicit allowlist: crates.io caps uploads at 10 MiB and tests/fixtures
|
||||||
|
# alone exceeds that. external/bcmaps ships in the crate — tounicode.rs
|
||||||
|
# loads it at runtime relative to CARGO_MANIFEST_DIR.
|
||||||
|
include = [
|
||||||
|
"src/**",
|
||||||
|
"external/bcmaps/**",
|
||||||
|
"docs/rust-api.md",
|
||||||
|
"LICENSE",
|
||||||
|
]
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "pdf_inspector"
|
name = "pdf_inspector"
|
||||||
|
|||||||
Reference in New Issue
Block a user