sml-rs 0.4.0

Smart Message Language (SML) parser written in Rust
Documentation
on:
  push:
    branches:
    - main
  pull_request:

name: CI

jobs:
  check:
    name: Check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - run: cargo check

  test:
    name: Test Suite
    runs-on: ubuntu-latest
    continue-on-error: true
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - run: cargo test
      - run: cargo test --no-default-features
      - run: cargo test --no-default-features --features=alloc
      - run: cargo test --no-default-features --features=embedded_hal
      - run: cargo test --no-default-features --features=embedded_hal,alloc
      - run: cargo test --no-default-features --features=embedded_hal,alloc,std

  build_examples:
    name: Build Examples
    runs-on: ubuntu-latest
    steps:
      - run: sudo apt install libudev-dev
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - run: cargo build -p sml-rs-serialport-example

  lints:
    name: Lints
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt, clippy
      - run: cargo fmt --all -- --check
      - run: cargo clippy -- -D warnings

  semver_checks:
    name: Semver Checks
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: obi1kenobi/cargo-semver-checks-action@v2

  check_subtrees_up_to_date:
    name: Check subtrees are up to date
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:  
          fetch-depth: 0
      - name: check libsml-testing subtree
        run: |
          git subtree pull \
            --prefix tests/libsml-testing \
            https://github.com/devZer0/libsml-testing.git \
            master --squash 2>&1 | tee output.txt
          cat output.txt | grep -q "Subtree is already at commit"