Files
nixpkgs/pkgs/by-name/fe/fermyon-spin/update.py

55 lines
1.7 KiB
Python
Executable File

#!/usr/bin/env nix-shell
#!nix-shell -i python3 -p python3 bash nix-update jq
import subprocess
from os.path import join, dirname
# Outer keys are as in Nix, the inner dict's values are as in upstream.
# We set oldHash and newHash fields in the inner dict later.
systems = {
"x86_64-linux": {"os": "linux", "arch": "amd64"},
"aarch64-linux": {"os": "linux", "arch": "aarch64"},
"aarch64-darwin": {"os": "macos", "arch": "aarch64"},
}
# This will set the version correctly,
# and will also set the hash for one of the systems.
subprocess.run([
"nix-update",
"fermyon-spin",
"--version-regex",
r"^v([\d\.]*)",
"--url",
"https://github.com/spinframework/spin"
])
newVer = subprocess.run(
["nix-instantiate", "--eval", "--raw", "-A", "fermyon-spin.version"], capture_output=True, encoding="locale"
).stdout
for nixTuple in systems:
url = (
"https://github.com/spinframework/spin/releases/download/v"
f"{newVer}/spin-v{newVer}-{systems[nixTuple]['os']}-{systems[nixTuple]['arch']}.tar.gz"
)
systems[nixTuple]["oldHash"] = subprocess.run(
["nix-instantiate", "--eval", "--raw", "-A", f"fermyon-spin.passthru.packageHashes.{nixTuple}"],
capture_output=True,
encoding="locale",
).stdout
systems[nixTuple]["newHash"] = subprocess.run(
["bash", "-c", f"nix store prefetch-file {url} --json | jq -r '.hash'"],
capture_output=True,
encoding="locale",
).stdout.strip() # Has a newline
with open(join(dirname(__file__), "package.nix"), "r") as f:
file = f.read()
for nixTuple in systems:
file = file.replace(systems[nixTuple]["oldHash"], systems[nixTuple]["newHash"])
with open(join(dirname(__file__), "package.nix"), "w") as f:
f.write(file)