cargo-all 0.2.0

Manage all your crates with a single command.
name: Checks
on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

env:
  CARGO_TERM_COLOR: always

  GITHUB_CACHE_VERSION: 1
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

  RUST_BACKTRACE: full
  RUSTC_WRAPPER: sccache

  SCCACHE_LINK: https://github.com/mozilla/sccache/releases/download
  SCCACHE_VERSION: v0.3.0
  SCCACHE_DIR: /home/runner/.cache/sccache

jobs:
  cargo_checks:
    name: Task cargo ${{ matrix.action }}
    runs-on: ubuntu-latest
    strategy:
      matrix:
        action: [clippy, nextest]
    steps:
      - name: Fetch latest code
        uses: actions/checkout@v3
      - name: Install Sccache
        run: |
          export SCCACHE_FILE=sccache-${{ env.SCCACHE_VERSION }}-x86_64-unknown-linux-musl
          curl -L ${{ env.SCCACHE_LINK }}/${{ env.SCCACHE_VERSION }}/$SCCACHE_FILE.tar.gz | tar xz
          sudo mv $SCCACHE_FILE/sccache /usr/bin
          sudo chmod u+x /usr/bin/sccache
      - name: Cache cargo
        uses: actions/cache@v3
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
            target
          key: cargo-${{ env.GITHUB_CACHE_VERSION }}-${{ matrix.action }}-${{ hashFiles('**/Cargo.lock') }}
          restore-keys: cargo-${{ env.GITHUB_CACHE_VERSION }}-${{ matrix.action }}-
      - name: Cache sccache
        uses: actions/cache@v3
        with:
          path: ${{ env.SCCACHE_DIR}}
          key: sccache-${{ env.GITHUB_CACHE_VERSION }}-${{ matrix.action }}--${{ hashFiles('**/Cargo.lock') }}
          restore-keys: sccache-${{ env.GITHUB_CACHE_VERSION }}-${{ matrix.action }}-
      - name: Cargo ${{ matrix.action }}
        if: matrix.action == 'clippy'
        uses: actions-rs/clippy-check@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          args: --workspace --all-features --all-targets --locked
      - name: Install cargo-nextest
        if: matrix.action == 'nextest'
        uses: taiki-e/install-action@nextest
      - name: Cargo nextest
        if: matrix.action == 'nextest'
        uses: actions-rs/cargo@v1
        with:
          command: nextest
          args: run --workspace --all-features --all-targets --locked