#!/usr/bin/env python3 import argparse import dataclasses import os import pathlib import subprocess import sys DESCRIPTION = "Script to convert main icon file to all required formats" SCRIPT = pathlib.Path(__file__).resolve() ICON = SCRIPT.parent MAIN = ICON / "main.svg" ANDROID = ICON / "android" def main() -> None: _ = Arguments.from_list(sys.argv) os.makedirs(ANDROID, exist_ok=True) inkscape(MAIN, ANDROID / "default.png") inkscape(MAIN, ANDROID / "foreground.png", ids=("foreground",)) inkscape(MAIN, ANDROID / "background.png", ids=("background",)) @dataclasses.dataclass(frozen=True, kw_only=True) class Arguments: @staticmethod def from_list(args: list[str]) -> "Arguments": parser = argparse.ArgumentParser(description=DESCRIPTION) parser.parse_args(args[1:]) return Arguments() def inkscape( source: pathlib.Path, sink: pathlib.Path, ids: tuple[str, ...] = ("foreground", "background"), width: int = 1024, height: int = 1024, ) -> None: subprocess.run( ( # fmt: off "inkscape", str(source), "--export-filename", str(sink), "--export-area-page", "--export-id", ";".join(ids), "--export-width", str(width), "--export-height", str(height), "--export-id-only", # fmt: on ), check=True, shell=False, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, ) if __name__ == "__main__": main()