2025-01-21 22:43:56 -08:00
|
|
|
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']
|
2025-01-21 22:53:45 -08:00
|
|
|
PACKAGE = os.environ['PACKAGE']
|
2025-01-21 22:43:56 -08:00
|
|
|
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"Running in {ROOT}")
|
|
|
|
if not ROOT.is_dir():
|
|
|
|
log("Root is not a directory, cannot continue")
|
|
|
|
exit(1)
|
|
|
|
|
|
|
|
log(f"Output dir is {SRC_DIR}")
|
|
|
|
if not SRC_DIR.exists():
|
|
|
|
log("Output dir doesn't exist, cannot continue")
|
|
|
|
exit(1)
|
|
|
|
|
|
|
|
IndexEntry = TypedDict(
|
|
|
|
"IndexEntry",
|
|
|
|
{"title": str, "group": str, "handout_file": str, "solutions_file": str | None},
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
index = SRC_DIR / "index.json"
|
|
|
|
with index.open("r") as f:
|
|
|
|
index = json.load(f)
|
|
|
|
|
2025-01-21 22:48:32 -08:00
|
|
|
new_index = []
|
2025-01-21 22:43:56 -08:00
|
|
|
for handout in index:
|
|
|
|
title = handout["title"]
|
|
|
|
group = handout["group"]
|
|
|
|
h_file = SRC_DIR/handout["handout_file"]
|
|
|
|
s_file = SRC_DIR/handout["handout_file"]
|
|
|
|
|
2025-01-21 22:48:32 -08:00
|
|
|
h_url = None
|
|
|
|
s_url = None
|
|
|
|
|
2025-01-21 22:43:56 -08:00
|
|
|
target = f"{group} - {title}.pdf"
|
|
|
|
requests.put(
|
|
|
|
f"{URL}/api/packages/{USER}/generic/{PACKAGE}/{VERSION}/{target}",
|
2025-01-21 22:48:32 -08:00
|
|
|
auth=AUTH,
|
|
|
|
data=h_file.open('rb').read()
|
|
|
|
)
|
|
|
|
h_url = f"{URL}/api/packages/{USER}/generic/ormc-handouts/{VERSION}/{target}"
|
|
|
|
|
|
|
|
|
2025-01-21 22:43:56 -08:00
|
|
|
if s_file is not None:
|
|
|
|
target = f"{group} - {title}.sols.pdf"
|
|
|
|
requests.put(
|
2025-01-21 22:48:32 -08:00
|
|
|
f"{URL}/api/packages/{USER}/generic/{PACKAGE}/{VERSION}/{target}",
|
|
|
|
auth=AUTH,
|
|
|
|
data=s_file.open('rb').read()
|
|
|
|
)
|
|
|
|
s_url = f"{URL}/api/packages/{USER}/generic/ormc-handouts/{VERSION}/{target}"
|
|
|
|
|
|
|
|
|
|
|
|
log(f"Published {title}")
|
|
|
|
|
|
|
|
new_index.append({
|
|
|
|
"title": title,
|
|
|
|
"group": group,
|
|
|
|
"handout": h_url,
|
|
|
|
"solutions": s_url
|
|
|
|
})
|
2025-01-21 22:43:56 -08:00
|
|
|
|
2025-01-21 22:48:32 -08:00
|
|
|
requests.put(
|
|
|
|
f"{URL}/api/packages/{USER}/generic/{PACKAGE}/{VERSION}/index.json",
|
|
|
|
auth=AUTH,
|
|
|
|
data=json.dumps(new_index)
|
|
|
|
)
|