@@ -0,0 +1,58 @@
1+#!/usr/bin/env nix-shell
2+#!nix-shell -i python -p python39Packages.requests python39Packages.pip python39Packages.packaging
3+
4+import requests
5+import json
6+import subprocess
7+try:
8+ from packaging.version import parse
9+except ImportError:
10+ from pip._vendor.packaging.version import parse
11+
12+
13+URL_PATTERN = 'https://pypi.python.org/pypi/{package}/json'
14+
15+def findLine(key,derivation):
16+ count = 0
17+ lines = []
18+ for line in derivation:
19+ if key in line:
20+ lines.append(count)
21+ count += 1
22+ return lines
23+
24+def get_version(package, url_pattern=URL_PATTERN):
25+ """Return version of package on pypi.python.org using json."""
26+ req = requests.get(url_pattern.format(package=package))
27+ version = parse('0')
28+ if req.status_code == requests.codes.ok:
29+ j = json.loads(req.text.encode(req.encoding))
30+ releases = j.get('releases', [])
31+ for release in releases:
32+ ver = parse(release)
33+ if not ver.is_prerelease:
34+ if ver > version:
35+ version = ver
36+ sha256 = j["releases"][release][-1]["digests"]["sha256"]
37+ return version, sha256
38+
39+
40+if __name__ == '__main__':
41+
42+ nixpkgs = subprocess.check_output(["git", "rev-parse", "--show-toplevel"]).decode("utf-8").strip('\n')
43+ swaytoolsFolder = "/pkgs/tools/wayland/swaytools/"
44+ with open(nixpkgs + swaytoolsFolder + "default.nix", 'r') as arq:
45+ derivation = arq.readlines()
46+
47+ version, sha256 = get_version('swaytools')
48+
49+ key = "version = "
50+ line = findLine(key,derivation)[0]
51+ derivation[line] = f' version = "{version}";\n'
52+
53+ key = "sha256 = "
54+ line = findLine(key,derivation)[0]
55+ derivation[line] = f' sha256 = "{sha256}";\n'
56+
57+ with open(nixpkgs + swaytoolsFolder + "default.nix", 'w') as arq:
58+ arq.writelines(derivation)