name: Deploy Moodle Plugin on Release

on:
  release:
    types: [published]

defaults:
  run:
    shell: bash

jobs:
  release-at-moodle-org:
    runs-on: ubuntu-latest
    env:
      PLUGIN: theme_degrade
      CURL: curl -s
      ENDPOINT: https://moodle.org/webservice/rest/server.php
      TOKEN: ${{ secrets.MOODLE_ORG_TOKEN }}
      FUNCTION: local_plugins_add_version

    steps:
      - name: Call the service function
        id: add-version
        run: |
          if [[ ! -z "${{ github.event.inputs.tag }}" ]]; then
            TAGNAME="${{ github.event.inputs.tag }}"
          elif [[ $GITHUB_REF = refs/tags/* ]]; then
            TAGNAME="${GITHUB_REF##*/}"
          fi
          if [[ -z "${TAGNAME}" ]]; then
            echo "No tag name has been provided!"
            exit 1
          fi
          ZIPURL="https://api.github.com/repos/${{ github.repository }}/zipball/${TAGNAME}"
          RESPONSE=$(${CURL} ${ENDPOINT} --data-urlencode "wstoken=${TOKEN}" \
                                         --data-urlencode "wsfunction=${FUNCTION}" \
                                         --data-urlencode "moodlewsrestformat=json" \
                                         --data-urlencode "frankenstyle=${PLUGIN}" \
                                         --data-urlencode "zipurl=${ZIPURL}" \
                                         --data-urlencode "vcssystem=git" \
                                         --data-urlencode "vcsrepositoryurl=${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}" \
                                         --data-urlencode "vcstag=${TAGNAME}" \
                                         --data-urlencode "changelogurl=${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/commits/${TAGNAME}" \
                                         --data-urlencode "altdownloadurl=${ZIPURL}")
          echo "response=${RESPONSE}" >> $GITHUB_OUTPUT

      - name: Evaluate the response
        id: evaluate-response
        env:
          RESPONSE: ${{ steps.add-version.outputs.response }}
        run: |
          jq <<< ${RESPONSE}
          jq --exit-status ".id" <<< ${RESPONSE} > /dev/null