elements/div: add an aria_url passthrough #13
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
| # Main CI workflow | |
| name: CI | |
| permissions: | |
| contents: read | |
| on: | |
| push: | |
| branches: [main, "v[0-9]+.[0-9]+.x"] | |
| pull_request: | |
| branches: ["**"] | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.ref_name == 'main' && github.sha || 'anysha' }} | |
| cancel-in-progress: true | |
| env: | |
| CARGO_TERM_COLOR: always | |
| RUST_BACKTRACE: 1 | |
| CARGO_INCREMENTAL: 0 | |
| jobs: | |
| # Change detection | |
| orchestrate: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| run_tests: ${{ steps.filter.outputs.run_tests }} | |
| run_style: ${{ steps.filter.outputs.run_style }} | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| fetch-depth: ${{ github.ref == 'refs/heads/main' && 2 || 350 }} | |
| - id: filter | |
| run: | | |
| if [ -z "$GITHUB_BASE_REF" ]; then | |
| COMPARE_REV="$(git rev-parse HEAD~1)" | |
| else | |
| git fetch --update-head-ok origin "$GITHUB_BASE_REF" --depth=350 || true | |
| COMPARE_REV="$(git merge-base "origin/${GITHUB_BASE_REF}" HEAD)" | |
| fi | |
| CHANGED_FILES="$(git diff --name-only "$COMPARE_REV" "$GITHUB_SHA")" | |
| check_pattern() { | |
| local name="$1" pattern="$2" invert="${3:-false}" | |
| if [ "$invert" = "true" ]; then | |
| echo "$CHANGED_FILES" | grep -qvE "$pattern" && echo "${name}=true" >> "$GITHUB_OUTPUT" || echo "${name}=false" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "$CHANGED_FILES" | grep -qE "$pattern" && echo "${name}=true" >> "$GITHUB_OUTPUT" || echo "${name}=false" >> "$GITHUB_OUTPUT" | |
| fi | |
| } | |
| check_pattern "run_tests" '^(docs/|\.github/(ISSUE_TEMPLATE|workflows/)|README\.md|CHANGELOG\.md)' true | |
| check_pattern "run_style" '\.(rs|toml)$|rust-toolchain\.toml|\.cargo/|clippy\.toml|typos\.toml' | |
| # Formatting | |
| fmt: | |
| runs-on: ubuntu-latest | |
| needs: [orchestrate] | |
| if: needs.orchestrate.outputs.run_style == 'true' | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions-rust-lang/setup-rust-toolchain@v1 | |
| with: | |
| components: rustfmt | |
| - uses: hustcer/setup-nu@v3 | |
| - uses: extractions/setup-just@v2 | |
| - run: just fmt-check | |
| # Clippy | |
| clippy: | |
| runs-on: ubuntu-latest | |
| needs: [orchestrate] | |
| if: needs.orchestrate.outputs.run_style == 'true' | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions-rust-lang/setup-rust-toolchain@v1 | |
| with: | |
| components: clippy | |
| - uses: Swatinem/rust-cache@v2 | |
| - name: Install system deps | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libxkbcommon-dev libxkbcommon-x11-dev libwayland-dev libx11-dev libxcb-shape0-dev libxcb-xfixes0-dev libfontconfig-dev | |
| - uses: hustcer/setup-nu@v3 | |
| - uses: extractions/setup-just@v2 | |
| - run: just clippy | |
| # Spell check | |
| typos: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: crate-ci/typos@v1.47.2 | |
| with: | |
| config: typos.toml | |
| # Lockfile freshness is advisory: dependency resolution changes often come | |
| # from upstream releases and should be reviewed, not block unrelated work. | |
| lockfile: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions-rust-lang/setup-rust-toolchain@v1 | |
| - name: Check root lockfile freshness (warning only) | |
| shell: bash | |
| run: | | |
| warn() { | |
| echo "::warning title=Lockfile freshness::$1" | |
| } | |
| if ! cargo update; then | |
| warn "Could not refresh Cargo.lock; inspect dependency resolution." | |
| elif ! git diff --quiet -- Cargo.lock; then | |
| git diff -- Cargo.lock | |
| warn "Cargo.lock changed after cargo update; refresh it in a dedicated dependency update." | |
| fi | |
| # Unused dependencies | |
| machete: | |
| runs-on: ubuntu-latest | |
| needs: [orchestrate] | |
| if: needs.orchestrate.outputs.run_style == 'true' | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: Swatinem/rust-cache@v2 | |
| - uses: taiki-e/install-action@cargo-machete | |
| - uses: hustcer/setup-nu@v3 | |
| - uses: extractions/setup-just@v2 | |
| - run: just machete | |
| # MSRV | |
| msrv: | |
| if: github.event_name == 'pull_request' && needs.orchestrate.outputs.run_style == 'true' | |
| needs: [orchestrate] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions-rust-lang/setup-rust-toolchain@v1 | |
| with: | |
| toolchain: 1.95.0 | |
| - uses: Swatinem/rust-cache@v2 | |
| - name: Install system deps | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libxkbcommon-dev libxkbcommon-x11-dev libwayland-dev libx11-dev libxcb-shape0-dev libxcb-xfixes0-dev libfontconfig-dev | |
| - uses: hustcer/setup-nu@v3 | |
| - uses: extractions/setup-just@v2 | |
| - run: just msrv-check | |
| # WASM target (nightly + atomics) | |
| check-wasm: | |
| if: github.event_name == 'pull_request' && needs.orchestrate.outputs.run_style == 'true' | |
| needs: [orchestrate] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Install nightly toolchain with rust-src and WASM target | |
| run: rustup toolchain install nightly --component rust-src --target wasm32-unknown-unknown | |
| - uses: Swatinem/rust-cache@v2 | |
| - uses: hustcer/setup-nu@v3 | |
| - uses: extractions/setup-just@v2 | |
| - run: just check-wasm-atomics | |
| # Linux build + test | |
| test-linux: | |
| runs-on: ubuntu-latest | |
| needs: [orchestrate] | |
| if: needs.orchestrate.outputs.run_tests == 'true' | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions-rust-lang/setup-rust-toolchain@v1 | |
| - uses: Swatinem/rust-cache@v2 | |
| - name: Install system deps | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| libxkbcommon-dev libwayland-dev libx11-dev \ | |
| libxcb-shape0-dev libxcb-xfixes0-dev \ | |
| libxcb-randr0-dev libxcb-xinput-dev \ | |
| libxkbcommon-x11-dev libegl1-mesa-dev \ | |
| libgles2-mesa-dev libglib2.0-dev libfontconfig-dev | |
| - uses: hustcer/setup-nu@v3 | |
| - uses: extractions/setup-just@v2 | |
| - run: just build | |
| - run: just test | |
| - run: just test-doc | |
| # macOS build + test | |
| test-mac: | |
| runs-on: macos-latest | |
| needs: [orchestrate] | |
| if: needs.orchestrate.outputs.run_tests == 'true' | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions-rust-lang/setup-rust-toolchain@v1 | |
| - uses: Swatinem/rust-cache@v2 | |
| - uses: hustcer/setup-nu@v3 | |
| - uses: extractions/setup-just@v2 | |
| - run: just build | |
| - run: just test | |
| - run: just test-doc | |
| # Windows build + test | |
| test-windows: | |
| runs-on: windows-latest | |
| needs: [orchestrate] | |
| if: needs.orchestrate.outputs.run_tests == 'true' | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions-rust-lang/setup-rust-toolchain@v1 | |
| - uses: Swatinem/rust-cache@v2 | |
| - uses: hustcer/setup-nu@v3 | |
| - uses: extractions/setup-just@v2 | |
| - run: just build | |
| - run: just test | |
| - run: just test-doc | |
| # Examples | |
| check-examples: | |
| runs-on: ubuntu-latest | |
| needs: [orchestrate] | |
| if: github.event_name == 'pull_request' && needs.orchestrate.outputs.run_tests == 'true' | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions-rust-lang/setup-rust-toolchain@v1 | |
| - uses: Swatinem/rust-cache@v2 | |
| - name: Install system deps | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libxkbcommon-dev libxkbcommon-x11-dev libwayland-dev libx11-dev libxcb-shape0-dev libxcb-xfixes0-dev libfontconfig-dev | |
| - name: Add WASM target | |
| run: rustup target add wasm32-unknown-unknown | |
| - uses: hustcer/setup-nu@v3 | |
| - uses: extractions/setup-just@v2 | |
| - run: just check-examples |