name: Create Release on QA to Master Merge

on:
  pull_request:
    branches: 
      - main
      - master
    types:
      - closed

jobs:
  create_release:
    if: github.event.pull_request.merged == true
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Read version from package.json
        id: get_version
        run: echo "VERSION=$(jq -r '.version' package.json)" >> "$GITHUB_OUTPUT"

      - name: Read module name
        id: get_name
        run: echo "MODULE_NAME=$(jq -r '.name' package.json)" >> "$GITHUB_OUTPUT"

      - name: Extract commit message
        id: extract_commit_message
        run: echo "MESSAGE=$(git log --format=%B -n 1 ${{ github.event.pull_request.head.sha }})" >> "$GITHUB_OUTPUT"

      - name: Create Release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: Release_${{ steps.get_version.outputs.VERSION }}
          release_name: Release ${{ steps.get_version.outputs.VERSION }}
          body: ${{ steps.extract_commit_message.outputs.MESSAGE }}
          draft: false
          prerelease: false
        
      - name: Login to Market API
        id: login_api
        uses: fjogeleit/http-request-action@v1
        with:
          url: 'https://market-api.rocketbot.com/api/loginApi'
          method: 'POST'
          contentType: 'application/json'
          data: '{"email": "${{ secrets.ACCOUNT }}", "password": "${{ secrets.PASS }}"}'

      - name: Module Information
        uses: fjogeleit/http-request-action@v1
        id: module_info
        with:
          url: 'https://market-api.rocketbot.com/modules/${{ steps.get_name.outputs.MODULE_NAME }}'
          method: 'POST'

      - name: Module ID
        id: module_id
        run: echo "MODULE_ID=${{ fromJson(steps.module_info.outputs.response).data.id }}" >> "$GITHUB_OUTPUT"

      - name: Token
        id: token
        run: echo "TOKEN=${{ fromJson(steps.login_api.outputs.response).token }}" >> "$GITHUB_OUTPUT"

      - name: Update module in Market
        uses: fjogeleit/http-request-action@v1
        id: update_module
        with:
          url: 'https://market-api.rocketbot.com/modules/update/${{ steps.module_id.outputs.MODULE_ID }}'
          method: 'POST'
          bearerToken: ${{ fromJson(steps.login_api.outputs.response).token }}
          timeout: 10000
          preventFailureOnNoResponse: 'true'
          ignoreStatusCodes: '502'
          maskResponse: 'true'
          retry: 3
          retryWait: 5000
