name: "Setup Shared Service"
description: "Deploy Dependencies like service_account, role ets..."
author: VelocityLight

inputs:
  PULUMI_ACCESS_TOKEN:
    required: true
    description: "pulumi token [environment variable]"
  PULUMI_CONFIG_PASSPHRASE:
    required: true
    description: "pulumi passphrase [environment variable]"
  repo:
    required: true
    description: "The github repo"
  actorGithubID:
    required: true
    description: "The github id of who triggers the action."
  source_stack_name:
    required: true
    description: "The source stack for copy"
  pulumi_dir:
    required: true
    description: "pulumi deploy stack under directory"
  pulumi-update-key-value:
    required: false
    description: "update value with key in the stack"

outputs:
  domain:
    description: "The domain to receive test requests."
    value: ${{ steps.pulumi-up.outputs.domain }}

runs:
  using: "composite"
  steps:
    - name: Compose Stack Name
      id: set-target-stack-name
      run: |
        echo "::set-output name=target_stack_name::personal-stack-${{ inputs.repo }}-${{ inputs.actorGithubID }}"
      shell: bash

    - name: Copy And Select Pulumi Stack
      uses: ./cicd-core/components/tools/pulumi-copy-stack
      with:
        PULUMI_ACCESS_TOKEN: ${{ inputs.PULUMI_ACCESS_TOKEN }}
        PULUMI_CONFIG_PASSPHRASE: ${{ inputs.PULUMI_CONFIG_PASSPHRASE }}
        pulumi_dir: ${{ inputs.pulumi_dir }}
        source_stack_name: ${{ inputs.source_stack_name }}
        target_stack_name: ${{ steps.set-target-stack-name.outputs.target_stack_name }}

    - name: Register Pulumi Stack
      uses: ./cicd-core/components/tools/register_pulumi_project
      with:
        pulumi_dir: ${{ inputs.pulumi_dir }}
        actorGithubID: ${{ inputs.actorGithubID }}

    - name: Deploy
      uses: ./cicd-core/components/cd/deploy-with-pulumi
      with:
        PULUMI_ACCESS_TOKEN: ${{ inputs.PULUMI_ACCESS_TOKEN }}
        PULUMI_CONFIG_PASSPHRASE: ${{ inputs.PULUMI_CONFIG_PASSPHRASE }}
        pulumi_dir: ${{ inputs.pulumi_dir }}
        pulumi_stack: ${{ steps.set-target-stack-name.outputs.target_stack_name }}
        pulumi-update-key-value: ${{ inputs.pulumi-update-key-value }}
