name: Electron app PREMIUM

on:
  push:
    tags:
      - 'v[0-9]+.[0-9]+.[0-9]+'
      # - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10

    # branches:
    #   - production

jobs:
  build:
    runs-on: ${{ matrix.os }}

    strategy:
      fail-fast: false
      matrix:
        # os: [ubuntu-22.04, windows-2016]
        os: [macos-14, windows-2022, ubuntu-22.04]

    steps:
      - name: Context
        env:
          GITHUB_CONTEXT: ${{ toJson(github) }}
        run: echo "$GITHUB_CONTEXT"
      - uses: actions/checkout@v2
        with:
          fetch-depth: 1
      - name: Use Node.js 18.x
        uses: actions/setup-node@v1
        with:
          node-version: 18.x

      - name: Checkout dbgate/dbgate-pro
        uses: actions/checkout@v2
        with:
          repository: dbgate/dbgate-pro
          token: ${{ secrets.GH_TOKEN }}
          path: dbgate-pro

      - name: Merge dbgate/dbgate-pro
        run: |
          mkdir ../dbgate-pro
          mv dbgate-pro/* ../dbgate-pro/
          cd ..
          mkdir dbgate-merged
          cd dbgate-pro
          cd sync
          yarn
          node sync.js --nowatch
          cd ..

      - name: yarn adjustPackageJson
        run: |
          cd ..
          cd dbgate-merged
          yarn adjustPackageJson
      - name: adjustAppPackageJsonPremium
        run: |
          cd ..
          cd dbgate-merged
          node adjustAppPackageJsonPremium
      - name: setUpdaterChannel premium
        run: |
          cd ..
          cd dbgate-merged
          node setUpdaterChannel premium
      - name: yarn set timeout
        run: |
          cd ..
          cd dbgate-merged
          yarn config set network-timeout 100000
      - name: yarn install
        run: |
          cd ..
          cd dbgate-merged
          yarn install
      - name: setCurrentVersion
        run: |
          cd ..
          cd dbgate-merged
          yarn setCurrentVersion
      - name: printSecrets
        run: |
          cd ..
          cd dbgate-merged
          yarn printSecrets
        env:
          GIST_UPLOAD_SECRET : ${{secrets.GIST_UPLOAD_SECRET}}
      - name: fillPackagedPlugins
        run: |
          cd ..
          cd dbgate-merged
          yarn fillPackagedPlugins
      - name: Publish
        run: |
          cd ..
          cd dbgate-merged
          yarn run build:app
        env:
          GH_TOKEN: ${{ secrets.GH_TOKEN }} # token for electron publish

          WIN_CSC_LINK: ${{ secrets.WINCERT_2025 }}
          WIN_CSC_KEY_PASSWORD: ${{ secrets.WINCERT_2025_PASSWORD }}
          # WIN_CSC_LINK: ${{ secrets.WINCERT_CERTIFICATE }}
          # WIN_CSC_KEY_PASSWORD: ${{ secrets.WINCERT_PASSWORD }}

          CSC_LINK: ${{ secrets.APPLECERT_CERTIFICATE }}
          CSC_KEY_PASSWORD: ${{ secrets.APPLECERT_PASSWORD }}

          APPLE_ID: ${{ secrets.APPLE_ID }}
          APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
          APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}

      - name: Copy artifacts
        run: |
          mkdir artifacts          

          cp ../dbgate-merged/app/dist/*x86*.AppImage artifacts/dbgate-premium-latest.AppImage || true
          cp ../dbgate-merged/app/dist/*.exe artifacts/dbgate-premium-latest.exe || true
          cp ../dbgate-merged/app/dist/*win_x64.zip artifacts/dbgate-premium-windows-latest.zip || true
          cp ../dbgate-merged/app/dist/*win_arm64.zip artifacts/dbgate-premium-windows-latest-arm64.zip || true
          cp ../dbgate-merged/app/dist/*-mac_universal.dmg artifacts/dbgate-premium-latest.dmg || true
          cp ../dbgate-merged/app/dist/*-mac_x64.dmg artifacts/dbgate-premium-latest-x64.dmg || true
          cp ../dbgate-merged/app/dist/*-mac_arm64.dmg artifacts/dbgate-premium-latest-arm64.dmg || true

          mv ../dbgate-merged/app/dist/*.exe artifacts/ || true
          mv ../dbgate-merged/app/dist/*.zip artifacts/ || true
          mv ../dbgate-merged/app/dist/*.tar.gz artifacts/ || true
          mv ../dbgate-merged/app/dist/*.AppImage artifacts/ || true
          mv ../dbgate-merged/app/dist/*.deb artifacts/ || true
          mv ../dbgate-merged/app/dist/*.dmg artifacts/ || true
          mv ../dbgate-merged/app/dist/*.blockmap artifacts/ || true

          mv ../dbgate-merged/app/dist/*.yml artifacts/ || true
          rm artifacts/builder-debug.yml

      - name: Upload artifacts
        uses: actions/upload-artifact@v4
        with:
          name: ${{ matrix.os }}
          path: artifacts

      - name: Release
        uses: softprops/action-gh-release@v1
        if: startsWith(github.ref, 'refs/tags/')
        with:
          files: 'artifacts/**'
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
