summaryrefslogtreecommitdiff
path: root/icon/convert.py
diff options
context:
space:
mode:
Diffstat (limited to 'icon/convert.py')
-rwxr-xr-xicon/convert.py66
1 files changed, 66 insertions, 0 deletions
diff --git a/icon/convert.py b/icon/convert.py
new file mode 100755
index 0000000..b550709
--- /dev/null
+++ b/icon/convert.py
@@ -0,0 +1,66 @@
+#!/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()