#!/usr/bin/env python
"""Updates KolMafia"""
import json
import pathlib
import sys
import urllib.request
def main():
"""Main entry point"""
RELEASES_URL = "https://api.github.com/repos/kolmafia/kolmafia/releases"
print(f"Visiting {RELEASES_URL}")
with urllib.request.urlopen(RELEASES_URL) as response:
body = response.read().decode("ISO-8859-1")
json_data = json.loads(body)
json_index = 0
while json_index < len(json_data[0]["assets"]):
if ".jar" in json_data[0]["assets"][json_index]["name"]:
break
else:
json_index += 1
continue
first_asset = json_data[0]["assets"][json_index]
jar_name = first_asset["name"]
jar_download_url = first_asset["browser_download_url"]
if pathlib.Path(jar_name).exists():
print(f"{jar_name} already exists.")
return 0
print(f"Downloading {jar_download_url}")
CHUNK_SIZE = 1024 * 1024 # 1MB
with urllib.request.urlopen(jar_download_url) as jar_response, open(
jar_name, mode="wb"
) as jarfile:
while True:
chunk: bytes = jar_response.read(CHUNK_SIZE)
jarfile.write(chunk)
print(".", end="", flush=True)
if len(chunk) < CHUNK_SIZE:
break
print("\nDownload complete!")
return 0
if __name__ == "__main__":
sys.exit(main())