Skip to content

elements/div: add an aria_url passthrough #13

elements/div: add an aria_url passthrough

elements/div: add an aria_url passthrough #13

Workflow file for this run

# 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