knus 3.4.0

Another KDL language implementation
Documentation
name: CI

on:
  push:
    branches:
      - main
  pull_request:
  workflow_dispatch:

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 }}

      - 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