diff --git a/builder/build.py b/builder/build.py index d6ae0e3..f843558 100644 --- a/builder/build.py +++ b/builder/build.py @@ -5,13 +5,14 @@ import argparse from pathlib import Path from src.configure import get_config -from src.generator import build, wbuild, xbuild +from src.generator import Info, build, wbuild, xbuild parser = argparse.ArgumentParser( prog="apple_builder", description="'macOSBigSur' cursor build python script.", ) + # Positional Args. parser.add_argument( "platform", @@ -95,9 +96,10 @@ parser.add_argument( args = parser.parse_args() bitmaps_dir = Path(args.png_dir) +name = bitmaps_dir.stem -x_out_dir = Path(args.out_dir) / "macOSBigSur" -win_out_dir = Path(args.out_dir) / "macOSBigSur_Windows" +x_out_dir = Path(args.out_dir) / name +win_out_dir = Path(args.out_dir) / f"{name}-Windows" # Windows Canvas & Cursor sizes win_size: int = args.win_size @@ -105,17 +107,20 @@ win_canvas_size: int = args.win_canvas_size if win_canvas_size < win_size: win_canvas_size = win_size +print(f"Getting '{name}' bitmaps ready for build...") config = get_config( bitmaps_dir, x_sizes=args.xsizes, - win_canvas_size=win_canvas_size, - win_size=win_size, + win_canvas_size=args.win_canvas_size, + win_size=args.win_size, ) +info = Info(name=name, comment=f"{name} Cursors") + if args.platform == "unix": - xbuild(config, x_out_dir) + xbuild(config, x_out_dir, info) elif args.platform == "windows": - wbuild(config, win_out_dir) + wbuild(config, win_out_dir, info) else: - build(config, x_out_dir, win_out_dir) + build(config, x_out_dir, win_out_dir, info) diff --git a/builder/src/configure.py b/builder/src/configure.py index 64bb96c..156f19e 100644 --- a/builder/src/configure.py +++ b/builder/src/configure.py @@ -4,7 +4,6 @@ from typing import Any, Dict, Tuple, TypeVar from clickgen.util import PNGProvider - from .constants import WIN_CURSORS_CFG, WIN_DELAY, X_CURSORS_CFG, X_DELAY X = TypeVar("X") @@ -15,7 +14,7 @@ def to_tuple(x: X) -> Tuple[X, X]: def get_config(bitmaps_dir, **kwargs) -> Dict[str, Any]: - """Return configuration of `GoogleDot` pointers. + """Return configuration of `macOSBigSur` pointers. :param bitmaps_dir: Path to .png file's directory. :type bitmaps_dir: ``str`` or ``pathlib.Path`` diff --git a/builder/src/constants.py b/builder/src/constants.py index 47f6d6d..6dabf36 100644 --- a/builder/src/constants.py +++ b/builder/src/constants.py @@ -4,8 +4,6 @@ from typing import Dict # Info -THEME_NAME = "macOSBigSur" -COMMENT = "macOS Big Sur Pointers" AUTHOR = "Kaiz Khatri" URL = "https://github.com/ful1e5/apple_cursor" diff --git a/builder/src/generator.py b/builder/src/generator.py index 19af6e9..772073b 100644 --- a/builder/src/generator.py +++ b/builder/src/generator.py @@ -1,31 +1,42 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -"""This module provides build methods for ``macOSBigSur``.""" - from pathlib import Path -from typing import Any, Dict +from typing import Any, Dict, NamedTuple from clickgen.builders import WindowsCursor, XCursor from clickgen.core import CursorAlias from clickgen.packagers import WindowsPackager, XPackager - -from .constants import AUTHOR, COMMENT, THEME_NAME, URL +from .constants import AUTHOR, URL from .symlinks import add_missing_xcursor -def xbuild(config: Dict[str, Dict[str, Any]], x_out_dir: Path) -> None: +class Info(NamedTuple): + """Theme basic information. + + :param name: Theme title. + :type name: ``str`` + + :param comment: quick information about theme. + :type comment: ``str`` + """ + + name: str + comment: str + + +def xbuild(config: Dict[str, Dict[str, Any]], x_out_dir: Path, info: Info) -> None: """Build `macOSBigSur` cursor theme for only `X11`(UNIX) platform. :param config: `macOSBigSur` configuration. - :type config: Dict + :type config: ``Dict`` :param x_out_dir: Path to the output directory,\ Where the `X11` cursor theme package will generate.\ It also creates a directory if not exists. - :type x_out_dir: Path + :type x_out_dir: ``pathlib.Path`` - :param info: Content theme name & comment + :param info: Content theme name & comment. :type info: Info """ @@ -37,21 +48,21 @@ def xbuild(config: Dict[str, Dict[str, Any]], x_out_dir: Path) -> None: XCursor.create(x_cfg, x_out_dir) add_missing_xcursor(x_out_dir / "cursors") - XPackager(x_out_dir, THEME_NAME, COMMENT) + XPackager(x_out_dir, info.name, info.comment) -def wbuild(config: Dict[str, Dict[str, Any]], win_out_dir: Path) -> None: +def wbuild(config: Dict[str, Dict[str, Any]], win_out_dir: Path, info: Info) -> None: """Build `macOSBigSur` cursor theme for only `Windows` platforms. :param config: `macOSBigSur` configuration. - :type config: Dict + :type config: ``Dict`` :param win_out_dir: Path to the output directory,\ Where the `Windows` cursor theme package will generate.\ It also creates a directory if not exists. - :type win_out_dir: Path + :type win_out_dir: ``pathlib.Path`` - :param info: Content theme name & comment + :param info: Content theme name & comment. :type info: Info """ @@ -70,28 +81,28 @@ def wbuild(config: Dict[str, Dict[str, Any]], win_out_dir: Path) -> None: print(f"Building '{win_cfg.stem}' Windows Cursor...") WindowsCursor.create(win_cfg, win_out_dir) - WindowsPackager(win_out_dir, THEME_NAME, COMMENT, AUTHOR, URL) + WindowsPackager(win_out_dir, info.name, info.comment, AUTHOR, URL) def build( - config: Dict[str, Dict[str, Any]], x_out_dir: Path, win_out_dir: Path + config: Dict[str, Dict[str, Any]], x_out_dir: Path, win_out_dir: Path, info: Info ) -> None: """Build `macOSBigSur` cursor theme for `X11` & `Windows` platforms. :param config: `macOSBigSur` configuration. - :type config: Dict + :type config: ``Dict`` :param x_out_dir: Path to the output directory,\ Where the `X11` cursor theme package will generate.\ It also creates a directory if not exists. - :type x_out_dir: Path + :type x_out_dir: ``pathlib.Path`` :param win_out_dir: Path to the output directory,\ Where the `Windows` cursor theme package will generate.\ It also creates a directory if not exists. - :type win_out_dir: Path + :type win_out_dir: ``pathlib.Path`` - :param info: Content theme name & comment + :param info: Content theme name & comment. :type info: Info """ @@ -115,6 +126,6 @@ def build( WindowsCursor.create(win_cfg, win_out_dir) add_missing_xcursor(x_out_dir / "cursors") - XPackager(x_out_dir, THEME_NAME, COMMENT) + XPackager(x_out_dir, info.name, info.comment) - WindowsPackager(win_out_dir, THEME_NAME, COMMENT, AUTHOR, URL) + WindowsPackager(win_out_dir, info.name, info.comment, AUTHOR, URL)