ferrishot_knus 3.3.0

Another KDL language implementation
Documentation
name: CI

on:
  push:
    branches:
      - main
  pull_request:

env:
  CARGO_TERM_COLOR: always
  RUSTFLAGS: -Dwarnings

jobs:
  build_and_test:
    name: Build & Test
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        toolchain: [stable, beta, nightly]
    steps:
      - uses: actions/checkout@v4
      - uses: Swatinem/rust-cache@v2
      - uses: extractions/setup-just@v2
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ matrix.toolchain }}

      # NOTE: `rustdoc` doesn't currently respect the `linker` setting — keep
      # an eye on this issue: https://github.com/rust-lang/rust/issues/125657.
      # In the meantime, we can't use `rust-lld` and will need to manually
      # install `lld` on macOS (#14)
      - if: runner.os == 'macOS'
        run: brew install lld

      - run: just test

  check_wasm_build:
    name: Check WASM Build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: Swatinem/rust-cache@v2
      - uses: extractions/setup-just@v2
      - uses: dtolnay/rust-toolchain@stable
        with:
          target: wasm32-unknown-unknown

      - run: just check-wasm

  format_and_lint:
    name: Format & Lint
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: Swatinem/rust-cache@v2
      - uses: extractions/setup-just@v2
      - uses: dtolnay/rust-toolchain@stable

      - run: just lint

  check_min_versions:
    name: Check Minimal Versions
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: Swatinem/rust-cache@v2
      - uses: extractions/setup-just@v2
      - uses: dtolnay/rust-toolchain@nightly

      - run: just min-versions

  coverage:
    name: Test Coverage
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: Swatinem/rust-cache@v2
      - uses: extractions/setup-just@v2
      - uses: taiki-e/install-action@cargo-llvm-cov
      - uses: dtolnay/rust-toolchain@nightly
        with:
          components: llvm-tools-preview

      - run: just ci-cov

      - uses: codecov/codecov-action@v4
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
          files: codecov.json