name: Release

on:
  workflow_dispatch:

jobs:
  release-prep:
    name: Prep
    runs-on: ubuntu-latest
    steps:
    - uses: earthly/actions-setup@v1
      with:
        version: v0.8.0
    - uses: actions/checkout@v4

    - name: Log in to the Container registry
      uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
      with:
        registry: ghcr.io
        username: ${{ github.actor }}
        password: ${{ secrets.GITHUB_TOKEN }}

    - name: Build all artifacts
      run: earthly --remote-cache=ghcr.io/safing/build-cache --push +release-prep

    - name: Upload Dist
      uses: actions/upload-artifact@v4
      with:
        name: dist
        path: ./dist/
        if-no-files-found: error

  installer-linux:
    name: Installer linux
    runs-on: ubuntu-latest
    needs: release-prep
    steps:
    - uses: earthly/actions-setup@v1
      with:
        version: v0.8.0
    - uses: actions/checkout@v4

    - name: Log in to the Container registry
      uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
      with:
        registry: ghcr.io
        username: ${{ github.actor }}
        password: ${{ secrets.GITHUB_TOKEN }}

    - name: Build linux installers
      run: earthly --ci --remote-cache=ghcr.io/safing/build-cache --push +installer-linux
      # --ci include --no-output flag

  installer-windows:
    name: Installer windows
    runs-on: windows-latest
    needs: release-prep
    steps:
    - name: Checkout Repository
      uses: actions/checkout@v4

    - name: Download Dist
      uses: actions/download-artifact@v4
      with:
        name: dist
        path: dist/

    - name: Build windows artifacts
      run: powershell -NoProfile -File ./packaging/windows/generate_windows_installers.ps1

