import argparse, json
from pathlib import Path
from main import validate, export_plan, shortages
from presentation import page
parser = argparse.ArgumentParser()
parser.add_argument("input")
parser.add_argument("--output", required=True)
parser.add_argument("--decisions")
args = parser.parse_args()
data = json.loads(Path(args.input).read_text())
if args.decisions:
data["participants"] = json.loads(Path(args.decisions).read_text())["participants"]
model = validate(data)
result = export_plan(model, data.get("compare", [8, 12]))
out = Path(args.output)
out.mkdir(parents=True, exist_ok=True)
(out / "packing-list.csv").write_text(result["csv"])
(out / "shortages.json").write_text(json.dumps(result, indent=2))
page(
"Workshop Materials Planner",
[
("Packing list", result["packing"]),
(
"Participant comparisons",
[
{
"participants": s["participants"],
"shortages": {x["name"]: x["shortage"] for x in s["packing"]},
}
for s in result["scenarios"]
],
),
],
out / "planner.html",
{"participants": model["participants"]},
)
scenarios = {str(n): shortages(model, n) for n in range(101)}
payload = json.dumps(scenarios).replace("<", "\\u003c")
extra = (
''
)
html = (out / "planner.html").read_text()
(out / "planner.html").write_text(html.replace("