From c54ae438c1edea3b2eb2271de796a398f355d61f Mon Sep 17 00:00:00 2001 From: yyc12345 Date: Thu, 27 Aug 2026 13:03:48 +0800 Subject: [PATCH] feat: add cli for svg render --- tool/src/aurora_iconset_builder/__init__.py | 9 ++++- tool/src/aurora_iconset_builder/cli.py | 42 +++++++++++++++++++++ 2 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 tool/src/aurora_iconset_builder/cli.py diff --git a/tool/src/aurora_iconset_builder/__init__.py b/tool/src/aurora_iconset_builder/__init__.py index c3b2a1f..ff283f9 100644 --- a/tool/src/aurora_iconset_builder/__init__.py +++ b/tool/src/aurora_iconset_builder/__init__.py @@ -1,18 +1,23 @@ import logging from pathlib import Path -from .assemblicon.context import Prerequisite, Context, AdvancedContext, SvgRenderKind +from .assemblicon.context import Prerequisite, Context, AdvancedContext from .assemblicon.utils import setup_logging from .std_icons import build_standard_icons from .nostd_icons import build_non_standard_icons +from .cli import parse def main() -> None: + opts = parse() + setup_logging() repository_root = Path(__file__).resolve().parent.parent.parent.parent iconset_input = repository_root / "src" iconset_output = repository_root / "artifact" - prereq = Prerequisite(iconset_input, iconset_output, SvgRenderKind.Inkscape) + prereq = Prerequisite( + iconset_input, iconset_output, opts.svg_render.to_assemblicon_type() + ) ctx = Context(prereq) advctx = AdvancedContext(ctx) diff --git a/tool/src/aurora_iconset_builder/cli.py b/tool/src/aurora_iconset_builder/cli.py new file mode 100644 index 0000000..0b75e85 --- /dev/null +++ b/tool/src/aurora_iconset_builder/cli.py @@ -0,0 +1,42 @@ +import argparse +import enum +from dataclasses import dataclass +from .assemblicon import artrender + + +class SvgRender(enum.StrEnum): + Inkscape = "inkscape" + ReSvg = "resvg" + + def to_assemblicon_type(self) -> artrender.SvgRenderKind: + match self: + case SvgRender.Inkscape: + return artrender.SvgRenderKind.Inkscape + case SvgRender.ReSvg: + return artrender.SvgRenderKind.ReSvg + + +@dataclass(frozen=True) +class Cli: + svg_render: SvgRender + + +def parse() -> Cli: + parser = argparse.ArgumentParser( + prog="Aurora Icon Set Builder", + description="The Programmatic Icon Assembly Workflow for Aurora Icon Set.", + ) + parser.add_argument( + "-s", + "--svg-render", + dest="svg_render", + action="store", + type=SvgRender, + default=SvgRender.Inkscape, + help="The render used for rendering SVG into PNG.", + metavar="RENDER", + ) + args = parser.parse_args() + return Cli( + svg_render=args.svg_render, + )