name: Publish CLI reference to documentation
on:
  push:
    branches:
      - main
    paths:
      - "cli/cmd/**"
      - "cli/internal/cmd/**"
  workflow_dispatch:

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

    steps:
      - name: Checkout Constellation
        uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b

      - name: Set up Go
        uses: actions/setup-go@268d8c0ca0432bb2cf416faae41297df9d262d7f
        with:
          go-version: 1.18

      - name: Generate reference docs
        run: go run . | cat header.md - > ../../cli.md
        working-directory: hack/clidocgen

      - name: Get commit sha
        run: |
          echo "COMMIT_END=$(echo ${{ github.sha }} | cut -c1-8)" >> $GITHUB_ENV

      - name: Check if action branch exists
        run: |
          ex=$(git ls-remote --heads origin action/constellation/update-cli-reference)
          echo "EXISTS=$(if [ -z "$ex" ]; then echo 0; else echo 1; fi)" >> $GITHUB_ENV

      - name: Publish new reference (create new branch)
        if: ${{ env.EXISTS == 0 }}
        uses: dmnemec/copy_file_to_another_repo_action@c93037aa10fa8893de271f19978c980d0c1a9b37
        env:
          API_TOKEN_GITHUB: ${{ secrets.CI_GITHUB_REPOSITORY }}
        with:
          source_file: "cli.md"
          destination_repo: "edgelesssys/constellation"
          destination_branch_create: "action/constellation/update-cli-reference"
          destination_folder: "docs/docs/reference"
          user_name: "${{ github.actor }}"
          user_email: "${{ github.actor }}@users.noreply.github.com"
          commit_message: "CLI reference was updated by edgelesssys/constellation@${{ env.COMMIT_END}}"

      - name: Publish new reference (update branch)
        if: ${{ env.EXISTS == 1 }}
        uses: dmnemec/copy_file_to_another_repo_action@c93037aa10fa8893de271f19978c980d0c1a9b37
        env:
          API_TOKEN_GITHUB: ${{ secrets.CI_GITHUB_REPOSITORY }}
        with:
          source_file: "cli.md"
          destination_repo: "edgelesssys/constellation"
          destination_branch: "action/constellation/update-cli-reference"
          destination_folder: "docs/docs/reference"
          user_name: "${{ github.actor }}"
          user_email: "${{ github.actor }}@users.noreply.github.com"
          commit_message: "CLI reference was updated by edgelesssys/constellation@${{ env.COMMIT_END}}"
