chainfile 0.4.0

A crate for working with genomics chain files.
Documentation
name: CI

on:
  push:
    branches:
      - main
  pull_request:

jobs:
  format:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Update Rust
        run: rustup update nightly && rustup default nightly
      - name: Install rustfmt
        run: rustup component add rustfmt
      - run: cargo fmt -- --check

  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Update Rust
        run: rustup update stable && rustup default stable
      - name: Install `cargo-hack`
        run: cargo install cargo-hack --locked
      - name: Install `cargo clippy`
        run: rustup component add clippy
      - run: cargo hack --each-feature clippy -- --deny warnings

  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Update Rust
        run: rustup update stable && rustup default stable
      - name: Install `cargo-hack`
        run: cargo install cargo-hack --locked
      - run: cargo hack test --each-feature

  test-examples:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Update Rust
        run: rustup update stable && rustup default stable
      - name: Install `cargo-hack`
        run: cargo install cargo-hack --locked
      - run: cargo hack test --each-feature --examples

  test-compare-crossmap:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Update Rust
        run: rustup update stable && rustup default stable
      - run: cargo test --features=binaries --bin=compare-crossmap

  docs:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Update Rust
        run: rustup update stable && rustup default stable
      - run: cargo doc

  msrv:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Update Rust
        run: rustup update stable && rustup default stable
      - name: Install `cargo-msrv`
        run: cargo install cargo-msrv --locked
      - name: Install `cargo-hack`
        run: cargo install cargo-hack --locked
      - name: Verify the MSRV
        run: cargo msrv verify -- cargo hack --each-feature check