name: Release
on:
    push:
        branches:
            - main
            - dev
env:
    FORCE_COLOR: true
    GITHUB_TOKEN: ${{ secrets.ETOKEN }}

permissions: write-all

jobs:
    Build:
        name: Build Equicord
        runs-on: ubuntu-latest

        steps:
            - uses: actions/checkout@v4

            - uses: pnpm/action-setup@v3

            - name: Use Node.js 20
              uses: actions/setup-node@v4
              with:
                  node-version: 20
                  cache: "pnpm"

            - name: Install dependencies
              run: pnpm install --frozen-lockfile

            - name: Build web
              run: pnpm buildWebStandalone

            - name: Build
              run: pnpm buildStandalone

            - name: Generate plugin list
              run: pnpm generatePluginJson dist/vencordplugins.json

            - name: Generate Equicord plugin list
              run: pnpm generateEquicordPluginJson dist/equicordplugins.json

            - name: Collect files to be released
              run: |
                  cd dist
                  mkdir release

                  cp browser/browser.* release
                  cp Vencord.user.{js,js.LEGAL.txt} release

                  # copy the plugin data jsons, the extension zips and the desktop/vesktop asars
                  cp *.{json,zip,asar} release

                  # legacy un-asared files
                  # FIXME: remove at some point
                  cp desktop/* release
                  for file in vesktop/*; do
                    filename=$(basename "$file")
                    cp "$file" "release/vencordDesktop${filename^}"
                  done
                  for file in equibop/*; do
                    filename=$(basename "$file")
                    cp "$file" "release/equicordDesktop${filename^}"
                  done

                  find release -size 0 -delete
                  rm release/package.json
                  rm release/*.map

            - name: Upload Equicord Stable
              if: ${{ github.ref_name == 'main' }}
              run: |
                  gh release upload latest --clobber dist/release/*

            - name: Upload Equicord Dev
              if: ${{ github.ref_name == 'dev' }}
              run: |
                  gh release upload devbuild --clobber dist/release/*

            - name: Upload build artifact
              uses: actions/upload-artifact@v4
              with:
                  name: "build"
                  path: "dist/release/*"
