GSL 7.0.0

A rust binding for the GSL (the GNU scientific library)
Documentation
on:
  push:
    branches: [master]
  pull_request:

name: CI

jobs:
  build-linux:
    runs-on: ubuntu-latest
    container:
      image: ubuntu:23.10
    strategy:
      matrix:
        rust:
          - stable
          - nightly
    steps:
      - run: apt-get update -y
      - run: apt-get install -y libgsl0-dev curl build-essential python3
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.rust }}
          override: true
          components: clippy
      - run: cargo clippy -- -D warnings
      - run: cargo check
      - run: cargo check --features v2_1
      - run: cargo check --features v2_2
      - run: cargo check --features v2_3
      - run: cargo check --features v2_4
      - run: cargo check --features v2_5
      - run: cargo check --features v2_6
      - run: cargo check --features v2_7
      - name: run tests
        run: cargo test --features v2_7
      - name: check examples
        working-directory: examples
        run: cargo check --features GSL/v2_7
      - name: run examples
        working-directory: examples
        run: python3 run-examples.py

  build-osx:
    runs-on: macos-latest
    strategy:
      matrix:
        rust:
          - stable
          - nightly
    steps:
      - run: brew update
      - run: brew install gsl
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.rust }}
          override: true
      - run: cargo check
      - run: cargo check --features v2_1
      - run: cargo check --features v2_2
      - run: cargo check --features v2_3
      - run: cargo check --features v2_4
      - run: cargo check --features v2_5
      - run: cargo check --features v2_6
      - run: cargo check --features v2_7
      - name: check examples
        working-directory: examples
        run: cargo check --features GSL/v2_7

  fmt:
    name: rust fmt
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - run: rustup component add rustfmt
      - uses: actions-rs/cargo@v1
        with:
          command: fmt
          args: --all -- --check
      - name: Checker
        run: python3 checker.py

  sys-check:
    name: sys check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - name: Run checker if changes in gsl-sys
        working-directory: gsl-sys/bin
        run: ((git diff --name-only `git log --merges --pretty=format:"%H" -n 1` | grep gsl-sys) && cargo run) || echo "No changes in gsl-sys, no need to check it!"
      - run: git diff --exit-code