-
Notifications
You must be signed in to change notification settings - Fork 47
Expand file tree
/
Copy pathupdate_metadata.py
More file actions
53 lines (42 loc) · 1.62 KB
/
Copy pathupdate_metadata.py
File metadata and controls
53 lines (42 loc) · 1.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/usr/bin/env python3
"""
Patch the matching version entry in metadata.json with download_url,
download_sha256, download_size, and install_size from package_pcm.py's
sidecar JSON.
Usage:
python update_metadata.py --sidecar dist/KiCadRoutingTools-0.15.5.zip.meta.json \
--repo drandyhaas/KiCadRoutingTools
"""
import argparse
import json
import sys
from pathlib import Path
def main():
p = argparse.ArgumentParser()
p.add_argument("--metadata", default="metadata.json")
p.add_argument("--sidecar", required=True)
p.add_argument("--repo", required=True,
help="GitHub repo owner/name for download_url")
args = p.parse_args()
info = json.loads(Path(args.sidecar).read_text())
meta_path = Path(args.metadata)
meta = json.loads(meta_path.read_text())
version = info["version"]
url = (f"https://github.com/{args.repo}/releases/download/"
f"v{version}/{info['filename']}")
match = next((v for v in meta["versions"] if v.get("version") == version),
None)
if match is None:
print(f"ERROR: no metadata.json version entry for {version}",
file=sys.stderr)
return 1
match["download_url"] = url
match["download_sha256"] = info["download_sha256"]
match["download_size"] = info["download_size"]
match["install_size"] = info["install_size"]
meta_path.write_text(json.dumps(meta, indent=2) + "\n")
print(f"Patched v{version}: sha256={info['download_sha256'][:12]}…, "
f"size={info['download_size']}, install={info['install_size']}")
return 0
if __name__ == "__main__":
sys.exit(main())