mirror of
https://github.com/qdrant/qdrant.git
synced 2026-07-31 15:11:35 -05:00
* shell.nix: add a comment * tools/nix/update.py: let it run outside of the nix-shell * shell.nix: bump to rust 1.81
87 lines
2.5 KiB
Python
Executable File
87 lines
2.5 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import argparse
|
|
import hashlib
|
|
import json
|
|
import pathlib
|
|
import re
|
|
import shlex
|
|
import shutil
|
|
import subprocess
|
|
import sys
|
|
import tomllib
|
|
import urllib.request
|
|
|
|
|
|
def main() -> None:
|
|
parser = argparse.ArgumentParser(
|
|
description="Update the versions.json and nix dependencies",
|
|
)
|
|
parser.add_argument(
|
|
"--nix",
|
|
action=argparse.BooleanOptionalAction,
|
|
default=True,
|
|
help="update nix dependencies by running `npins update` (default: yes)",
|
|
)
|
|
parser.add_argument(
|
|
"--nightly",
|
|
type=str,
|
|
help="nightly version, e.g. 2021-01-01 (default: use latest)",
|
|
)
|
|
parser.add_argument(
|
|
"--stable",
|
|
type=str,
|
|
help="stable version, e.g. 1.76.0 (default: use latest)",
|
|
)
|
|
args = parser.parse_args()
|
|
|
|
if args.nix:
|
|
if shutil.which("npins") is not None:
|
|
command = ["npins", "update"]
|
|
else:
|
|
command = ["nix-shell", "-p", "npins", "--run", "npins update"]
|
|
print(f"Running {shlex.join(command)}", file=sys.stderr)
|
|
subprocess.run(
|
|
args=command,
|
|
cwd=pathlib.Path(__file__).parent,
|
|
check=True,
|
|
)
|
|
|
|
print("Updating versions.json", file=sys.stderr)
|
|
d = f"{args.nightly}/" if args.nightly else ""
|
|
url = f"https://static.rust-lang.org/dist/{d}channel-rust-nightly.toml"
|
|
with urllib.request.urlopen(url) as response:
|
|
data = response.read()
|
|
nightly_sha256 = hashlib.sha256(data).digest().hex()
|
|
nightly_date = tomllib.loads(data.decode("utf-8"))["date"]
|
|
|
|
d = args.stable if args.stable else "stable"
|
|
url = f"https://static.rust-lang.org/dist/channel-rust-{d}.toml"
|
|
with urllib.request.urlopen(url) as response:
|
|
data = response.read()
|
|
stable_sha256 = hashlib.sha256(data).digest().hex()
|
|
stable_version = tomllib.loads(data.decode("utf-8"))["pkg"]["rust"]["version"]
|
|
m = re.match(r"^(\d+\.\d+\.\d+) \(.*\)$", stable_version)
|
|
if not m:
|
|
raise ValueError(f"Failed to parse stable version: {stable_version}")
|
|
stable_version = m[1]
|
|
|
|
result = {
|
|
"#": "This file is autogenerated by ./update.py",
|
|
"nightly": {
|
|
"date": nightly_date,
|
|
"sha256": nightly_sha256,
|
|
},
|
|
"stable": {
|
|
"version": stable_version,
|
|
"sha256": stable_sha256,
|
|
},
|
|
}
|
|
|
|
with open(pathlib.Path(__file__).parent / "versions.json", "w") as f:
|
|
f.write(json.dumps(result, indent=2) + "\n")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|