name: Continuous Integration on: push: paths: - Cargo.lock - Cargo.toml - resources/assets/*.ttf - src/** - resources/assets/*.json pull_request: paths: - Cargo.lock - Cargo.toml - resources/assets/*.ttf - src/** - resources/assets/*.json jobs: lint: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, windows-latest, macOS-latest] lint: [check, test, clippy, fmt] exclude: # https://github.com/community/community/discussions/7835 - os: windows-latest lint: clippy - os: windows-latest lint: fmt - os: macOS-latest lint: clippy - os: macOS-latest lint: fmt include: - lint: check args: " --all-features" - lint: test args: "" - lint: clippy args: " --all --all-features -- -D warnings" - lint: fmt args: " --all -- --check" steps: - uses: actions/checkout@v4 - uses: rui314/setup-mold@v1 # faster linker - uses: actions/cache@v4 with: path: | ~/.cargo/bin/ ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ target key: ${{ runner.os }}-${{ matrix.lint }}-${{ hashFiles('**/Cargo.lock') }} restore-keys: ${{ runner.OS }}-${{ matrix.lint }}- - uses: dtolnay/rust-toolchain@stable with: components: clippy,rustfmt - run: cargo ${{ matrix.lint }}${{ matrix.args }} verify-json-validation: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: Validate JSON uses: docker://orrosenblatt/validate-json-action:latest env: INPUT_SCHEMA: /schema.json INPUT_JSONS: /resources/assets/uad_lists.json