# Publishes SDK docs to the docs-official repo (https://github.com/rungalileo/docs-official)
name: Publish Docs

on:
  workflow_dispatch:
  workflow_run:
    workflows: ['Package Release']
    types:
      - completed

jobs:
  publish-docs:
    runs-on: ubuntu-latest

    steps:
      # Checkout both this repo, and the docs official repo
      - name: Checkout
        uses: actions/checkout@v4
        with:
          path: ./galileo-js

      - name: Check out Docs repo
        uses: actions/checkout@v4
        with:
          repository: rungalileo/docs-official
          path: ./docs-official
          token: ${{ secrets.GALILEO_AUTOMATION_GITHUB_TOKEN }}

      # Generate the docs using TSDoc
      - name: Build Docs
        working-directory: ./galileo-js
        run: |
          npm install
          npm run docs

      # Create a branch in the docs-official repo using the current branch name
      - name: Create a branch
        working-directory: ./docs-official
        run: git checkout -b feat/update-docs-${GITHUB_REF_NAME}-${{ github.run_id }}

      # Copy the generated docs from the TypeScript SDK repo to the docs repo
      - name: Update SDK docs
        run: |
          rm -rf ./docs-official/sdk-api/typescript/reference
          cp -r ./galileo-js/.generated_docs/reference ./docs-official/sdk-api/typescript/

      # Commit the changes to the branch, and push
      - name: Commit changes
        working-directory: ./docs-official
        run: |
          git config --global user.email "info@galileo.com"
          git config --global user.name "Galileo"
          git add .
          git commit -m "Updating docs from ${GITHUB_REF_NAME}-${{ github.run_id }}"
          git push -u origin feat/update-docs-${GITHUB_REF_NAME}-${{ github.run_id }}

      # Create a PR against the docs repo with the new changes
      - name: Create PR
        working-directory: ./docs-official
        env:
          GH_TOKEN: ${{ secrets.GALILEO_AUTOMATION_GITHUB_TOKEN }}
          PR_BODY: |
            This PR contains the latest updates to the TypeScript SDK documentation.

            The SDK doc generation will not change the docs.json for new or removed files, so you will need to manually commit a change to this PR for any file changes.

            When reviewing this PR, please do the following:

            - [ ] If there are any new files added by the PR, add them to the docs.json file in the right location
            - [ ] If there are any files removed by the PR, remove them from the docs.json
            - [ ] Launch the docs and check for any file path errors
            - [ ] If any SDK docs are removed, check why - this should not happen. If the docstrings are wrong they should be fixed, not removed
            - [ ] For added docs, check they are correct (e.g. match the function signature)

            **DO NOT** approve this PR until you have completed these checks.
        run: |
          gh pr create --title "Updated TypeScript SDK docs" --body "${{ env.PR_BODY }}"
