name: Netlify Main
on:
  workflow_run:
    workflows: ["Build"]
    types:
      - completed

jobs:
  deploy:
    runs-on: ubuntu-latest
    permissions:
      deployments: write
    if: github.event.workflow_run.conclusion == 'success'
    steps:
      - name: Create Deployment
        uses: bobheadxi/deployments@v1
        id: deployment
        with:
          step: start
          token: ${{ secrets.GITHUB_TOKEN }}
          env: main-branch-cd
          ref: ${{ github.event.workflow_run.head_sha }}

      - name: 'Download artifact'
        uses: actions/github-script@v3.1.0
        with:
          script: |
            const artifacts = await github.actions.listWorkflowRunArtifacts({
                owner: context.repo.owner,
                repo: context.repo.repo,
                run_id: ${{ github.event.workflow_run.id }},
            });
            const matchArtifact = artifacts.data.artifacts.filter((artifact) => {
                return artifact.name == "build"
            })[0];
            const download = await github.actions.downloadArtifact({
                owner: context.repo.owner,
                repo: context.repo.repo,
                artifact_id: matchArtifact.id,
                archive_format: 'zip',
            });
            const fs = require('fs');
            fs.writeFileSync('${{github.workspace}}/build.zip', Buffer.from(download.data));

      - name: Extract Artifacts
        run: unzip -d dist build.zip && rm build.zip

      - name: Add redirects file
        # We fetch from github directly as we don't bother checking out the repo
        run: curl -s https://raw.githubusercontent.com/vector-im/element-call/main/config/netlify_redirects > dist/_redirects

      - name: Add config file
        run: curl -s https://raw.githubusercontent.com/vector-im/element-call/main/config/element_io_develop.json > dist/config.json

      - name: Deploy to Netlify
        id: netlify
        uses: nwtgck/actions-netlify@v1.2.3
        with:
          publish-dir: dist
          deploy-message: "Deploy from GitHub Actions"
          production-branch: main
          production-deploy: true
          # These don't work because we're in workflow_run
          enable-pull-request-comment: false
          enable-commit-comment: false
          github-deployment-environment: main
        env:
          NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
          NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
        timeout-minutes: 1

      - name: Update deployment status
        uses: bobheadxi/deployments@v1
        if: always()
        with:
          step: finish
          override: false
          token: ${{ secrets.GITHUB_TOKEN }}
          status: ${{ job.status }}
          env: ${{ steps.deployment.outputs.env }}
          deployment_id: ${{ steps.deployment.outputs.deployment_id }}
          env_url: ${{ steps.netlify.outputs.deploy-url }}
