name: Bubble--Remove Single Preview App

on:
  workflow_dispatch:
    inputs:
      bucket:
        required: true
        type: string
      distro:
        required: true
        type: string
      lambda:
        required: true
        type: string

jobs:
  delete-resource-set:
    name: Pop Bubble
    runs-on: ubuntu-latest

    env:
      AWS_ACCESS_KEY_ID: ${{ secrets.BUBBLE_AWS_ACCESS_KEY_ID }}
      AWS_SECRET_ACCESS_KEY: ${{ secrets.BUBBLE_AWS_SECRET_ACCESS_KEY }}
      AWS_REGION: ${{ secrets.AWS_REGION || 'us-east-1' }}
      REPO_NAME: ${{ github.event.repository.name }}
    steps:
      - name: Missing AWS Credentials
        if: ${{ !env.AWS_SECRET_ACCESS_KEY && !env.AWS_ACCESS_KEY_ID }}
        run: exit 1
      - uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ env.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ env.AWS_SECRET_ACCESS_KEY }}
          aws-region: ${{ env.AWS_REGION }}

      - name: Delete S3 Bucket
        run: aws s3 rb s3://${{ inputs.bucket }} --force || echo "Bucket ${{ inputs.bucket }} could not be deleted" && continue

      - name: Delete Cloudfront Distribution
        run: |
          sudo apt-get update
          sudo apt-get -y install jq
          aws cloudfront get-distribution-config --id ${{ inputs.distro }} | jq .DistributionConfig.Enabled=false > tmp.json
          jq -r .DistributionConfig tmp.json > tmp2.json
          aws cloudfront update-distribution --id ${{ inputs.distro }} --if-match $(jq .ETag tmp.json -r) --distribution-config file://tmp2.json
          aws cloudfront wait distribution-deployed --id ${{ inputs.distro }}
          aws cloudfront delete-distribution --id ${{ inputs.distro }} --if-match $(aws cloudfront get-distribution-config --id ${{ inputs.distro }} | jq .ETag -r)

      - name: Delete Lambdas
        run: |
          FUNCTIONS=$(aws lambda list-functions --region us-east-1 --query "Functions[?starts_with(FunctionName, '${{ inputs.lambda }}')].FunctionName" --output text)
          for FUNCTION in $FUNCTIONS
            do
              aws lambda delete-function --function-name $FUNCTION || echo "Lambda function $FUNCTION could not be deleted" && continue
            done
