name: Build and Deploy Website

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - '**'

env:
  GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}

permissions:
  contents: write  # for JamesIves/github-pages-deploy-action to push changes in repo

jobs:
  build-detekt-docs:
    if: github.repository == 'detekt/detekt'
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repo
        uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # tag=v3

      - name: Setup Java
        uses: actions/setup-java@16cca5479d7c6b6843f6a6515640ba33c6501543 # tag=v3
        with:
          java-version: 17
          distribution: 'temurin'

      - name: Setup Node
        uses: actions/setup-node@eeb10cff27034e7acf239c5d29f62154018672fd # tag=v3
        with:
          node-version: '16'
          cache: 'yarn'
          cache-dependency-path: 'website/yarn.lock'

      - name: Build Detekt Documentation
        uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1 # tag=v2
        with:
          arguments: :detekt-generator:generateDocumentation

      - name: Install Yarn Dependencies
        working-directory: website/
        run: yarn install

      - name: Build the Detekt Website
        working-directory: website/
        run: yarn build

      - name: Deploy Github Pages (only on main)
        uses: JamesIves/github-pages-deploy-action@8817a56e5bfec6e2b08345c81f4d422db53a2cdc # tag=v4
        if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
        with:
          branch: gh-pages
          folder: website/build/
