diff --git a/pkgs/by-name/sa/sabnzbd/package.nix b/pkgs/by-name/sa/sabnzbd/package.nix index 6978589811bc..63b5df4b5962 100644 --- a/pkgs/by-name/sa/sabnzbd/package.nix +++ b/pkgs/by-name/sa/sabnzbd/package.nix @@ -3,6 +3,7 @@ stdenv, coreutils, fetchFromGitHub, + fetchPypi, python3, par2cmdline-turbo, unzip, @@ -14,6 +15,9 @@ }: let + sabctoolsVersion = "8.2.0"; + sabctoolsHash = "sha256-dOMNZoKWQxHJt6yHiNKVtpnYvLJkK8nktOm+djsSTcM="; + pythonEnv = python3.withPackages ( ps: with ps; [ apprise @@ -42,7 +46,15 @@ let python-dateutil pytz rebulk - sabctools + # sabnzbd requires a specific version of sabctools + (sabctools.overridePythonAttrs (old: { + version = sabctoolsVersion; + src = fetchPypi { + pname = "sabctools"; + version = sabctoolsVersion; + hash = sabctoolsHash; + }; + })) sabyenc3 sgmllib3k six @@ -86,8 +98,9 @@ stdenv.mkDerivation rec { runHook postInstall ''; - passthru.tests = { - smoke-test = nixosTests.sabnzbd; + passthru = { + tests.smoke-test = nixosTests.sabnzbd; + updateScript = ./update.sh; }; meta = with lib; { diff --git a/pkgs/by-name/sa/sabnzbd/update.sh b/pkgs/by-name/sa/sabnzbd/update.sh new file mode 100755 index 000000000000..d4cd47cfb5e9 --- /dev/null +++ b/pkgs/by-name/sa/sabnzbd/update.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p nix common-updater-scripts gnugrep gnused nurl + +# shellcheck shell=bash + +set -euo pipefail + +latestVersion=$(list-git-tags --url=https://github.com/sabnzbd/sabnzbd | grep -E '^[0-9.]+$' | sort --reverse --numeric-sort | head -n 1) +currentVersion=$(nix-instantiate --eval -E "with import ./. {}; sabnzbd.version or (lib.getVersion sabnzbd)" | tr -d '"') + +if [[ "$latestVersion" == "$currentVersion" ]]; then + echo "sabnzbd already latest version $latestVersion" + exit 0 +fi + +echo "sabnzbd updating $currentVersion -> $latestVersion" +update-source-version sabnzbd "$latestVersion" + +sabctoolsVersion=$(curl -s "https://raw.githubusercontent.com/sabnzbd/sabnzbd/$latestVersion/requirements.txt" | grep sabctools | cut -f 3 -d =) +sabctoolsHash=$(nurl --hash https://pypi.org/project/sabctools "$sabctoolsVersion") + +sed -i -E -e "s#sabctoolsVersion = \".*\"#sabctoolsVersion = \"$sabctoolsVersion\"#" ./pkgs/by-name/sa/sabnzbd/package.nix +sed -i -E -e "s#sabctoolsHash = \".*\"#sabctoolsHash = \"$sabctoolsHash\"#" ./pkgs/by-name/sa/sabnzbd/package.nix diff --git a/pkgs/development/python-modules/sabctools/default.nix b/pkgs/development/python-modules/sabctools/default.nix index c8e1e294ef1d..e9e56131c76d 100644 --- a/pkgs/development/python-modules/sabctools/default.nix +++ b/pkgs/development/python-modules/sabctools/default.nix @@ -7,7 +7,7 @@ }: buildPythonPackage rec { pname = "sabctools"; - version = "8.2.3"; # needs to match version sabnzbd expects, e.g. https://github.com/sabnzbd/sabnzbd/blob/4.0.x/requirements.txt#L3 + version = "8.2.3"; pyproject = true; src = fetchPypi {