name: Photon Code Documentation

on:
  # Run on pushes to master and pushed tags, and on pull requests against master, but ignore the docs folder
  push:
    branches: [ master ]
    tags:
      - 'v*'
    paths:
      - '**'
      - '!docs/**'
      - '.github/**'
  pull_request:
    branches: [ master ]
    paths:
      - '**'
      - '!docs/**'
      - '.github/**'
  merge_group:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
  contents: read
  pages: write
  id-token: write

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  build-client:
    name: "PhotonClient Build"
    defaults:
      run:
        working-directory: photon-client
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 18
      - name: Install Dependencies
        run: npm ci
      - name: Build Production Client
        run: npm run build-demo
      - uses: actions/upload-artifact@v4
        with:
          name: built-client
          path: photon-client/dist/

  run_docs:
    runs-on: "ubuntu-22.04"
    steps:
    - name: Checkout code
      uses: actions/checkout@v4
      with:
        fetch-depth: 0
    - name: Fetch tags
      run: git fetch --tags --force
    - name: Install Java 17
      uses: actions/setup-java@v4
      with:
        java-version: 17
        distribution: temurin

    - name: Build javadocs/doxygen
      run: |
        chmod +x gradlew
        ./gradlew photon-docs:generateJavaDocs photon-docs:doxygen

    - uses: actions/upload-artifact@v4
      with:
        name: built-docs
        path: photon-docs/build/docs

  release:
    needs: [build-client, run_docs]

    runs-on: ubuntu-22.04
    steps:

      # Download literally every single artifact.
      - uses: actions/download-artifact@v4

      - run: find .
      - name: copy file via ssh password
        if: github.ref == 'refs/heads/master'
        uses: appleboy/scp-action@v0.1.7
        with:
          host: ${{ secrets.WEBMASTER_SSH_HOST }}
          username: ${{ secrets.WEBMASTER_SSH_USERNAME }}
          password: ${{ secrets.WEBMASTER_SSH_KEY }}
          port: ${{ secrets.WEBMASTER_SSH_PORT }}
          source: "*"
          target: /var/www/html/photonvision-docs/
