name: CI

on:
  pull_request:
  push:
    branches:
      - master
      - staging
      - trying
  schedule:
    - cron: '0 1 * * *'

env:
  RUSTFLAGS: -Dwarnings
  RUST_BACKTRACE: 1

defaults:
  run:
    shell: bash

jobs:
  test:
    name: test
    strategy:
      matrix:
        rust:
          # This is the minimum supported Rust version of this crate.
          # When updating this, the reminder to update the minimum supported Rust version in README.md.
          - 1.31.0
          - stable
          - beta
          - nightly
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Install Rust
        run: ci/install-rust.sh ${{ matrix.rust }}
      - name: Install cargo-hack
        if: matrix.rust != '1.31.0'
        run: |
          cargo install cargo-hack
      - name: cargo check
        if: matrix.rust == '1.31.0'
        run: |
          cargo check --all-features
      - name: cargo test
        if: matrix.rust != '1.31.0'
        run: |
          cargo test --all-features
      - name: cargo hack check --each-feature
        if: matrix.rust != '1.31.0'
        run: |
          cargo hack check --all --each-feature --no-dev-deps
      - name: cargo check (minimal versions)
        if: matrix.rust == 'nightly'
        run: |
          bash scripts/check-minimal-versions.sh

  clippy:
    name: clippy
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Install Rust and Clippy
        run: ci/install-component.sh clippy
      - name: cargo clippy
        run: |
          cargo clippy --all --all-features --all-targets

  rustfmt:
    name: rustfmt
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Install Rust and Rustfmt
        run: ci/install-component.sh rustfmt
      - name: cargo fmt --check
        run: |
          cargo fmt --all -- --check

  rustdoc:
    name: rustdoc
    env:
      RUSTDOCFLAGS: -Dwarnings
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Install Rust
        run: ci/install-rust.sh
      - name: cargo doc
        run: |
          cargo doc --no-deps --all --all-features

  shellcheck:
    name: shellcheck
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: shellcheck
        run: |
          shellcheck ci/*.sh scripts/*.sh

  # These jobs don't actually test anything, but they're used to tell bors the
  # build completed, as there is no practical way to detect when a workflow is
  # successful listening to webhooks only.
  #
  # ALL THE PREVIOUS JOBS NEEDS TO BE ADDED TO THE `needs` SECTION OF THIS JOB!

  ci-success:
    name: ci
    if: github.event_name == 'push' && success()
    needs:
      - test
      - clippy
      - rustfmt
      - rustdoc
      - shellcheck
    runs-on: ubuntu-latest
    steps:
      - name: Mark the job as a success
        run: exit 0
  ci-failure:
    name: ci
    if: github.event_name == 'push' && !success()
    needs:
      - test
      - clippy
      - rustfmt
      - rustdoc
      - shellcheck
    runs-on: ubuntu-latest
    steps:
      - name: Mark the job as a failure
        run: exit 1
