netcdf 0.7.0

High-level NetCDF bindings for Rust
Documentation
name: CI

on:
  push:
    branches:
    - master
  pull_request:
    branches:
    - master
  schedule:
  - cron: '0 0 15 * *'

env:
  CARGO_TERM_COLOR: always

jobs:
  rustfmt:
    name: rustfmt
    runs-on: ubuntu-18.04
    steps:
    - name: Checkout repository
      uses: actions/checkout@v2
      with: {submodules: true}
    - name: Install netCDF
      run: sudo apt-get update && sudo apt-get install libnetcdf-dev
    - name: Install rust
      uses: actions-rs/toolchain@v1
      with:
        toolchain: stable
        override: true
        profile: minimal
        components: rustfmt, clippy
    - name: Check formatting
      run: cargo fmt -- --check
    - name: Documentation
      run: cargo doc
    - name: Clippy
      run: cargo clippy --workspace -- -D warnings

  test_apt:
    name: test apt
    runs-on: ubuntu-18.04
    strategy:
      matrix:
        build:
        - stable
        - beta
        - nightly
        include:
        - build: stable
          rust: stable
        - build: beta
          rust: beta
        - build: nightly
          rust: nightly
    steps:
    - name: Checkout repository
      uses: actions/checkout@v2
      with: {submodules: false}

    - name: Install netcdf
      run: sudo apt-get update && sudo apt-get install libnetcdf-dev

    - name: Install rust
      uses: actions-rs/toolchain@v1
      with:
        toolchain: ${{ matrix.rust }}
        profile: minimal
        override: true

    - name: Build
      run: cargo build --verbose

    - name: Test
      run: cargo test --verbose

  conda:
    name: conda
    runs-on: ${{matrix.os}}-latest
    strategy:
      fail-fast: false
      matrix:
        include:
          - {os: ubuntu, channel: conda-forge, rust: stable}
          - {os: windows, channel: conda-forge, rust: stable}
          - {os: macos, channel: conda-forge, rust: stable}
    defaults:
      run:
        shell: bash -l {0}
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2
        with: {submodules: true}
      - name: Install Rust (${{matrix.rust}})
        uses: actions-rs/toolchain@v1
        with: {toolchain: '${{matrix.rust}}', profile: minimal, override: true}
      - name: Install conda
        uses: conda-incubator/setup-miniconda@v2
        with: {auto-update-conda: false, activate-environment: testenv}
      - name: Install netCDF
        run: conda install -y -c ${{matrix.channel}} libnetcdf=4.7.4
      - name: Build and test
        run: |
          export HDF5_DIR="$CONDA_PREFIX"
          [ "${{runner.os}}" != "Windows" ] && export RUSTFLAGS="-C link-args=-Wl,-rpath,$CONDA_PREFIX/lib"
          cargo test -vv

  static_builds:
    name: static builds
    runs-on: ${{matrix.os}}-latest
    strategy:
      fail-fast: false
      matrix:
        include:
          - {os: ubuntu, rust: stable}
          - {os: windows, rust: stable-msvc}
          - {os: windows, rust: stable-gnu}
          - {os: macos, rust: stable}
    defaults:
      run:
          shell: bash -l {0}
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2
        with: {submodules: true}
      - name: Install Rust (${{matrix.rust}})
        uses: actions-rs/toolchain@v1
        with: {toolchain: '${{matrix.rust}}', profile: minimal, override: true}
      - name: Change to older toolchain
        if: matrix.os == 'macos'
        run: sudo xcode-select -s "/Applications/Xcode_11.7.app"
      - name: Build and test
        run: cargo test -vv --features static

  addr_san:
    name: Address sanitizer
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2
        with: {submodules: true}
      - name: Install Rust
        uses: actions-rs/toolchain@v1
        with: {toolchain: nightly, profile: minimal, override: true}
      - name: Run test with sanitizer
        run: env RUSTFLAGS="-Z sanitizer=address" cargo test --features netcdf-sys/static --target x86_64-unknown-linux-gnu --workspace