53 lines
1.4 KiB
Python
53 lines
1.4 KiB
Python
|
import subprocess
|
||
|
from pathlib import Path
|
||
|
import json
|
||
|
|
||
|
|
||
|
def get_archive_hash(url):
|
||
|
output = subprocess.check_output(['nix', 'store', 'prefetch-file', '--name', 'source', '--json', '--unpack', url])
|
||
|
|
||
|
data = json.loads(output)
|
||
|
return data['hash']
|
||
|
|
||
|
|
||
|
def substitute_all(content: str, substitutions: dict[str, str]) -> str:
|
||
|
for sub, value in substitutions.items():
|
||
|
content = content.replace(sub, value)
|
||
|
return content
|
||
|
|
||
|
|
||
|
def substitute_file(path: Path, substitutions: dict[str, str]):
|
||
|
content = path.with_name(path.name + '.in').read_text()
|
||
|
subbed = substitute_all(content, substitutions)
|
||
|
path.write_text(subbed)
|
||
|
|
||
|
|
||
|
def go(version: str):
|
||
|
BASE_URL = 'https://git.lix.systems'
|
||
|
files = [
|
||
|
Path('./content/add-to-config.md'),
|
||
|
Path('./content/install.md')
|
||
|
]
|
||
|
|
||
|
substitutions = {
|
||
|
'@VERSION@': version,
|
||
|
'@LIX_ARCHIVE_HASH@': get_archive_hash(BASE_URL + f'/lix-project/lix/archive/{version}.tar.gz'),
|
||
|
'@NIXOS_MODULE_HASH@': get_archive_hash(BASE_URL + f'/lix-project/nixos-module/archive/{version}.tar.gz'),
|
||
|
}
|
||
|
|
||
|
for file in files:
|
||
|
substitute_file(file, substitutions)
|
||
|
|
||
|
|
||
|
def main():
|
||
|
import argparse
|
||
|
ap = argparse.ArgumentParser(description='Update versions of Lix in the website')
|
||
|
|
||
|
ap.add_argument('version', help='Version to make the files at')
|
||
|
args = ap.parse_args()
|
||
|
|
||
|
go(args.version)
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main()
|