name: (Compiler) Rust on: push: branches: ["main"] paths: - .github/workflows/** - compiler/crates/** - compiler/Cargo.* - compiler/*.toml pull_request: paths: - .github/workflows/** - compiler/crates/** - compiler/Cargo.* - compiler/*.toml env: CARGO_TERM_COLOR: always RUSTFLAGS: -Dwarnings TZ: /usr/share/zoneinfo/America/Los_Angeles defaults: run: working-directory: compiler jobs: test: name: Rust Test (${{ matrix.target.os }}) strategy: matrix: target: - target: ubuntu-latest os: ubuntu-latest # TODO: run on more platforms # - target: macos-latest # os: macos-latest # - target: windows-latest # os: windows-latest runs-on: ${{ matrix.target.os }} steps: - uses: actions/checkout@v4 - uses: Swatinem/rust-cache@v2 - name: cargo test run: cargo test --manifest-path=Cargo.toml --locked ${{ matrix.target.features && '--features' }} ${{ matrix.target.features }} lint: name: Rust Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions-rs/toolchain@v1 with: # NOTE: use `rustup run ` in commands below # with this exact same toolchain value toolchain: nightly-2023-08-01 override: true components: rustfmt, clippy - uses: Swatinem/rust-cache@v2 - name: rustfmt run: grep -r --include "*.rs" --files-without-match "@generated" crates | xargs rustup run nightly-2023-08-01 rustfmt --check --config="skip_children=true" # - name: cargo clippy # run: rustup run nightly-2023-08-01 cargo clippy -- -Dclippy::correctness build: name: Rust Build runs-on: ubuntu-latest # TODO: build on more platforms, deploy, etc steps: - uses: actions/checkout@v4 - uses: Swatinem/rust-cache@v2 - name: cargo build run: cargo build --release