name: "Pulumi Overlay Stack"
description: "Overlay pulumi configs: cover base_stack configs using overlay_stack configs"
author: MimeLyc

inputs:
  PULUMI_ACCESS_TOKEN:
    required: true
    description: "pulumi token [environment variable]"
  PULUMI_CONFIG_PASSPHRASE:
    required: true
    description: "pulumi passphrase [environment variable]"
  pulumi_dir:
    description: "pulumi dictionary"
    required: true
  source_stack_name:
    description: "source stack name"
    required: true
  overlay_stack_name:
    description: "overlay stack name"
    required: true

runs:
  using: "composite"
  steps:
    - uses: pulumi/setup-pulumi@v2

    - name: copy script
      run: |
        cp ${{ env.script-directory }}/overlay.sh ${{ inputs.pulumi_dir }}/overlay.sh
      env:
        script-directory: cicd-core/components/tools/pulumi-overlay-stack
      shell: bash

    - name: ensure pulumi stack and make the overlay
      working-directory: ${{ inputs.pulumi_dir }}
      run: |
        # ensure source stack is existed.
        pulumi stack select ${{ inputs.source_stack_name }} --create
        pulumi stack select ${{ inputs.overlay_stack_name }} --create

        bash overlay.sh ${{ inputs.source_stack_name }} ${{ inputs.overlay_stack_name }}

        # output overlayed configs
        pulumi config
      env:
        PULUMI_ACCESS_TOKEN: ${{ inputs.PULUMI_ACCESS_TOKEN }}
        PULUMI_CONFIG_PASSPHRASE: ${{ inputs.PULUMI_CONFIG_PASSPHRASE }}
      shell: sh
