name: Build DevBuild
on:
  push:
    branches:
      - main
    paths:
      - .github/workflows/build.yml
      - src/**
      - browser/**
      - scripts/build/**
      - package.json
      - pnpm-lock.yaml
env:
  FORCE_COLOR: true

jobs:
  DetermineRunner:
    name: Determine Runner
    runs-on: ubuntu-latest
    outputs:
      runner: ${{ steps.set-runner.outputs.runner }}
    steps:
      - name: Determine which runner to use
        id: set-runner
        uses: benjaminmichaelis/get-soonest-available-runner@v1.1.0
        with:
          primary-runner: "self-hosted"
          fallback-runner: "ubuntu-latest"
          min-available-runners: 1
          github-token: ${{ env.GITHUB_TOKEN }}
        env:
          GITHUB_TOKEN: ${{ secrets.ETOKEN }}

  Build:
    name: Build Equicord
    needs: DetermineRunner
    runs-on: ${{ needs.DetermineRunner.outputs.runner}}

    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 buildWeb --standalone

      - name: Build
        run: pnpm build --standalone

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

      - name: Clean up obsolete files
        run: |
          rm -rf dist/*-unpacked dist/monaco Vencord.user.css vencordDesktopRenderer.css vencordDesktopRenderer.css.map

      - name: Upload DevBuild as release
        if: github.repository == 'Equicord/Equicord'
        run: |
          gh release upload latest --clobber dist/*
        env:
          GITHUB_TOKEN: ${{ secrets.ETOKEN }}