diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 0a84d141..15ca0911 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -945,81 +945,3 @@ jobs:
else
echo "note: AUR_SSH_PRIVATE_KEY not set; skipping automated AUR publish"
fi
-
-
- # ------------------------------------------------------------- Chocolatey
- #
- # Its own job, on a Windows runner, because `choco pack` and `choco push`
- # need Chocolatey itself. scripts/update-choco.sh bumps packaging/choco to
- # the release (version, x64 + ARM64 installer URLs and their SHA256s from
- # the freshly built installers), packs it and pushes the .nupkg to the
- # community repository. It then opens a pull request carrying that bump so
- # packageSourceUrl on main matches what the moderators see: main cannot be
- # pushed directly, its ruleset requires the CI status checks.
- publish-choco:
- name: Publish to Chocolatey
- runs-on: windows-latest
- needs: [verify-version, release]
- if: github.ref_type == 'tag' && needs.verify-version.outputs.prerelease == 'false'
- permissions:
- contents: write
- pull-requests: write
- env:
- VERSION: ${{ needs.verify-version.outputs.version }}
- steps:
- - name: Checkout repository
- uses: actions/checkout@v4
-
- - name: Download Windows installers
- uses: actions/download-artifact@v4
- with:
- pattern: hydra-windows-*
- path: dist
- merge-multiple: true
-
- - name: Bump, pack and push package
- shell: bash
- env:
- CHOCO_API_KEY: ${{ secrets.CHOCO_API_KEY }}
- run: |
- set -euo pipefail
- if [ -z "${CHOCO_API_KEY:-}" ]; then
- echo "note: CHOCO_API_KEY not set; skipping Chocolatey publish"
- echo "published=false" >> "$GITHUB_OUTPUT"
- exit 0
- fi
- ls -lh dist/
- scripts/update-choco.sh "$VERSION" dist --push
- echo "published=true" >> "$GITHUB_OUTPUT"
- id: push
-
- # The bump is re-applied on top of origin/main rather than carried
- # over from the tag's tree, so the PR only ever touches the four
- # values that changed. Force-push, since a re-run of the release
- # recreates the same branch.
- - name: Open pull request with the package bump
- if: steps.push.outputs.published == 'true'
- shell: bash
- env:
- GH_TOKEN: ${{ github.token }}
- run: |
- set -euo pipefail
- BRANCH="chore/choco-v${VERSION}"
- git checkout -- packaging/choco
- git fetch origin main
- git checkout -B "$BRANCH" origin/main
- scripts/update-choco.sh "$VERSION" dist
- git config user.name "github-actions[bot]"
- git config user.email "github-actions[bot]@users.noreply.github.com"
- git add packaging/choco
- if git diff --staged --quiet; then
- echo "main already carries the Chocolatey bump for v${VERSION}"
- exit 0
- fi
- git commit -m "chore(choco): bump to v${VERSION}"
- git push --force origin "$BRANCH"
- if [ -z "$(gh pr list --head "$BRANCH" --base main --state open --json number --jq '.[].number')" ]; then
- gh pr create --base main --head "$BRANCH" \
- --title "chore(choco): bump to v${VERSION}" \
- --body "Chocolatey package bumped to v${VERSION} by the release workflow: version, x64 + ARM64 installer URLs and SHA256 checksums in \`packaging/choco\`. The matching \`hydra-download-manager.${VERSION}.nupkg\` was pushed to the community repository."
- fi
diff --git a/packaging/choco/ReadMe.md b/packaging/choco/ReadMe.md
deleted file mode 100644
index 9294398d..00000000
--- a/packaging/choco/ReadMe.md
+++ /dev/null
@@ -1,133 +0,0 @@
-## Summary
-How do I create packages? See https://docs.chocolatey.org/en-us/create/create-packages
-
-If you are submitting packages to the community feed (https://community.chocolatey.org)
-always try to ensure you have read, understood and adhere to the create
-packages wiki link above.
-
-## Automatic Packaging Updates?
-Consider making this package an automatic package, for the best
-maintainability over time. Read up at https://docs.chocolatey.org/en-us/create/automatic-packages
-
-## Shim Generation
-Any executables you include in the package or download (but don't call
-install against using the built-in functions) will be automatically shimmed.
-
-This means those executables will automatically be included on the path.
-Shim generation runs whether the package is self-contained or uses automation
-scripts.
-
-By default, these are considered console applications.
-
-If the application is a GUI, you should create an empty file next to the exe
-named 'name.exe.gui' e.g. 'bob.exe' would need a file named 'bob.exe.gui'.
-See https://docs.chocolatey.org/en-us/create/create-packages#how-do-i-set-up-shims-for-applications-that-have-a-gui
-
-If you want to ignore the executable, create an empty file next to the exe
-named 'name.exe.ignore' e.g. 'bob.exe' would need a file named
-'bob.exe.ignore'.
-See https://docs.chocolatey.org/en-us/create/create-packages#how-do-i-exclude-executables-from-getting-shims
-
-## Self-Contained?
-If you have a self-contained package, you can remove the automation scripts
-entirely and just include the executables, they will automatically get shimmed,
-which puts them on the path. Ensure you have the legal right to distribute
-the application though. See https://docs.chocolatey.org/en-us/information/legal.
-
-You should read up on the Shim Generation section to familiarize yourself
-on what to do with GUI applications and/or ignoring shims.
-
-## Automation Scripts
-You have a powerful use of Chocolatey, as you are using PowerShell. So you
-can do just about anything you need. Choco has some very handy built-in
-functions that you can use, these are sometimes called the helpers.
-
-### Built-In Functions
-https://docs.chocolatey.org/en-us/create/functions
-
-A note about a couple:
-* Get-ToolsLocation - used to get you the 'tools' root, which by default is set to 'c:\tools', not the chocolateyInstall bin folder - see https://docs.chocolatey.org/en-us/create/functions/get-toolslocation
-* Install-BinFile - used for non-exe files - executables are automatically shimmed... - see https://docs.chocolatey.org/en-us/create/functions/install-binfile
-* Uninstall-BinFile - used for non-exe files - executables are automatically shimmed - see https://docs.chocolatey.org/en-us/create/functions/uninstall-binfile
-
-### Getting package specific information
-Use the package parameters pattern - see https://docs.chocolatey.org/en-us/guides/create/parse-packageparameters-argument
-
-### Need to mount an ISO?
-https://docs.chocolatey.org/en-us/guides/create/mount-an-iso-in-chocolatey-package
-
-### Environment Variables
-Chocolatey makes a number of environment variables available (You can access any of these with $env:TheVariableNameBelow):
-
- * TEMP/TMP - Overridden to the CacheLocation, but may be the same as the original TEMP folder
- * ChocolateyInstall - Top level folder where Chocolatey is installed
- * chocolateyPackageName - The name of the package, equivalent to the `` field in the nuspec
- * chocolateyPackageTitle - The title of the package, equivalent to the `
` field in the nuspec
- * chocolateyPackageVersion - The normalized version of the package, equivalent to a normalized edition of the `` field in the nuspec
- * chocolateyPackageFolder - The top level location of the package folder - the folder where Chocolatey has downloaded and extracted the NuGet package, typically `C:\ProgramData\chocolatey\lib\packageName`.
-
-#### Advanced Environment Variables
-The following are more advanced settings:
-
- * chocolateyPackageParameters - Parameters to use with packaging, not the same as install arguments (which are passed directly to the native installer). Based on `--package-parameters`.
- * CHOCOLATEY_VERSION - The version of Choco you normally see. Use if you are 'lighting' things up based on choco version. Otherwise take a dependency on the specific version you need.
- * chocolateyForceX86 = If available and set to 'true', then user has requested 32bit version. Automatically handled in built in Choco functions.
- * OS_PLATFORM - Like Windows, macOS, Linux.
- * OS_VERSION - The version of OS, like 10.0 something something for Windows.
- * OS_NAME - The reported name of the OS.
- * USER_NAME = The user name
- * USER_DOMAIN = The user domain name (could also be local computer name)
- * IS_PROCESSELEVATED = Is the process elevated?
- * IS_SYSTEM = Is the user the system account?
- * IS_REMOTEDESKTOP = Is the user in a terminal services session?
- * ChocolateyToolsLocation - formerly 'ChocolateyBinRoot' ('ChocolateyBinRoot' will be removed with Chocolatey v2.0.0), this is where tools being installed outside of Chocolatey packaging will go.
-
-#### Set By Options and Configuration
-Some environment variables are set based on options that are passed, configuration and/or features that are turned on:
-
- * ChocolateyEnvironmentDebug - Was `--debug` passed? If using the built-in PowerShell host, this is always true (but only logs debug messages to console if `--debug` was passed)
- * ChocolateyEnvironmentVerbose - Was `--verbose` passed? If using the built-in PowerShell host, this is always true (but only logs verbose messages to console if `--verbose` was passed).
- * ChocolateyExitOnRebootDetected - Are we exiting on a detected reboot? Set by ` --exit-when-reboot-detected` or the feature `exitOnRebootDetected`
- * ChocolateyForce - Was `--force` passed?
- * chocolateyForceX86 - Was `-x86` passed?
- * chocolateyRequestTimeout - How long before a web request will time out. Set by config `webRequestTimeoutSeconds`
- * chocolateyResponseTimeout - How long to wait for a download to complete? Set by config `commandExecutionTimeoutSeconds`
- * ChocolateyPowerShellHost - Are we using the built-in PowerShell host? Set by `--use-system-powershell` or the feature `powershellHost`
-
-#### Business Edition Variables
-
- * ChocolateyInstallArgumentsSensitive - Encrypted arguments passed from command line `--install-arguments-sensitive` that are not logged anywhere.
- * ChocolateyPackageParametersSensitive - Package parameters passed from command line `--package-parameters-sensitive` that are not logged anywhere.
- * ChocolateyLicensedVersion - What version is the licensed edition on?
- * ChocolateyLicenseType - What edition / type of the licensed edition is installed?
- * USER_CONTEXT - The original user context - different when self-service is used (Licensed)
-
-#### Experimental Environment Variables
-The following are experimental or use not recommended:
-
- * OS_IS64BIT = This may not return correctly - it may depend on the process the app is running under
- * CHOCOLATEY_VERSION_PRODUCT = the version of Choco that may match CHOCOLATEY_VERSION but may be different - based on git describe
- * IS_ADMIN = Is the user an administrator? But doesn't tell you if the process is elevated.
- * IS_REMOTE = Is the user in a remote session?
-
-#### Not Useful Or Anti-Pattern If Used
-
- * chocolateyInstallOverride = Not for use in package automation scripts. Based on `--override-arguments` being passed.
- * chocolateyInstallArguments = The installer arguments meant for the native installer. You should use chocolateyPackageParameters instead. Based on `--install-arguments` being passed.
- * ChocolateyIgnoreChecksums - Was `--ignore-checksums` passed or the feature `checksumFiles` turned off?
- * ChocolateyAllowEmptyChecksums - Was `--allow-empty-checksums` passed or the feature `allowEmptyChecksums` turned on?
- * ChocolateyAllowEmptyChecksumsSecure - Was `--allow-empty-checksums-secure` passed or the feature `allowEmptyChecksumsSecure` turned on?
- * chocolateyChecksum32 - Was `--download-checksum` passed?
- * chocolateyChecksumType32 - Was `--download-checksum-type` passed?
- * chocolateyChecksum64 - Was `--download-checksum-x64` passed?
- * chocolateyChecksumType64 - Was `--download-checksum-type-x64` passed?
- * ChocolateyExitCode - The exit code of the script that just ran - usually set by `Set-PowerShellExitCode`
- * ChocolateyLastPathUpdate - Set by Chocolatey as part of install, but not used for anything in particular in packaging.
- * chocolateyProxyLocation - The explicit proxy location as set in the configuration `proxy`
- * ChocolateyDownloadCache - Use available download cache? Set by `--skip-download-cache`, `--use-download-cache`, or feature `downloadCache`
- * chocolateyProxyBypassList - Explicitly set locations to ignore in configuration `proxyBypassList`
- * chocolateyProxyBypassOnLocal - Should the proxy bypass on local connections? Set based on configuration `proxyBypassOnLocal`
- * http_proxy - Set by original `http_proxy` passthrough, or same as `chocolateyProxyLocation` if explicitly set.
- * https_proxy - Set by original `https_proxy` passthrough, or same as `chocolateyProxyLocation` if explicitly set.
- * no_proxy - Set by original `no_proxy` passthrough, or same as `chocolateyProxyBypassList` if explicitly set.
-
diff --git a/packaging/choco/_TODO.txt b/packaging/choco/_TODO.txt
deleted file mode 100644
index 50bca03a..00000000
--- a/packaging/choco/_TODO.txt
+++ /dev/null
@@ -1,131 +0,0 @@
-TODO
-
-1. Determine Package Use:
-
- Organization? Internal Use? - You are not subject to distribution
- rights when you keep everything internal. Put the binaries directly
- into the tools directory (as long as total nupkg size is under 1GB).
- When bigger, look to use from a share or download binaries from an
- internal location. Embedded binaries makes for the most reliable use
- of Chocolatey. Use `$fileLocation` (`$file`/`$file64`) and
- `Install-ChocolateyInstallPackage`/`Get-ChocolateyUnzip` in
- tools\chocolateyInstall.ps1.
-
- You can also choose to download from internal urls, see the next
- section, but ignore whether you have distribution rights or not, it
- doesn't apply. Under no circumstances should download from the
- internet, it is completely unreliable. See
- https://docs.chocolatey.org/en-us/community-repository/community-packages-disclaimer
- to understand the limitations of a publicly available repository.
-
- Community Repository?
- Have Distribution Rights?
- If you are the software vendor OR the software EXPLICITLY allows
- redistribution and the total nupkg size will be under 200MB, you
- have the option to embed the binaries directly into the package to
- provide the most reliable install experience. Put the binaries
- directly into the tools folder, use `$fileLocation` (`$file`/
- `$file64`) and `Install-ChocolateyInstallPackage`/
- `Get-ChocolateyUnzip` in tools\chocolateyInstall.ps1. Additionally,
- fill out the LICENSE and VERIFICATION file (see 3 below and those
- files for specifics).
-
- NOTE: You can choose to download binaries at runtime, but be sure
- the download location will remain stable. See the next section.
-
- Do Not Have Distribution Rights?
- - Note: Packages built this way cannot be 100% reliable, but it's a
- constraint of publicly available packages and there is little
- that can be done to change that. See
- https://docs.chocolatey.org/en-us/community-repository/community-packages-disclaimer
- to better understand the limitations of a publicly available
- repository.
- Download Location is Publicly Available?
- You will need to download the runtime files from their official
- location at runtime. Use `$url`/`$url64` and
- `Install-ChocolateyPackage`/`Install-ChocolateyZipPackage` in
- tools\chocolateyInstall.ps1.
- Download Location is Not Publicly Available?
- Stop here, you can't push this to the community repository. You
- can ask the vendor for permission to embed, then include a PDF of
- that signed permission directly in the package. Otherwise you
- will need to seek alternate locations to non-publicly host the
- package.
- Download Location Is Same For All Versions?
- You still need to point to those urls, but you may wish to set up
- something like Automatic Updater (AU) so that when a new version
- of the software becomes available, the new package version
- automatically gets pushed up to the community repository. See
- https://docs.chocolatey.org/en-us/create/automatic-packages#automatic-updater-au
-
-2. Determine Package Type:
-
-- Installer Package - contains an installer (everything in template is
- geared towards this type of package)
-- Zip Package - downloads or embeds and unpacks archives, may unpack
- and run an installer using `Install-ChocolateyInstallPackage` as a
- secondary step.
-- Portable Package - Contains runtime binaries (or unpacks them as a
- zip package) - cannot require administrative permissions to install
- or use
-- Config Package - sets config like files, registry keys, etc
-- Extension Package - Packages that add PowerShell functions to
- Chocolatey - https://docs.chocolatey.org/en-us/features/extensions
-- Template Package - Packages that add templates like this for `choco
- new -t=name` - https://docs.chocolatey.org/en-us/guides/create/create-custom-package-templates
-- Other - there are other types of packages as well, these are the main
- package types seen in the wild
-
-3. Fill out the package contents:
-
-- tools\chocolateyBeforeModify.ps1 - remove if you have no processes
- or services to shut down before upgrade/uninstall
-- tools\LICENSE.txt / tools\VERIFICATION.txt - Remove if you are not
- embedding binaries. Keep and fill out if you are embedding binaries
- in the package AND pushing to the community repository, even if you
- are the author of software. The file becomes easier to fill out
- (does not require changes each version) if you are the software
- vendor. If you are building packages for internal use (organization,
- etc), you don't need these files as you are not subject to
- distribution rights internally.
-- tools\chocolateyUninstall.ps1 - remove if autouninstaller can
- automatically uninstall and you have nothing additional to do during
- uninstall
-- Readme.txt - delete this file once you have read over and used
- anything you've needed from here
-- nuspec - fill this out, then clean out all the comments (you may wish
- to leave the headers for the package vs software metadata)
-- tools\chocolateyInstall.ps1 - instructions in next section.
-
-4. ChocolateyInstall.ps1:
-
-- For embedded binaries - use `$fileLocation` (`$file`/`$file64`) and
- `Install-ChocolateyInstallPackage`/ `Get-ChocolateyUnzip`.
-- Downloading binaries at runtime - use `$url`/`$url64` and
- `Install-ChocolateyPackage` / `Install-ChocolateyZipPackage`.
-- Other needs (creating files, setting registry keys), use regular
- PowerShell to do so or see if there is a function already defined:
- https://docs.chocolatey.org/en-us/create/functions
-- There may also be functions available in extension packages, see
- https://community.chocolatey.org/packages?q=id%3A.extension for examples and
- availability.
-- Clean out the comments and sections you are not using.
-
-5. Test the package to ensure install/uninstall work appropriately.
- There is a test environment you can use for this -
- https://github.com/chocolatey/chocolatey-test-environment
-
-6. Learn more about Chocolatey packaging - go through the workshop at
- https://github.com/chocolatey/chocolatey-workshop
- You will learn about
- - General packaging
- - Customizing package behavior at runtime (package parameters)
- - Extension packages
- - Custom packaging templates
- - Setting up an internal Chocolatey.Server repository
- - Adding and using internal repositories
- - Reporting
- - Advanced packaging techniques when installers are not friendly to
- automation
-
-7. Delete this file.
diff --git a/packaging/choco/hydra-download-manager.nuspec b/packaging/choco/hydra-download-manager.nuspec
deleted file mode 100644
index 56038f94..00000000
--- a/packaging/choco/hydra-download-manager.nuspec
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
- hydra-download-manager
- 0.4.1
- https://github.com/ja7ad/hydra/tree/main/packaging/choco
- ja7ad
-
-
- Hydra Download Manager
- Javad Rajabzadeh
- https://github.com/ja7ad/hydra
- https://raw.githubusercontent.com/ja7ad/hydra/refs/heads/main/docs/logo.png
- https://github.com/ja7ad/hydra/blob/main/LICENSE
- false
- https://github.com/ja7ad/hydra/blob/main/README.md
- https://github.com/ja7ad/hydra/issues
- hydra download-manager accelerator network cli gui rust
- Multi-connection download accelerator and manager written in Rust
-
- https://github.com/ja7ad/hydra/releases/tag/v0.4.1
-
-
-
-
-
\ No newline at end of file
diff --git a/packaging/choco/tools/LICENSE.txt b/packaging/choco/tools/LICENSE.txt
deleted file mode 100644
index 523aa0d9..00000000
--- a/packaging/choco/tools/LICENSE.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-From: https://github.com/ja7ad/hydra/blob/main/LICENSE
-
-GNU GENERAL PUBLIC LICENSE
-Version 3, 29 June 2007
-
-Copyright (C) 2026 Javad Rajabzadeh
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see .
\ No newline at end of file
diff --git a/packaging/choco/tools/VERIFICATION.txt b/packaging/choco/tools/VERIFICATION.txt
deleted file mode 100644
index e9011864..00000000
--- a/packaging/choco/tools/VERIFICATION.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-VERIFICATION
-Verification is intended to assist the Chocolatey moderators and community
-in verifying that this package's contents are trustworthy.
-
-The package maintainer is the author of Hydra. The binaries are downloaded directly from the official upstream GitHub releases:
-https://github.com/ja7ad/hydra/releases/tag/v0.4.1
-
-1. Download the installers from the official GitHub Release assets:
- - x64: https://github.com/ja7ad/hydra/releases/download/v0.4.1/hydra-0.4.1-windows-x64-setup.exe
- - ARM64: https://github.com/ja7ad/hydra/releases/download/v0.4.1/hydra-0.4.1-windows-arm64-setup.exe
-
-2. Verify the SHA256 checksums in PowerShell:
- Get-FileHash -Algorithm SHA256 .\hydra-0.4.1-windows-x64-setup.exe
- Get-FileHash -Algorithm SHA256 .\hydra-0.4.1-windows-arm64-setup.exe
-
-3. Compare the results with the expected values below, which are the same
- ones pinned in 'tools/chocolateyinstall.ps1':
- - x64: F595A13FC771F4695368452C9A208FE32A7465B9C57502E602E745F5162BAF2B
- - ARM64: 347E2F01774E3AEE16B2DF461F01E9DBF63925FFD51BB2307A2DF8B4A4542E91
-
-The release's SHA256SUMS.txt asset lists the same checksums for every file.
diff --git a/packaging/choco/tools/chocolateybeforemodify.ps1 b/packaging/choco/tools/chocolateybeforemodify.ps1
deleted file mode 100644
index 542a8223..00000000
--- a/packaging/choco/tools/chocolateybeforemodify.ps1
+++ /dev/null
@@ -1,4 +0,0 @@
-$ErrorActionPreference = 'Stop'
-
-# Terminate running Hydra processes to prevent file locks during upgrade/uninstall
-Get-Process -Name 'hydra', 'hydra-gui' -ErrorAction SilentlyContinue | Stop-Process -Force -ErrorAction SilentlyContinue
\ No newline at end of file
diff --git a/packaging/choco/tools/chocolateyinstall.ps1 b/packaging/choco/tools/chocolateyinstall.ps1
deleted file mode 100644
index 03d60d9e..00000000
--- a/packaging/choco/tools/chocolateyinstall.ps1
+++ /dev/null
@@ -1,26 +0,0 @@
-$ErrorActionPreference = 'Stop'
-
-$packageArgs = @{
- packageName = 'hydra-download-manager'
- fileType = 'exe'
- # NSIS installer (see scripts/windows/hydra-installer.nsi): the silent
- # switch is an uppercase /S. Inno Setup switches like /VERYSILENT are
- # ignored by NSIS, which leaves the wizard on screen and hangs the install.
- # /S selects the installer's defaults: app, IPC host, CLI + PATH, browser
- # extensions, Start-menu and desktop shortcuts. Skip the desktop shortcut
- # with: choco install hydra-download-manager --install-arguments="'/NODESKTOP'"
- silentArgs = '/S'
- validExitCodes = @(0)
-
- # x64 (AMD64 / Intel)
- url64 = 'https://github.com/ja7ad/hydra/releases/download/v0.4.1/hydra-0.4.1-windows-x64-setup.exe'
- checksum64 = 'F595A13FC771F4695368452C9A208FE32A7465B9C57502E602E745F5162BAF2B'
- checksumType64 = 'sha256'
-
- # ARM64
- url64arm = 'https://github.com/ja7ad/hydra/releases/download/v0.4.1/hydra-0.4.1-windows-arm64-setup.exe'
- checksum64arm = '347E2F01774E3AEE16B2DF461F01E9DBF63925FFD51BB2307A2DF8B4A4542E91'
- checksumType64arm = 'sha256'
-}
-
-Install-ChocolateyPackage @packageArgs
\ No newline at end of file
diff --git a/packaging/choco/tools/chocolateyuninstall.ps1 b/packaging/choco/tools/chocolateyuninstall.ps1
deleted file mode 100644
index 59068199..00000000
--- a/packaging/choco/tools/chocolateyuninstall.ps1
+++ /dev/null
@@ -1,25 +0,0 @@
-$ErrorActionPreference = 'Stop'
-
-$packageArgs = @{
- packageName = 'hydra-download-manager'
- softwareName = 'Hydra*'
- fileType = 'exe'
- silentArgs = '/S'
- validExitCodes = @(0)
-}
-
-[array]$key = Get-UninstallRegistryKey -SoftwareName $packageArgs['softwareName']
-
-if ($key.Count -eq 1) {
- $key | ForEach-Object {
- $packageArgs['file'] = "$($_.UninstallString)"
- Uninstall-ChocolateyPackage @packageArgs
- }
-} elseif ($key.Count -eq 0) {
- Write-Warning "$($packageArgs['packageName']) has already been uninstalled by other means."
-} elseif ($key.Count -gt 1) {
- Write-Warning "$($key.Count) matches found!"
- Write-Warning "To prevent accidental data loss, no programs will be uninstalled."
- Write-Warning "Please alert package maintainer the following keys were matched:"
- $key | ForEach-Object { Write-Warning "- $($_.DisplayName)" }
-}
\ No newline at end of file
diff --git a/scripts/update-choco.sh b/scripts/update-choco.sh
deleted file mode 100755
index bcccb791..00000000
--- a/scripts/update-choco.sh
+++ /dev/null
@@ -1,151 +0,0 @@
-#!/usr/bin/env bash
-# Copyright (C) 2026 Javad Rajabzadeh
-# SPDX-License-Identifier: GPL-3.0-or-later
-#
-# Bump the Chocolatey package (packaging/choco) to a release: version,
-# x64 / ARM64 installer download URLs and their SHA256 checksums, then
-# optionally `choco pack` it and push it to the community repository.
-#
-# scripts/update-choco.sh [vX.Y.Z] [DIST_DIR] [--pack] [--push]
-#
-# VERSION defaults to the workspace version in Cargo.toml.
-# DIST_DIR directory holding hydra-X.Y.Z-windows-{x64,arm64}-setup.exe
-# and/or SHA256SUMS.txt (default: dist). When neither is there
-# the installers are downloaded from the GitHub release and
-# hashed locally, so the script also works after the fact.
-# --pack run `choco pack` into $CHOCO_OUT (default: dist/choco).
-# --push pack, then `choco push` to https://push.chocolatey.org/ using
-# $CHOCO_API_KEY.
-#
-# Files rewritten:
-# packaging/choco/hydra-download-manager.nuspec ,
-# packaging/choco/tools/chocolateyinstall.ps1 url64*, checksum64*
-# packaging/choco/tools/VERIFICATION.txt URLs and checksums
-#
-set -euo pipefail
-
-REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
-cd "$REPO_ROOT"
-
-VERSION=""
-DIST=""
-PACK=false
-PUSH=false
-for arg in "$@"; do
- case "$arg" in
- --pack) PACK=true ;;
- --push) PACK=true; PUSH=true ;;
- -h|--help) sed -n '5,25p' "$0"; exit 0 ;;
- -*) echo "error: unknown option $arg" >&2; exit 2 ;;
- *)
- if [ -z "$VERSION" ]; then VERSION="$arg"
- elif [ -z "$DIST" ]; then DIST="$arg"
- else echo "error: unexpected argument $arg" >&2; exit 2
- fi ;;
- esac
-done
-if [ -z "$VERSION" ]; then
- VERSION=$(sed -n 's/^version = "\(.*\)"/\1/p' Cargo.toml | head -1)
-fi
-VERSION="${VERSION#v}"
-DIST="${DIST:-dist}"
-CHOCO_DIR="$REPO_ROOT/packaging/choco"
-CHOCO_OUT="${CHOCO_OUT:-$REPO_ROOT/dist/choco}"
-RELEASE_BASE="https://github.com/ja7ad/hydra/releases/download/v${VERSION}"
-NUSPEC="$CHOCO_DIR/hydra-download-manager.nuspec"
-INSTALL_PS1="$CHOCO_DIR/tools/chocolateyinstall.ps1"
-VERIFICATION="$CHOCO_DIR/tools/VERIFICATION.txt"
-
-echo "Updating Chocolatey package for version ${VERSION}..."
-
-# Print the SHA256 of hydra-VERSION-windows-ARCH-setup.exe, taken from the
-# local file, from SHA256SUMS.txt, or from the published release asset.
-asset_sha256() {
- local asset="hydra-${VERSION}-windows-$1-setup.exe"
- local sha=""
- if [ -f "$DIST/$asset" ]; then
- sha=$(sha256sum "$DIST/$asset" | awk '{print $1}')
- elif [ -f "$DIST/SHA256SUMS.txt" ]; then
- sha=$(grep -E " ${asset}\$" "$DIST/SHA256SUMS.txt" | awk '{print $1}' || true)
- fi
- if [ -z "$sha" ]; then
- echo " $asset not in $DIST; downloading from the release" >&2
- local tmp
- tmp=$(mktemp)
- curl -fsSL --retry 3 -o "$tmp" "$RELEASE_BASE/$asset"
- sha=$(sha256sum "$tmp" | awk '{print $1}')
- rm -f "$tmp"
- fi
- [[ "$sha" =~ ^[0-9a-f]{64}$ ]] || { echo "error: no SHA256 for $asset" >&2; exit 1; }
- # Chocolatey conventionally lists checksums in upper case.
- echo "$sha" | tr '[:lower:]' '[:upper:]'
-}
-
-X64_URL="$RELEASE_BASE/hydra-${VERSION}-windows-x64-setup.exe"
-ARM64_URL="$RELEASE_BASE/hydra-${VERSION}-windows-arm64-setup.exe"
-X64_SHA=$(asset_sha256 x64)
-ARM64_SHA=$(asset_sha256 arm64)
-echo " x64: $X64_SHA"
-echo " arm64: $ARM64_SHA"
-
-# nuspec: version and release notes link
-perl -pi -e "s{[^<]*}{${VERSION}}" "$NUSPEC"
-perl -pi -e "s{[^<]*}{https://github.com/ja7ad/hydra/releases/tag/v${VERSION}}" "$NUSPEC"
-
-# chocolateyinstall.ps1: keep the comments, replace only the quoted values
-perl -pi -e "s{^(\s*url64\s*=\s*)'[^']*'}{\$1'${X64_URL}'}" "$INSTALL_PS1"
-perl -pi -e "s{^(\s*checksum64\s*=\s*)'[^']*'}{\$1'${X64_SHA}'}" "$INSTALL_PS1"
-perl -pi -e "s{^(\s*url64arm\s*=\s*)'[^']*'}{\$1'${ARM64_URL}'}" "$INSTALL_PS1"
-perl -pi -e "s{^(\s*checksum64arm\s*=\s*)'[^']*'}{\$1'${ARM64_SHA}'}" "$INSTALL_PS1"
-
-# VERIFICATION.txt is regenerated whole; it is prose, not a template
-cat > "$VERIFICATION" <&2; exit 1; }
-done
-grep -qF "${VERSION}" "$NUSPEC" || { echo "error: $NUSPEC version not updated" >&2; exit 1; }
-echo "==> packaging/choco bumped to ${VERSION}"
-
-if [ "$PACK" = true ]; then
- command -v choco >/dev/null 2>&1 || {
- echo "error: choco not found; --pack/--push need Chocolatey (Windows)" >&2
- exit 1
- }
- mkdir -p "$CHOCO_OUT"
- NUPKG="$CHOCO_OUT/hydra-download-manager.${VERSION}.nupkg"
- rm -f "$NUPKG"
- choco pack "$NUSPEC" --outputdirectory "$CHOCO_OUT"
- [ -f "$NUPKG" ] || { echo "error: $NUPKG was not produced" >&2; exit 1; }
- echo "==> Packed $NUPKG"
-fi
-
-if [ "$PUSH" = true ]; then
- [ -n "${CHOCO_API_KEY:-}" ] || { echo "error: CHOCO_API_KEY is not set" >&2; exit 1; }
- choco push "$NUPKG" --source https://push.chocolatey.org/ --api-key "$CHOCO_API_KEY"
- echo "==> Pushed hydra-download-manager ${VERSION} to the Chocolatey community repository"
-fi