name: Nightly Checks

on:
  schedule:
    # Every night at midnight
    - cron:  '0 0 * * *'
  workflow_dispatch:
    inputs:
      rev:
        description: "Revision hash to run against"
        required: false
        default: ""

jobs:
  dependencies:
    name: Check for unused dependencies
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          ref: "${{ github.event.inputs.rev }}"
      - name: Install latest Rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: nightly
      - name: Fetch submodules
        run: git submodule update --init
      - name: Install cargo udeps
        run: cargo install cargo-udeps --locked
      - name: Execute cargo udeps
        run: cargo +nightly udeps

  build:
    name: Build and check formatting with updated dependencies
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
      with:
        ref: "${{ github.event.inputs.rev }}"
    - name: Execute all tests
      run: |
        rm Cargo.lock
        ./tests/ci.sh

  audit:
    name: Check for crates with security vulnerabilities
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          ref: "${{ github.event.inputs.rev }}"
      - name: Install latest Rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: nightly
      - name: Install cargo audit
        run: cargo install cargo-audit
      - name: Execute cargo audit
        run: cargo audit
