name: deploy:docs:lib

on:
  push:
    branches:
      - main

jobs:
  # Build job
  build:
    # Specify runner +  build & upload the static files as an artifact
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7
      - uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.0.3
        with:
          node-version-file: '.tool-versions'
      - name: Install Dependencies & Build Library
        run: |
          npm install
          npm run build
        working-directory: lib/

      - name: Build static files
        id: build
        run: npm run docs:generate
        working-directory: lib/

      - name: Generate coverage
        id: coverage
        run: npm run test:unit
        working-directory: lib/

      - name: Create coverage badges
        id: coverage-badge
        uses: jaywcjlove/coverage-badges-cli@main
        with:
          style: flat
          source: lib/coverage/coverage-summary.json
          output: lib/docs/test-coverage.svg
          jsonPath: total.lines.pct

      - name: Upload static files as artifact
        id: deployment
        uses: actions/upload-pages-artifact@v3.0.1
        with:
          path: lib/docs/

  # Deploy job
  deploy:
    # Add a dependency to the build job
    needs: build

    # Grant GITHUB_TOKEN the permissions required to make a Pages deployment
    permissions:
      pages: write      # to deploy to Pages
      id-token: write   # to verify the deployment originates from an appropriate source

    # Deploy to the github-pages environment
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}

    # Specify runner + deployment step
    runs-on: ubuntu-latest
    steps:
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4.0.5