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: Install cargo udeps
        run: cargo install cargo-udeps --locked
      - name: Execute cargo udeps
        run: cargo +nightly udeps

  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

  coverage:
    name: Calculate coverage from tests
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          ref: "${{ github.event.inputs.rev }}"
      - name: Execute tarpaulin
        run: |
          curl -s -N -L https://github.com/parallaxsecond/parsec-mock/archive/refs/tags/0.1.1.tar.gz | tar xz
          cd parsec-mock-0.1.1/
          python -m pip install --upgrade pip
          pip install -r requirements.txt
          cd ..
          ./tests/coverage.sh
