Bibata_Cursor/builder/build.py
2021-02-25 16:54:52 +05:30

128 lines
2.7 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import argparse
from pathlib import Path
from bbpkg.configure import get_config
from bbpkg.generator import Info, xbuild, wbuild, build
parser = argparse.ArgumentParser(
prog="bibata_builder",
description="'Bibata' cursor build python script.",
)
# Positional Args.
parser.add_argument(
"platform",
choices=("windows", "unix", "all"),
default="all",
const="all",
nargs="?",
help="Set package type, Which you want to build. (default: '%(default)s')",
)
# Optional Args.
parser.add_argument(
"-p",
"--png-dir",
dest="png_dir",
metavar="PNG",
type=str,
default="../bitmaps",
help="To change pngs directory. (default: %(default)s)",
)
parser.add_argument(
"-o",
"--out-dir",
dest="out_dir",
metavar="OUT",
type=str,
default="../themes",
help="To change output directory. (default: %(default)s)",
)
parser.add_argument(
"-xs",
"--xsizes",
dest="xsizes",
metavar="INT",
nargs="+",
default=[
22,
24,
28,
32,
40,
48,
56,
64,
72,
80,
88,
96,
],
type=int,
help="Set pixel-size for xcursor. (default: %(default)s)",
)
parser.add_argument(
"-ws",
"--win-size",
dest="win_size",
metavar="INT",
default=24,
type=int,
help="Set pixel-size for Windows cursors. (default: %(default)s)",
)
parser.add_argument(
"-wcs",
"--win-canvas-size",
dest="win_canvas_size",
metavar="INT",
default=32,
type=int,
help="Set pixel-size for Windows cursor's canvas. (default: %(default)s)",
)
# Preparing build
args = parser.parse_args()
bitmaps_dir = Path(args.png_dir).absolute()
name = bitmaps_dir.stem
comments = {
"Bibata-Modern-Classic": "Dark & Rounded-edge Bibata",
"Bibata-Original-Classic": "Dark & Sharp-edge Bibata",
"Bibata-Modern-Amber": "Yellowish & Rounded-edge Bibata",
"Bibata-Original-Amber": "Yellowish & Sharp-edge Bibata",
"Bibata-Modern-Ice": "Light & Rounded-edge Bibata",
"Bibata-Original-Ice": "Light & Sharp-edge Bibata",
}
x_out_dir = Path(args.out_dir) / name
win_out_dir = Path(args.out_dir) / f"{name}-Windows"
print(f"Getting '{name}' bitmaps ready for build...")
config = get_config(
bitmaps_dir,
x_sizes=args.xsizes,
win_canvas_size=args.win_canvas_size,
win_size=args.win_size,
)
info = Info(name=name, comment=comments.get(name, f"{name} Cursors"))
if args.platform == "unix":
xbuild(config, x_out_dir, info)
elif args.platform == "windows":
wbuild(config, win_out_dir, info)
else:
build(config, x_out_dir, win_out_dir, info)