from typing import TypedDict from pathlib import Path import requests import shutil import json import os from requests.auth import HTTPBasicAuth URL="https://git.betalupi.com" USER = os.environ['USER'] PACKAGE = os.environ['PACKAGE'] VERSION = os.environ['VERSION'] AUTH = HTTPBasicAuth(USER, os.environ['PUBLISH_KEY']) ROOT: Path = Path(os.getcwd()) SRC_DIR: Path = ROOT / "output" def log(msg): print(f"[PUBLISH.PY] {msg}") log(f"Version is {VERSION}") log(f"Package is is {PACKAGE}") log(f"Running in {ROOT}") if not ROOT.is_dir(): log("Root is not a directory, cannot continue") exit(1) log(f"Source dir is {SRC_DIR}") if not SRC_DIR.exists(): log("Source dir doesn't exist, cannot continue") exit(1) def upload(data, target: str): requests.put( f"{URL}/api/packages/{USER}/generic/{PACKAGE}/{VERSION}/{target}", auth=AUTH, data=data ) return f"{URL}/api/packages/{USER}/generic/ormc-handouts/{VERSION}/{target}" index = SRC_DIR / "index.json" with index.open("r") as f: index = json.load(f) new_index = [] for handout in index: title = handout["title"] group = handout["group"] h_file = SRC_DIR/handout["handout_file"] s_file = SRC_DIR/handout["handout_file"] h_url = None s_url = None h_url = upload( h_file.open('rb').read(), f"{group} - {title}.pdf" ) if s_file is not None: s_url = upload( s_file.open('rb').read(), f"{group} - {title}.sols.pdf" ) log(f"Published {title}") new_index.append({ "title": title, "group": group, "handout": h_url, "solutions": s_url }) upload( json.dumps(new_index), "index.json" )