name: Prepare values for GX github actions
author: Bolt lee
inputs:
  rc_tag:
    description: ''
    required: false
    default: 'v0.0.1-rc.1'
  ref:
    description: ''
    required: false
    default: 'test'
  head_ref:
    description: ''
    required: false
    default: 'test'
  type:
    description: ''
    required: false
    default: 'test'
outputs:
  project:
    description: 'Get the current project name'
    value: ${{ steps.set-values.outputs.project }}
  env:
    description: 'Get deployed environment'
    value: ${{ steps.set-values.outputs.env }} # dev, qa 
  deploy_env:
    description: 'Get deployed environment'
    value: ${{ steps.set-values.outputs.deploy_env }} # dev, qa 
  deploy_env_2:
    description: 'Get deployed environment'
    value: ${{ steps.set-values.outputs.deploy_env_2 }} # dev2, qa2
  tag:
    description: 'Get tag without rc'
    value: ${{ steps.set-values.outputs.tag }}
  isperf:
    description: ''
    value: ${{ steps.set-values.outputs.isperf }}

runs:
  using: "composite"
  steps:
    - name: Set custom env values
      id: set-values
      shell: bash
      run: |
        REF=${{inputs.ref}}
        HEAD_REF=${{ inputs.head_ref }}
        TYPE=${{inputs.type}}
        
        QA_TAG_RC='v*[0-9].*[0-9].*[0-9]-rc.*[0-9]'
        QA_TAG_ALPHA='v*[0-9].*[0-9].*[0-9]-alpha.*[0-9]'
        
        echo "TYPE-REF : ${{ inputs.type }}-${{ inputs.ref }}"
        
        DEPLOY_ENV=dev
        env=dev

        echo "** SET project **"
        echo "project=$(echo ${{ github.repository }} | sed -E 's|(^.*\/)||')" >> $GITHUB_OUTPUT

        if [[ "${TYPE}" == "tag" ]]; then
          env=qa
          if [[ "${REF}" =~ ${QA_TAG_RC} ]]; then  
            echo "deploy_env=$( echo qa )" >> $GITHUB_OUTPUT
            echo "deploy_env_2=$( echo qa )" >> $GITHUB_OUTPUT
            echo "isperf=$( echo perf )" >> $GITHUB_OUTPUT
            echo "tag=$(echo ${REF} | sed -E 's|(\-.*)||')" >> $GITHUB_OUTPUT
            echo "REF : ${REF}"
            if [[ "${REF}" =~ "qa2" ]]; then
              echo "deploy_env=$( echo qa2 )" >> $GITHUB_OUTPUT
              echo "deploy_env_2=$( echo qa2 )" >> $GITHUB_OUTPUT
            fi
          elif [[ "${REF}" =~ ${QA_TAG_ALPHA} ]]; then
            echo "deploy_env=$( echo qa )" >> $GITHUB_OUTPUT
            echo "deploy_env_2=$( echo qa )" >> $GITHUB_OUTPUT
            echo "isperf=$( echo perf )" >> $GITHUB_OUTPUT
            echo "tag=$(echo ${REF} | sed -E 's|(\-.*)||')" >> $GITHUB_OUTPUT
            echo "REF : ${REF}"
            if [[ "${REF}" =~ "qa2" ]]; then
              echo "deploy_env=$( echo qa2 )" >> $GITHUB_OUTPUT
              echo "deploy_env_2=$( echo qa2 )" >> $GITHUB_OUTPUT
            fi
          fi
        elif [[ "${TYPE}" == "branch" ]]; then
          if [[ "${REF}" == "dev2" ]]; then
            echo "deploy_env=$( echo dev )" >> $GITHUB_OUTPUT
            echo "deploy_env_2=$( echo dev2 )" >> $GITHUB_OUTPUT
          elif [[ "${REF}" == "dev3" ]]; then
            echo "deploy_env=$( echo dev3 )" >> $GITHUB_OUTPUT
            echo "deploy_env_2=$( echo dev3 )" >> $GITHUB_OUTPUT
          elif [[ "${REF:0:3}" == "dev" ]]; then
            echo "deploy_env=$( echo dev )" >> $GITHUB_OUTPUT
            echo "deploy_env_2=$( echo dev )" >> $GITHUB_OUTPUT
          elif [[ "${REF}" =~ "hotfix" ]]; then
            env=qa
            echo "deploy_env=$( echo qa )" >> $GITHUB_OUTPUT
            echo "deploy_env_2=$( echo qa2 )" >> $GITHUB_OUTPUT
          elif [[ "${REF:0:6}" == "master" ]]; then
            env=staging
            echo "deploy_env=$( echo staging )" >> $GITHUB_OUTPUT
            echo "deploy_env_2=$( echo staging )" >> $GITHUB_OUTPUT
          fi
        fi
        
        if [[ "${HEAD_REF}" =~ "hotfix" ]]; then
          env=qa
          echo "deploy_env=$( echo qa )" >> $GITHUB_OUTPUT
          echo "deploy_env_2=$( echo qa2 )" >> $GITHUB_OUTPUT
        fi
         
        if [[ "${{ inputs.rc_tag }}" != "v0.0.1-rc.1" ]]; then
          echo "** SET tag without rc **"
          echo "tag=$(echo ${{ inputs.rc_tag }} | sed -E 's|(\-.*)||')" >> $GITHUB_OUTPUT
        fi
        echo "env=$( echo $env )" >> $GITHUB_OUTPUT

    - name: check deploy_env
      shell: bash
      run: |
        echo "DEPLOY_ENV:${{ steps.set-values.outputs.deploy_env}}"
        echo "DEPLOY_ENV_2:${{ steps.set-values.outputs.deploy_env_2}}"
        echo "env:${{ steps.set-values.outputs.env}}"
        
    
