Release standalone PPT template workflow 0.5.0
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Portable project builder: finalized SVG pages and Markdown speaker notes."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import json
|
||||
from pathlib import Path
|
||||
import sys
|
||||
import tempfile
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description=__doc__)
|
||||
parser.add_argument("--project", type=Path, required=True)
|
||||
parser.add_argument("--output", type=Path, required=True)
|
||||
args = parser.parse_args()
|
||||
project = args.project.resolve()
|
||||
sys.path.insert(0, str(project / "vendor/native-workflow/scripts"))
|
||||
from native_export import export, prepare_svg, regular
|
||||
import template_ref as ref
|
||||
import ppt_project
|
||||
|
||||
config, _ = ppt_project.check(project)
|
||||
ref.require(config["authoring"]["route"] == "native", "Native builder requires the native authoring route")
|
||||
args.output.parent.mkdir(parents=True, exist_ok=True)
|
||||
with tempfile.TemporaryDirectory(prefix="native-pages-", dir=args.output.parent) as temporary:
|
||||
temporary = Path(temporary)
|
||||
sources, notes = [], {}
|
||||
for page in config["pages"]:
|
||||
source = regular(project / page["source"], "page source")
|
||||
target = temporary / f"{page['id']}.svg"
|
||||
root = prepare_svg(source, target, project)
|
||||
ref.require(root.get("data-pptx-layout") == page["layout"], "Page SVG layout differs from project.json")
|
||||
sources.append(target)
|
||||
notes[target.stem] = (project / page["notes"]).read_text(encoding="utf-8")
|
||||
facts = export(project / config["template"]["manifest"], config["template"]["theme"],
|
||||
sources, args.output, notes, project)
|
||||
print(json.dumps(facts, ensure_ascii=False))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user