nixpkgs/pkgs/applications/editors/helix/update.py
Leona Maroni 95c7a595ce helix: 23.03 -> 23.05
Switch to self-build of the tree-sitter grammar files and
use the git repo as source directly
2023-05-20 14:55:12 -04:00

48 lines
1.3 KiB
Python
Executable file

#! /usr/bin/env nix-shell
#! nix-shell -i python3 -p nix-update python3 python3Packages.requests python3.pkgs.tomlkit nix-prefetch-git
import tomlkit
import json
import requests
import subprocess
from pathlib import Path
latest_release_url = "https://api.github.com/repos/helix-editor/helix/releases/latest"
def get_latest_release():
res = requests.get(latest_release_url)
res.raise_for_status()
return res.json()["tag_name"]
def get_grammar_config():
res = requests.get(f"https://raw.githubusercontent.com/helix-editor/helix/{version}/languages.toml")
res.raise_for_status()
return tomlkit.parse(res.text)["grammar"]
def calculate_sha256(url, rev):
out = subprocess.check_output([
"nix-prefetch-git", "--quiet",
"--url", url,
"--rev", rev])
return json.loads(out)["sha256"]
version = get_latest_release()
grammars = get_grammar_config()
for grammar in grammars:
if grammar["source"].get("git") is not None:
grammar["source"]["sha256"] = calculate_sha256(
grammar["source"]["git"], grammar["source"]["rev"])
json_grammars = json.dumps(grammars)
with open(Path(__file__).parent / "language-grammars.json", "w") as file:
file.write(json_grammars + "\n")
subprocess.run([
"nix-update", "helix",
"--version", version,
])