
name: nervosnetwork/faster-hex CI

on: [push, pull_request]

jobs:
  fmt:
    name: Rustfmt
    runs-on: ubuntu-latest
    steps:
      - name: Checkout sources
        uses: actions/checkout@v2
      - name: Install rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: 1.73
          components: rustfmt
          profile: minimal
          override: true
      - name: Run rustfmt
        uses: actions-rs/cargo@v1
        with:
          command: fmt
          args: --all -- --check

  audit:
    name: Security audit
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/audit-check@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}

  test:
    name: ${{ matrix.build }}
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        build: [Linux, macOS, windows-2019]
        include:
          - build: Linux
            os: ubuntu-22.04
          - build: macOS
            os: macos-12
          - build: windows-2019
            os: windows-2019
    steps:
      - name: Maximize build space
        if: runner.os == 'Linux'
        uses: easimon/maximize-build-space@master
        with:
          root-reserve-mb: 512
          swap-size-mb: 1024
          remove-dotnet: 'true'
          remove-android: 'true'
          remove-haskell: 'true'
      - name: Checkout sources
        uses: actions/checkout@v2
        with:
          submodules: true
      - name: Install rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: 1.73
          target: ${{ matrix.target }}
          profile: minimal
          override: true
      - name: Run tests
        if: runner.os == 'Linux' || runner.os == 'Windows'
        uses: actions-rs/cargo@v1
        with:
          command: test
