name: Upload Release Build

on: 
  release:
    types: [published]

jobs:

  build:
    name: Upload Release
    runs-on: ubuntu-latest

    steps:
      # Initialization
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: '18'
      - run: npm ci
      - name: Copy configuration
        run: cp config.json.example config.json
      
      # Create Chrome artifacts
      - name: Create Chrome artifacts
        run: npm run build:chrome
      - uses: actions/upload-artifact@v2
        with:
          name: ChromeExtension
          path: dist
      - run: mkdir ./builds
      - name: Zip Artifacts
        run: cd ./dist ; zip -r ../builds/ChromeExtension.zip *

      # Create Firefox artifacts
      - name: Create Firefox artifacts
        run: npm run build:firefox
      - uses: actions/upload-artifact@v2
        with:
          name: FirefoxExtension
          path: dist
      - name: Zip Artifacts
        run: cd ./dist ; zip -r ../builds/FirefoxExtension.zip *

      # Create Beta artifacts (Builds with the name changed to beta)
      - name: Create Chrome Beta artifacts
        run: npm run build:chrome -- --env stream=beta
      - uses: actions/upload-artifact@v2
        with:
          name: ChromeExtensionBeta
          path: dist
      - name: Zip Artifacts
        run: cd ./dist ; zip -r ../builds/ChromeExtensionBeta.zip *


      # Create Safari artifacts
      - name: Create Safari artifacts
        run: npm run build:safari
      - uses: actions/upload-artifact@v2
        with:
          name: SafariExtension
          path: dist
      - name: Zip Artifacts
        run: cd ./dist ; zip -r ../builds/SafariExtension.zip *
      # Create Edge artifacts
      - name: Clear dist for Edge
        run: rm -rf ./dist
      - name: Create Edge artifacts
        run: npm run build:edge
      - uses: actions/upload-artifact@v2
        with:
          name: EdgeExtension
          path: dist
      - name: Zip Artifacts
        run: cd ./dist ; zip -r ../builds/EdgeExtension.zip *

      # Upload each release asset
      - name: Upload ChromeExtension to release
        uses: Shopify/upload-to-release@master
        with:
          args: builds/ChromeExtension.zip
          name: ChromeExtension.zip
          path: ./builds/ChromeExtension.zip
          repo-token: ${{ secrets.GITHUB_TOKEN }}
      - name: Upload ChromeExtensionBeta to release
        uses: Shopify/upload-to-release@master
        with:
          args: builds/ChromeExtensionBeta.zip
          name: ChromeExtensionBeta.zip
          path: ./builds/ChromeExtensionBeta.zip
          repo-token: ${{ secrets.GITHUB_TOKEN }}
      - name: Upload FirefoxExtension to release
        uses: Shopify/upload-to-release@master
        with:
          args: builds/FirefoxExtension.zip
          name: FirefoxExtension.zip
          path: ./builds/FirefoxExtension.zip
          repo-token: ${{ secrets.GITHUB_TOKEN }}
      - name: Upload SafariExtension to release
        uses: Shopify/upload-to-release@master
        with:
          args: builds/SafariExtension.zip
          name: SafariExtension.zip
          path: ./builds/SafariExtension.zip
          repo-token: ${{ secrets.GITHUB_TOKEN }}
      - name: Upload EdgeExtension to release
        uses: Shopify/upload-to-release@master
        with:
          args: builds/EdgeExtension.zip
          name: EdgeExtension.zip
          path: ./builds/EdgeExtension.zip
          repo-token: ${{ secrets.GITHUB_TOKEN }}

      # Firefox Beta
      - name: Create Firefox Beta artifacts
        run: npm run build:firefox -- --env stream=beta
      - uses: actions/upload-artifact@v2
        with:
          name: FirefoxExtensionBeta
          path: dist
      - name: Zip Artifacts
        run: cd ./dist ; zip -r ../builds/FirefoxExtensionBeta.zip *

      # Create Firefox Signed Beta version
      - name: Create Firefox Signed Beta artifacts
        run: npm run web-sign
        env:
          WEB_EXT_API_KEY: ${{ secrets.WEB_EXT_API_KEY }}
          WEB_EXT_API_SECRET: ${{ secrets.WEB_EXT_API_SECRET }}
      - name: Install rename
        run: sudo apt-get install rename
      - name: Rename signed file
        run: cd ./web-ext-artifacts ; rename 's/.*/FirefoxSignedInstaller.xpi/' *
      - uses: actions/upload-artifact@v2
        with:
          name: FirefoxExtensionSigned.xpi
          path: ./web-ext-artifacts/FirefoxSignedInstaller.xpi

      - name: Upload FirefoxSignedInstaller.xpi to release
        uses: Shopify/upload-to-release@master
        with:
          args: web-ext-artifacts/FirefoxSignedInstaller.xpi
          name: FirefoxSignedInstaller.xpi
          path: ./web-ext-artifacts/FirefoxSignedInstaller.xpi
          repo-token: ${{ secrets.GITHUB_TOKEN }}

