diff options
Diffstat (limited to 'pkgs/tools/wayland/swaytools/update.py')
-rwxr-xr-x | pkgs/tools/wayland/swaytools/update.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/pkgs/tools/wayland/swaytools/update.py b/pkgs/tools/wayland/swaytools/update.py new file mode 100755 index 0000000000000..141566848e387 --- /dev/null +++ b/pkgs/tools/wayland/swaytools/update.py @@ -0,0 +1,58 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i python -p python39Packages.requests python39Packages.pip python39Packages.packaging + +import requests +import json +import subprocess +try: + from packaging.version import parse +except ImportError: + from pip._vendor.packaging.version import parse + + +URL_PATTERN = 'https://pypi.python.org/pypi/{package}/json' + +def findLine(key,derivation): + count = 0 + lines = [] + for line in derivation: + if key in line: + lines.append(count) + count += 1 + return lines + +def get_version(package, url_pattern=URL_PATTERN): + """Return version of package on pypi.python.org using json.""" + req = requests.get(url_pattern.format(package=package)) + version = parse('0') + if req.status_code == requests.codes.ok: + j = json.loads(req.text.encode(req.encoding)) + releases = j.get('releases', []) + for release in releases: + ver = parse(release) + if not ver.is_prerelease: + if ver > version: + version = ver + sha256 = j["releases"][release][-1]["digests"]["sha256"] + return version, sha256 + + +if __name__ == '__main__': + + nixpkgs = subprocess.check_output(["git", "rev-parse", "--show-toplevel"]).decode("utf-8").strip('\n') + swaytoolsFolder = "/pkgs/tools/wayland/swaytools/" + with open(nixpkgs + swaytoolsFolder + "default.nix", 'r') as arq: + derivation = arq.readlines() + + version, sha256 = get_version('swaytools') + + key = "version = " + line = findLine(key,derivation)[0] + derivation[line] = f' version = "{version}";\n' + + key = "sha256 = " + line = findLine(key,derivation)[0] + derivation[line] = f' sha256 = "{sha256}";\n' + + with open(nixpkgs + swaytoolsFolder + "default.nix", 'w') as arq: + arq.writelines(derivation) |