name: Release-Win
on:
  push:
    tags:
      - 'v*'

jobs:
  build-windows:
    runs-on: windows-2019
    steps:
      -
        name: Checkout
        uses: actions/checkout@v4
        with:
          path: hydrus
      -
        name: Setup Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.10'
          architecture: x64
      -
        name: Pip Install
        run: python3 -m pip install -r hydrus/static/build_files/windows/requirements.txt
      - 
        name: Build docs to /help
        run: mkdocs build -d help
        working-directory: hydrus
      -
        name: Download mpv-dev
        run: Invoke-WebRequest -Uri "https://sourceforge.net/projects/mpv-player-windows/files/libmpv/mpv-dev-x86_64-20230212-git-a40958c.7z" -OutFile "mpv-dev-x86_64.7z" -Headers @{ "User-Agent" = "LetMeIn" }
      -
        name: Process mpv-dev
        run: |
          7z x mpv-dev-x86_64.7z -ompv
          move mpv\libmpv-2.dll hydrus\mpv-2.dll
      -
        name: Download ffmpeg
        run: Invoke-WebRequest -Uri "https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-full.7z" -OutFile "ffmpeg-release-full.7z"
      -
        name: Process ffmpeg
        run: |
          7z e ffmpeg-release-full.7z -ohydrus/bin "**/bin/ffmpeg.exe"
      -
        name: Build Hydrus
        run: |
          move hydrus\static\build_files\windows\sqlite3.dll hydrus\
          move hydrus\static\build_files\windows\sqlite3.exe hydrus\db
          move hydrus\static\build_files\windows\file_version_info_maker.py file_version_info_maker.py
          python file_version_info_maker.py ${{ github.ref_name }}
          move hydrus\static\build_files\windows\hydrus_client.spec hydrus_client.spec
          move hydrus\static\build_files\windows\hydrus_server.spec hydrus_server.spec
          pyinstaller hydrus_server.spec
          pyinstaller hydrus_client.spec
          move dist\hydrus_client "dist\Hydrus Network"
      -
        # yo pretty sure we'll need to install this manually once we are on windows server 2022
        # https://github.com/actions/virtual-environments/issues/4856
        name: InnoSetup
        run: |
          move hydrus\static\build_files\windows\InnoSetup.iss InnoSetup.iss
          ISCC.exe InnoSetup.iss /DVersion=${{ github.ref_name }}
      -
        name: Compress Client
        run: |
          cd .\dist
          7z.exe a -tzip -mm=Deflate -mx=5 Windows-Extract.zip 'Hydrus Network'
          cd ..
      -
        name: Extract Version Metadata
        id: meta
        run: |
          $vs = "${{ github.ref_name }}".Substring(1)
          echo "version_short=$vs" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
      -
        name: Rename Files
        run: |
          move dist\HydrusInstaller.exe Hydrus.Network.${{ env.version_short }}.-.Windows.-.Installer.exe
          move dist\Windows-Extract.zip Hydrus.Network.${{ env.version_short }}.-.Windows.-.Extract.only.zip
      - 
        name: Upload Files
        uses: softprops/action-gh-release@ 4634c16e79c963813287e889244c50009e7f0981
        if: startsWith(github.ref, 'refs/tags/')
        with:
          files: |
            Hydrus.Network.${{ env.version_short }}.-.Windows.-.Installer.exe
            Hydrus.Network.${{ env.version_short }}.-.Windows.-.Extract.only.zip
