---
name: Gerrit Verify

# yamllint disable-line rule:truthy
on:
  workflow_dispatch:
    inputs:
      GERRIT_BRANCH:
        description: "Branch that change is against"
        required: true
        type: string
      GERRIT_CHANGE_ID:
        description: "The ID for the change"
        required: true
        type: string
      GERRIT_CHANGE_NUMBER:
        description: "The Gerrit number"
        required: true
        type: string
      GERRIT_CHANGE_URL:
        description: "URL to the change"
        required: true
        type: string
      GERRIT_EVENT_TYPE:
        description: "Type of Gerrit event"
        required: true
        type: string
      GERRIT_PATCHSET_NUMBER:
        description: "The patch number for the change"
        required: true
        type: string
      GERRIT_PATCHSET_REVISION:
        description: "The revision sha"
        required: true
        type: string
      GERRIT_PROJECT:
        description: "Project in Gerrit"
        required: true
        type: string
      GERRIT_REFSPEC:
        description: "Gerrit refspec of change"
        required: true
        type: string

concurrency:
  # yamllint disable-line rule:line-length
  group: gerrit-verify-${{ github.workflow }}-${{ github.event.inputs.GERRIT_CHANGE_ID || github.run_id }}
  cancel-in-progress: true

permissions: read-all

jobs:
  prepare:
    runs-on: ubuntu-latest
    steps:
      - name: Clear votes
        uses: lfit/gerrit-review-action@v0.4
        with:
          host: ${{ vars.GERRIT_SERVER }}
          username: ${{ vars.GERRIT_SSH_USER }}
          key: ${{ secrets.GERRIT_SSH_PRIVKEY }}
          known_hosts: ${{ vars.GERRIT_KNOWN_HOSTS }}
          gerrit-change-number: ${{ inputs.GERRIT_CHANGE_NUMBER }}
          gerrit-patchset-number: ${{ inputs.GERRIT_PATCHSET_NUMBER }}
          vote-type: clear
      - name: Allow replication
        run: sleep 10s

  call-gerrit-tox-verify:
    needs: prepare
    # yamllint disable-line rule:line-length
    uses: lfit/releng-reusable-workflows/.github/workflows/gerrit-compose-required-tox-verify.yaml@main
    with:
      GERRIT_BRANCH: ${{ inputs.GERRIT_BRANCH }}
      GERRIT_CHANGE_ID: ${{ inputs.GERRIT_CHANGE_ID }}
      GERRIT_CHANGE_NUMBER: ${{ inputs.GERRIT_CHANGE_NUMBER }}
      GERRIT_CHANGE_URL: ${{ inputs.GERRIT_CHANGE_URL }}
      GERRIT_EVENT_TYPE: ${{ inputs.GERRIT_EVENT_TYPE }}
      GERRIT_PATCHSET_NUMBER: ${{ inputs.GERRIT_PATCHSET_NUMBER }}
      GERRIT_PATCHSET_REVISION: ${{ inputs.GERRIT_PATCHSET_REVISION }}
      GERRIT_PROJECT: ${{ inputs.GERRIT_PROJECT }}
      GERRIT_REFSPEC: ${{ inputs.GERRIT_REFSPEC }}
      TOX_ENVS: '["docs","docs-linkcheck"]'

  vote:
    if: ${{ always() }}
    # yamllint enable rule:line-length
    needs: [prepare, call-gerrit-tox-verify]
    runs-on: ubuntu-latest
    steps:
      - uses: technote-space/workflow-conclusion-action@v3
      - name: Set vote
        uses: lfit/gerrit-review-action@v0.4
        with:
          host: ${{ vars.GERRIT_SERVER }}
          username: ${{ vars.GERRIT_SSH_USER }}
          key: ${{ secrets.GERRIT_SSH_PRIVKEY }}
          known_hosts: ${{ vars.GERRIT_KNOWN_HOSTS }}
          gerrit-change-number: ${{ inputs.GERRIT_CHANGE_NUMBER }}
          gerrit-patchset-number: ${{ inputs.GERRIT_PATCHSET_NUMBER }}
          vote-type: ${{ env.WORKFLOW_CONCLUSION }}
