#!/usr/bin/env python3 from argparse import ArgumentParser from puppygirl import Puppygirl from puppygirl.elements.host import PuppygirlHost, PuppygirlPart from puppygirl.elements import Node from puppygirl.renderer import ClientSideRenderer, ServerSideRenderer parser = ArgumentParser("puppygirl", add_help=True) subparsers = parser.add_subparsers(dest="command") build = subparsers.add_parser("build", add_help=True) build.add_argument("input", metavar="INPUT") build.add_argument("output", metavar="OUTPUT") build.add_argument("-p", "--pretty", action="store_true") build.add_argument("-r", "--renderer", choices=["client", "server"], default="server") def main(): args = parser.parse_args() match args.renderer: case "client": renderer = ClientSideRenderer() case _: renderer = ServerSideRenderer() pg = Puppygirl(renderer=renderer, elements=[PuppygirlHost, PuppygirlPart]) html = pg.parse(Node.from_path(args.input)) if args.pretty: html = html.prettify() else: html = str(html) with open(args.output, "w") as f: f.write(html) if __name__ == "__main__": main()