name: CI
on:
  push:
    branches: [master]
  pull_request:
    branches: [master]
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name == 'push' && github.run_number }}
  cancel-in-progress: true
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Install node
        uses: actions/setup-node@v3
        with:
          node-version: 18
      - name: Install pnpm
        uses: pnpm/action-setup@v2
        with:
          version: 9
      - name: Cache dependencies
        uses: actions/cache@v3
        id: cache
        with:
          path: '**/node_modules'
          key: deps-${{ hashFiles('package.json') }}
          restore-keys: |
            deps-
      - name: Install dependencies
        run: pnpm install
      - name: Test
        run: pnpm test
  lint:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Install node
        uses: actions/setup-node@v3
        with:
          node-version: 18
      - name: Install pnpm
        uses: pnpm/action-setup@v2
        with:
          version: 9
      - name: Cache dependencies
        uses: actions/cache@v3
        id: cache
        with:
          path: '**/node_modules'
          key: deps-${{ hashFiles('package.json') }}
          restore-keys: |
            deps-
      - name: Install dependencies
        run: pnpm install
      - name: Lint check
        run: pnpm lint
      - name: Formatting check
        run: pnpm format-check
