name: Rustfmt and clippy check

on:
  pull_request:
    types: [opened, synchronize, reopened]
  push:
    branches:
      - main

jobs:
  rustfmt_clippy:
    strategy:
      fail-fast: true

    name: Rustfmt and clippy check
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3

      - name: Install Rust Nightly
        run: |
          rustup override set nightly
          rustup update nightly
          rustup component add rustfmt clippy

      - name: rustfmt
        run: cargo fmt --all -- --check

      - name: clippy-tokio-socket
        run: cargo clippy -- -D warnings

      - name: clippy-smol-socket
        run: >
          cargo clippy --no-default-features
          --features smol_socket -- -D warnings
