name: "Check environment variables"

env:
  PRODUCTION_ENV_VAR_FILE: helmfile/overrides/production.env

on: 
  workflow_dispatch:
  pull_request:
  
defaults:
  run:
    shell: bash

jobs:
  list-env-var-files:
    runs-on: ubuntu-latest
    outputs:
      matrix: ${{ steps.set-matrix.outputs.matrix }}
    steps:
      - uses: actions/checkout@v2
      - id: set-matrix
        run: echo "::set-output name=matrix::$(ls helmfile/overrides/*.env | grep -v $PRODUCTION_ENV_VAR_FILE | jq -R -s -c 'split("\n")[:-1]')"

  compare-to-production:
    needs: list-env-var-files
    runs-on: ubuntu-latest
    strategy:
      matrix:
        env-file: ${{ fromJson(needs.list-env-var-files.outputs.matrix) }}
    steps:
      - name: Checkout
        uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0

      - name: Get production env vars
        run: |
          ENV_KEYS_PRODUCTION="$(make env-vars ENV_FILE=$PRODUCTION_ENV_VAR_FILE)"
          echo "ENV_KEYS_PRODUCTION=$ENV_KEYS_PRODUCTION" >> $GITHUB_ENV

      - name: Get target env vars
        run: |
          ENV_KEYS="$(make env-vars ENV_FILE=${{ matrix.env-file }})"
          echo "ENV_KEYS=$ENV_KEYS" >> $GITHUB_ENV
        
      - name: Test target env vars against production
        uses: ./.github/actions/diff-env-vars
        if: always()
        with:
          env1-name: ${{ env.PRODUCTION_ENV_VAR_FILE }}
          env1-vars: ${{ env.ENV_KEYS_PRODUCTION }}
          env2-name: ${{ matrix.env-file }}
          env2-vars: ${{ env.ENV_KEYS }}