sat-interface 0.1.1

This crate provides an abstraction interface for SAT solvers.
Documentation
name: Build
on:
  pull_request:
    branches:
      - main
  workflow_dispatch:
  push:
    branches:
      - main

concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

jobs:
  check:
    name: Check
    runs-on: ubuntu-latest
    permissions:
      contents: read
    steps:
      - name: Checkout sources
        uses: actions/checkout@v2
        with:
          submodules: recursive
      - name: Install stable toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true

      - uses: Swatinem/rust-cache@v1

      - name: Run cargo check
        uses: actions-rs/cargo@v1
        with:
          command: check

      - name: Run copyright check
        run: |
          ./.github/copyright-check.sh src

  test:
    name: Test Suite
    strategy:
      matrix:
        os: [ ubuntu-latest, macos-latest ]
        rust: [ stable ]
        features:
          - ''
          - 'cadical'
    runs-on: ${{ matrix.os }}
    permissions:
      contents: read
    steps:
      - name: Checkout sources
        uses: actions/checkout@v2
        with:
          submodules: recursive
      - name: Install stable toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: ${{ matrix.rust }}
          override: true

      - name: Install build dependencies (Ubuntu)
        if: ${{ matrix.os == 'ubuntu-latest' }}
        run: |
          sudo apt-get update
          sudo apt-get install -y build-essential cmake

      - name: Install Homebrew dependencies (Mac)
        if: ${{ matrix.os == 'macos-latest' }}
        run: |
          brew update
          brew install cmake

      - name: Sanitize feature name for cache key
        id: cache-key
        run: echo "features=$(echo '${{ matrix.features }}' | tr ',' '_')" >> $GITHUB_OUTPUT

      - name: Cache solver builds
        uses: actions/cache@v4
        with:
          path: |
            target/debug/build
          key: ${{ runner.os }}-solver-${{ steps.cache-key.outputs.features }}-${{ hashFiles('lib/**') }}
          restore-keys: |
            ${{ runner.os }}-solver-${{ steps.cache-key.outputs.features }}-
            ${{ runner.os }}-solver-

      - name: Run tests
        run: cargo test --no-default-features --features "${{ matrix.features }}"

  lints:
    name: Lints
    runs-on: ubuntu-latest
    permissions:
      contents: read
    steps:
      - name: Checkout sources
        uses: actions/checkout@v2
        with:
          submodules: recursive

      - name: Install stable toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
          components: rustfmt, clippy

      - uses: Swatinem/rust-cache@v1

      - name: Run cargo fmt
        uses: actions-rs/cargo@v1
        with:
          command: fmt
          args: --all -- --check

      - name: Run cargo clippy
        uses: actions-rs/cargo@v1
        with:
          command: clippy
          args: --all-features --tests -- -D warnings

      - name: Run rustdoc lints
        uses: actions-rs/cargo@v1
        env:
          RUSTDOCFLAGS: ""
        with:
          command: doc
          args: --workspace --all-features --no-deps --document-private-items

  docs:
    name: Documentation
    runs-on: ubuntu-latest
    permissions:
      contents: read
    steps:
      - uses: actions/checkout@v4
        with:
          submodules: recursive

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@stable

      - name: Install build dependencies
        run: |
          sudo apt-get update
          sudo apt-get install -y build-essential cmake

      - name: Build documentation
        run: cargo doc --all-features --no-deps
        env:
          RUSTDOCFLAGS: -D warnings