name: CI
on:
  push: { branches: ["master", "main"] }
  pull_request: { branches: "*" }

jobs:
  build_and_test:
    name: Build and test
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@master

      - uses: actions/cache@v2
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
            target
          key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
          restore-keys: ${{ runner.os }}-cargo

      - name: Build
        uses: actions-rs/cargo@v1
        with:
          command: build
          args: --release --features full --color=always

      - name: Clippy
        uses: actions-rs/clippy-check@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          args: --release --features full

      - name: Test
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: --release --features full --color=always
