58 lines
1.8 KiB
Python
Executable file
58 lines
1.8 KiB
Python
Executable file
#!/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)
|