name: Documentation Upload

on:
  workflow_dispatch:
    inputs:
      releaseVersion:
        description: "Release version"
        required: true

jobs:
  build:
    runs-on: ubuntu-latest
    steps:

      - name: Capture release version
        run: echo RELEASE_VERSION=${{ github.event.inputs.releaseVersion }} >> $GITHUB_ENV

      - name: Checkout source code
        uses: actions/checkout@v3

      - name: Set up JDK 17
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'temurin'
          cache: 'maven'

      - name: Generate Java docs
        run: mvn javadoc:aggregate

      - name: Generate assembly
        working-directory: spring-ai-docs
        run: mvn assembly:single

      - name: Setup SSH key
        env:
          DOCS_SSH_KEY: ${{ secrets.DOCS_SSH_KEY }}
          DOCS_SSH_HOST_KEY: ${{ secrets.DOCS_SSH_HOST_KEY }}
        run: |
          mkdir "$HOME/.ssh"
          echo "$DOCS_SSH_KEY" > "$HOME/.ssh/key"
          chmod 600 "$HOME/.ssh/key"
          echo "$DOCS_SSH_HOST_KEY" > "$HOME/.ssh/known_hosts"

      - name: Deploy docs
        env:
          DOCS_HOST: ${{ secrets.DOCS_HOST }}
          DOCS_PATH: ${{ secrets.DOCS_PATH }}
          DOCS_USERNAME: ${{ secrets.DOCS_USERNAME }}
        working-directory: spring-ai-docs/target
        run: |
          unzip spring-ai-$RELEASE_VERSION-docs.zip
          ssh -i $HOME/.ssh/key $DOCS_USERNAME@$DOCS_HOST "cd $DOCS_PATH && mkdir -p $RELEASE_VERSION/api"
          scp -i $HOME/.ssh/key -r api $DOCS_USERNAME@$DOCS_HOST:$DOCS_PATH/$RELEASE_VERSION

