name: Documentation
on:
  push:
    branches:
      - master

jobs:
  documentation:
    name: Documentation
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          persist-credentials: false

      - name: Setup Node
        uses: actions/setup-node@v4
        with:
          node-version: '20'

      - name: Cache NPM
        id: cache-node-modules
        uses: actions/cache@v4
        env:
          cache-name: node-modules
        with:
          path: ~/.npm
          key: ${{ runner.os }}-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-${{ env.cache-name }}-

      - name: Install NPM Dependencies
        run: npm ci

      - name: Build Documentation
        run: npm run apidoc

      - name: Deploy to GitHub Pages
        uses: JamesIves/github-pages-deploy-action@v4
        with:
          branch: gh-pages # The branch the action should deploy to.
          folder: apidoc # The folder the action should deploy.
