# ci.yml file for GitHub Actions
name: CI

on: [push, pull_request]

jobs:
  build_and_lint:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout the repository
        uses: actions/checkout@v2

      - name: Setup Node.js
        uses: actions/setup-node@v2

      - name: Retrieve the cached "node_modules" directory (if present)
        uses: actions/cache@v2
        id: node-cache
        with:
          path: node_modules
          key: node-modules-${{ runner.os }}-${{ hashFiles('package-lock.json') }}

      - name: Install dependencies (if the cached directory was not found)
        if: steps.node-cache.outputs.cache-hit != 'true'
        run: npm ci

      - name: Create the docs directory locally in CI
        run: npm run docs

      - name: Deploy 🚀
        uses: JamesIves/github-pages-deploy-action@4.1.4
        with:
          branch: gh-pages
          folder: docs
      - name: Upload Pages artifact
        uses: actions/upload-pages-artifact@v3
        with:
          path: docs/
  deploy:
    permissions:
      pages: write      # to deploy to Pages
      id-token: write   # to verify the deployment originates from an appropriate source
    runs-on: ubuntu-latest
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    needs: build_and_lint
    steps:
      - name: Deploy to GitHub Pages
        id: deployment
        # https://github.com/actions/deploy-pages
        uses: actions/deploy-pages@v4
