name: CI

on:
  push:
  pull_request:

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Setup Node
        uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: npm
      - name: Install
        run: npm ci
      - name: Test
        run: npm test
      - name: Compute coverage
        if: ${{ github.ref == 'refs/heads/master' }}
        run: |
          COVERAGE=$(node -e "const s=require('./coverage/coverage-summary.json'); process.stdout.write(s.total.lines.pct.toFixed(0));")
          printf "COVERAGE=%s%%\n" "$COVERAGE" >> $GITHUB_ENV
      - name: Update coverage badge
        if: ${{ github.ref == 'refs/heads/master' }}
        uses: schneegans/dynamic-badges-action@v1.7.0
        with:
          auth: ${{ secrets.GIST_SECRET }}
          gistID: 52379544f8b69480bea22bffb0f34472
          filename: coverage.json
          label: coverage
          message: ${{ env.COVERAGE }}
          color: green
