Skip to content

merge: dev → main — proof crate publishing and README improvements #80

merge: dev → main — proof crate publishing and README improvements

merge: dev → main — proof crate publishing and README improvements #80

Workflow file for this run

name: CI
on:
push:
branches: [main]
workflow_dispatch:
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
jobs:
# All platforms: fmt + clippy only (proves cross-platform compilation)
lint:
name: Lint (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
extra_exclude: ""
- os: windows-latest
# proj-sys requires sqlite3 executable for cmake build
extra_exclude: "--exclude elicit_proj"
- os: macos-latest
extra_exclude: ""
steps:
- uses: actions/checkout@v4
- name: Install system dependencies (Ubuntu)
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get update -q
sudo apt-get install -y libasound2-dev libudev-dev
- name: Install system dependencies (macOS)
if: matrix.os == 'macos-latest'
run: brew install proj
- name: Install system dependencies (Windows)
if: matrix.os == 'windows-latest'
run: choco install sqlite --no-progress -y
- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- name: Cache cargo
uses: Swatinem/rust-cache@v2
with:
key: lint-${{ matrix.os }}-${{ hashFiles('Cargo.lock') }}
- name: Check formatting
run: cargo fmt --all -- --check
- name: Clippy
run: cargo clippy --workspace --all-targets --exclude elicitation_creusot --exclude elicitation_kani ${{ matrix.extra_exclude }} -- -D warnings
- name: Doc check
env:
RUSTDOCFLAGS: "-D warnings"
run: cargo doc --workspace --no-deps --exclude elicitation_creusot --exclude elicitation_kani ${{ matrix.extra_exclude }}
# Ubuntu only: test elicitation_derive (fast, no heavy deps).
test-derive:
name: Test derive and macros
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install system dependencies
run: |
sudo apt-get update -q
sudo apt-get install -y libasound2-dev libudev-dev
- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
- name: Cache cargo
uses: Swatinem/rust-cache@v2
with:
key: test-derive-ubuntu-${{ hashFiles('Cargo.lock') }}
- name: Test elicitation_derive
run: |
cargo test -p elicitation_derive
cargo test -p elicitation_derive --features "chrono,time,jiff,uuid,url"
# Ubuntu only: elicitation split by feature group to stay within runner memory/disk limits.
# Heavy GUI/GPU features (bevy-types, wgpu-types, egui-winit-types, winit-types) are
# excluded from core CI and tested via satellite.yml on demand.
test-elicitation:
name: Test elicitation (${{ matrix.group }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- group: core
features: "--no-default-features"
sys_deps: "libasound2-dev libudev-dev"
- group: datetime-scalar
features: >-
--no-default-features
--features chrono,time,jiff,uuid,url,regex,rand,serde,serde_json,emit,graph
sys_deps: "libasound2-dev libudev-dev"
- group: storage
features: >-
--no-default-features
--features csv-types,toml-types,redb-types
sys_deps: "libasound2-dev libudev-dev"
- group: network
features: >-
--no-default-features
--features reqwest,url,clap-types,sqlx-types,axum-types,tower-types,leptos-types
sys_deps: "libasound2-dev libudev-dev"
- group: geo
features: >-
--no-default-features
--features geo-types,geo,proj-types,rstar-types,geojson-types,wkt-types,wkb-types,georaster-types,serde_json
sys_deps: "libasound2-dev libudev-dev libproj-dev"
- group: analytics
features: >-
--no-default-features
--features polars-types,uom-types,uuid,chrono,serde_json,geo-types
sys_deps: "libasound2-dev libudev-dev"
- group: ui-light
features: >-
--no-default-features
--features ratatui,egui-types,accesskit,palette
sys_deps: "libasound2-dev libudev-dev"
steps:
- uses: actions/checkout@v4
- name: Install system dependencies
run: |
sudo apt-get update -q
sudo apt-get install -y ${{ matrix.sys_deps }}
- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
- name: Cache cargo
uses: Swatinem/rust-cache@v2
with:
key: test-elicitation-${{ matrix.group }}-ubuntu-${{ hashFiles('Cargo.lock') }}
- name: Test elicitation (${{ matrix.group }})
run: cargo test -p elicitation ${{ matrix.features }}