docs: Update projects #37
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # SPDX-FileCopyrightText: 2026 The RISE Project | |
| # SPDX-License-Identifier: MIT | |
| --- | |
| # This workflow is based on the `linux` job of | |
| # https://github.com/crate-ci/typos/blob/v1.49.1/.github/workflows/maturin.yml | |
| name: Build typos wheels (riscv64) | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'Version glob to (re)build; empty builds every version of docs/packages/typos.yaml not released yet' | |
| required: false | |
| default: '' | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-typos.yml' | |
| - 'docs/packages/typos.yaml' | |
| push: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-typos.yml' | |
| - 'docs/packages/typos.yaml' | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read # to fetch code (actions/checkout) | |
| jobs: | |
| setup: | |
| uses: $/.github/workflows/_setup.yml | |
| with: | |
| package: typos | |
| version: ${{ inputs.version }} | |
| build_wheel: | |
| needs: [setup] | |
| if: needs.setup.outputs.versions != '[]' | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| name: Build typos ${{ matrix.version }} manylinux_riscv64 | |
| runs-on: ubuntu-24.04-riscv | |
| timeout-minutes: 360 | |
| env: | |
| TYPOS_VERSION: ${{ matrix.version }} | |
| steps: | |
| - name: Checkout typos v${{ env.TYPOS_VERSION }} | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| repository: crate-ci/typos | |
| ref: v${{ env.TYPOS_VERSION }} | |
| persist-credentials: false | |
| # `[tool.maturin] bindings = "bin"`: the wheel is one compiled executable | |
| # with no ABI tag, so a single native build covers every interpreter. | |
| - name: Build wheel | |
| uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0 | |
| with: | |
| command: build | |
| target: riscv64gc-unknown-linux-gnu | |
| args: --release --locked --out dist --manifest-path crates/typos-cli/Cargo.toml | |
| manylinux: '2_39' | |
| before-script-linux: git config --global --add safe.directory "*" | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: typos-${{ env.TYPOS_VERSION }}-manylinux_riscv64 | |
| path: dist/*.whl | |
| if-no-files-found: error | |
| test_wheel: | |
| name: Test typos ${{ matrix.version }} on Python ${{ matrix.python-version }} | |
| needs: [setup, build_wheel] | |
| if: needs.setup.outputs.versions != '[]' | |
| runs-on: ubuntu-24.04-riscv | |
| timeout-minutes: 30 | |
| env: | |
| TYPOS_VERSION: ${{ matrix.version }} | |
| # Without this uv would reuse the runner image's system CPython for 3.12 | |
| # and download a standalone build for the others. | |
| UV_PYTHON_PREFERENCE: only-managed | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| # This repo's default interpreter matrix (gotcha in workflow-anatomy.md); | |
| # the wheel is interpreter-agnostic (bindings = "bin"), so every | |
| # interpreter -- including free-threaded -- exercises the same binary. | |
| python-version: ['3.12', '3.13', '3.14', '3.14t'] | |
| steps: | |
| - name: Download wheel | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 | |
| with: | |
| name: typos-${{ env.TYPOS_VERSION }}-manylinux_riscv64 | |
| - name: Install Python | |
| uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| activate-environment: true | |
| enable-cache: false | |
| - name: Install wheel | |
| run: uv pip install --reinstall --no-index --find-links . typos | |
| # No wheel-level test suite ships in the sdist (gotcha 187): typos' own | |
| # crates/typos-cli/tests/cli_tests.rs is a Rust integration test run by | |
| # upstream's own `cargo test` (trycmd against tests/cmd/*.toml), never | |
| # packaged. Drive the real spell checker against a known-bad fixture and | |
| # confirm --write-changes actually fixes it, instead of settling for a | |
| # bare --version check. | |
| # | |
| # No `python -m typos`: unlike prek/pyrefly, typos' own source tree ships | |
| # no typos/__init__.py shim, so the wheel carries only the | |
| # .data/scripts/typos binary and no importable module. | |
| - name: Test wheel | |
| run: | | |
| set -euo pipefail | |
| typos --version | |
| typos --help >/dev/null | |
| work=$(mktemp -d) | |
| cat > "$work/a.txt" <<'TXT' | |
| This is a test of the recieve function. | |
| TXT | |
| set +e | |
| out=$(typos "$work/a.txt" 2>&1) | |
| rc=$? | |
| set -e | |
| echo "$out" | |
| [ "$rc" -eq 2 ] | |
| echo "$out" | grep -q 'recieve.*should be.*receive' | |
| typos --write-changes "$work/a.txt" | |
| grep -q 'receive' "$work/a.txt" | |
| typos "$work/a.txt" | |
| publish: | |
| name: Publish typos ${{ matrix.version }} | |
| needs: [setup, build_wheel, test_wheel] | |
| if: needs.setup.outputs.versions != '[]' | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| uses: $/.github/workflows/_publish-wheel.yml | |
| secrets: | |
| app-private-key: ${{ secrets.RISEPROJECT_APP_PRIVATE_KEY }} | |
| with: | |
| artifact-pattern: typos-${{ matrix.version }}-manylinux_riscv64 |