From 86f42567c439cf04f31463d5ebd52ee5399fc7a0 Mon Sep 17 00:00:00 2001 From: ruzo Date: Fri, 24 May 2024 15:59:45 +0300 Subject: [PATCH] add: dispatch to build workflow and using different temp file on build.py --- .github/workflows/build.yml | 1 + build.py | 128 +++++++++++++++++------------------- 2 files changed, 60 insertions(+), 69 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ee0dde27..564ffc26 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,6 +1,7 @@ name: "Generate test artifacts" on: + workflow_dispatch: pull_request: types: [opened, reopened, synchronize] diff --git a/build.py b/build.py index e886b10a..a71afca6 100755 --- a/build.py +++ b/build.py @@ -7,12 +7,9 @@ import glob import logging import zipfile - import concurrent.futures - from dataclasses import dataclass from typing import Any, Literal, List - from catppuccin import PALETTE from catppuccin.models import Flavor, Color @@ -42,16 +39,16 @@ def id(self) -> str: @dataclass class Suffix: true_value: str - test: Any # callback function + test: Any # callback function false_value: str = "" IS_DARK = Suffix(true_value="-Dark", test=lambda ctx: ctx.flavor.dark) IS_LIGHT = Suffix(true_value="-Light", test=lambda ctx: not ctx.flavor.dark) -IS_WINDOW_NORMAL = Suffix(true_value="-Normal", test=lambda ctx: ctx.tweaks.has('normal')) -DARK_LIGHT = Suffix( - true_value="-Dark", false_value="-Light", test=lambda ctx: ctx.flavor.dark -) +IS_WINDOW_NORMAL = Suffix(true_value="-Normal", + test=lambda ctx: ctx.tweaks.has('normal')) +DARK_LIGHT = Suffix(true_value="-Dark", false_value="-Light", + test=lambda ctx: ctx.flavor.dark) @dataclass @@ -63,6 +60,7 @@ class BuildContext: accent: Color size: Literal["standard"] | Literal["compact"] tweaks: Tweaks + temp_tweaks_file: str # Add a temporary tweaks file attribute def output_dir(self) -> str: return f"{self.build_root}/{self.build_id()}" @@ -125,7 +123,6 @@ def build(ctx: BuildContext): [ "sassc", *SASSC_OPT, - # NOTE: This uses 'Dark' for the source, but 'dark' for the destination. This is intentional. Do !!NOT!! change it without consultation f"{SRC_DIR}/main/gtk-3.0/gtk-Dark.scss", f"{output_dir}/gtk-3.0/gtk-dark.css", ] @@ -144,7 +141,6 @@ def build(ctx: BuildContext): [ "sassc", *SASSC_OPT, - # NOTE: This uses 'Dark' for the source, but 'dark' for the destination. This is intentional. Do !!NOT!! change it without consultation f"{SRC_DIR}/main/gtk-4.0/gtk-Dark.scss", f"{output_dir}/gtk-4.0/gtk-dark.css", ] @@ -165,16 +161,6 @@ def build(ctx: BuildContext): f"{SRC_DIR}/main/metacity-1/metacity-theme-3{ctx.apply_suffix(IS_WINDOW_NORMAL)}.xml", f"{output_dir}/metacity-1/metacity-theme-3.xml", ) - # FIXME: Symlinks aren't working as intended - # FIXME: Do we need them? - # os.symlink( - # f"{output_dir}/metacity-1/metacity-theme-3.xml", - # f"{output_dir}/metacity-1/metacity-theme-2.xml", - # ) - # os.symlink( - # f"{output_dir}/metacity-1/metacity-theme-3.xml", - # f"{output_dir}/metacity-1/metacity-theme-1.xml", - # ) os.makedirs(f"{output_dir}/xfwm4", exist_ok=True) shutil.copyfile( @@ -187,7 +173,8 @@ def build(ctx: BuildContext): f"{SRC_DIR}/main/xfwm4/themerc{ctx.apply_suffix(IS_LIGHT)}", f"{output_dir}-hdpi/xfwm4/themerc", ) - subst_text(f"{output_dir}-hdpi/xfwm4/themerc", "button_offset=6", "button_offset=9") + subst_text(f"{output_dir}-hdpi/xfwm4/themerc", + "button_offset=6", "button_offset=9") os.makedirs(f"{output_dir}-xhdpi/xfwm4", exist_ok=True) shutil.copyfile( @@ -208,8 +195,8 @@ def build(ctx: BuildContext): ) -def init_tweaks_temp(): - shutil.copyfile(f"{SRC_DIR}/sass/_tweaks.scss", f"{SRC_DIR}/sass/_tweaks-temp.scss") +def init_tweaks_temp(temp_file): + shutil.copyfile(f"{SRC_DIR}/sass/_tweaks.scss", temp_file) def subst_text(path, _from, to): @@ -223,20 +210,20 @@ def subst_text(path, _from, to): GS_VERSION = "46-0" -def gnome_shell_version(): +def gnome_shell_version(temp_file): shutil.copyfile( f"{SRC_DIR}/sass/gnome-shell/_common.scss", - f"{SRC_DIR}/sass/gnome-shell/_common-temp.scss", + temp_file, ) subst_text( - f"{SRC_DIR}/sass/gnome-shell/_common-temp.scss", + temp_file, "@import 'widgets-40-0';", f"@import 'widgets-{GS_VERSION}';", ) if GS_VERSION == "3-28": subst_text( - f"{SRC_DIR}/sass/gnome-shell/_common-temp.scss", + temp_file, "@import 'extensions-40-0';", f"@import 'extensions-{GS_VERSION}';", ) @@ -265,36 +252,37 @@ def translate_accent(ctp_accent: Color): return ctp_to_colloid[ctp_accent.identifier] -def write_tweak(key, default, value): +def write_tweak(key, default, value, temp_file): subst_text( - f"{SRC_DIR}/sass/_tweaks-temp.scss", f"\\${key}: {default}", f"${key}: {value}" + temp_file, f"\\${key}: {default}", f"${key}: {value}" ) def apply_tweaks(ctx: BuildContext): - write_tweak("theme", "'default'", f"'{translate_accent(ctx.accent)}'") + write_tweak("theme", "'default'", f"'{translate_accent(ctx.accent)}'", ctx.temp_tweaks_file) if ctx.size == "compact": - write_tweak("compact", "'false'", "'true'") + write_tweak("compact", "'false'", "'true'", ctx.temp_tweaks_file) subst_text( - f"{SRC_DIR}/sass/_tweaks-temp.scss", + ctx.temp_tweaks_file, "@import 'color-palette-default';", f"@import 'color-palette-catppuccin-{ctx.flavor.identifier}';", ) - write_tweak("colorscheme", "'default'", "'catppuccin'") + write_tweak("colorscheme", "'default'", + "'catppuccin'", ctx.temp_tweaks_file) if ctx.tweaks.has("black"): - write_tweak("blackness", "'false'", "'true'") + write_tweak("blackness", "'false'", "'true'", ctx.temp_tweaks_file) if ctx.tweaks.has("rimless"): - write_tweak("rimless", "'false'", "'true'") + write_tweak("rimless", "'false'", "'true'", ctx.temp_tweaks_file) if ctx.tweaks.has("normal"): - write_tweak("window_button", "'mac'", "'normal'") + write_tweak("window_button", "'mac'", "'normal'", ctx.temp_tweaks_file) if ctx.tweaks.has("float"): - write_tweak("float", "'false'", "'true'") + write_tweak("float", "'false'", "'true'", ctx.temp_tweaks_file) def make_assets(ctx: BuildContext): @@ -304,7 +292,7 @@ def make_assets(ctx: BuildContext): for file in glob.glob(f"{SRC_DIR}/assets/cinnamon/theme/*.svg"): shutil.copy(file, f"{output_dir}/cinnamon/assets") shutil.copy( - f"{SRC_DIR}/assets/cinnamon/thumbnail{ctx.apply_suffix(DARK_LIGHT)}.svg", + f"{SRC_DIR}/assets/cinnamon/thumbnail{ ctx.apply_suffix(DARK_LIGHT)}.svg", f"{output_dir}/cinnamon/thumbnail.png", ) @@ -361,24 +349,34 @@ def make_assets(ctx: BuildContext): subst_text(file, "#3c3c3c", background_alt) if ctx.flavor.dark: - subst_text(f"{output_dir}/cinnamon/thumbnail.png", "#2c2c2c", background) - subst_text(f"{output_dir}/cinnamon/thumbnail.png", "#5b9bf8", theme_color) - - subst_text(f"{output_dir}/gtk-3.0/thumbnail.png", "#2c2c2c", background) - subst_text(f"{output_dir}/gtk-4.0/thumbnail.png", "#2c2c2c", background) - - subst_text(f"{output_dir}/gtk-3.0/thumbnail.png", "#5b9bf8", theme_color) - subst_text(f"{output_dir}/gtk-4.0/thumbnail.png", "#5b9bf8", theme_color) + subst_text(f"{output_dir}/cinnamon/thumbnail.png", + "#2c2c2c", background) + subst_text(f"{output_dir}/cinnamon/thumbnail.png", + "#5b9bf8", theme_color) + + subst_text(f"{output_dir}/gtk-3.0/thumbnail.png", + "#2c2c2c", background) + subst_text(f"{output_dir}/gtk-4.0/thumbnail.png", + "#2c2c2c", background) + + subst_text(f"{output_dir}/gtk-3.0/thumbnail.png", + "#5b9bf8", theme_color) + subst_text(f"{output_dir}/gtk-4.0/thumbnail.png", + "#5b9bf8", theme_color) else: - subst_text(f"{output_dir}/cinnamon/thumbnail.png", "#ffffff", background) + subst_text(f"{output_dir}/cinnamon/thumbnail.png", + "#ffffff", background) subst_text(f"{output_dir}/cinnamon/thumbnail.png", "#f2f2f2", titlebar) - subst_text(f"{output_dir}/cinnamon/thumbnail.png", "#3c84f7", theme_color) + subst_text(f"{output_dir}/cinnamon/thumbnail.png", + "#3c84f7", theme_color) subst_text(f"{output_dir}/gtk-3.0/thumbnail.png", "#f2f2f2", titlebar) - subst_text(f"{output_dir}/gtk-3.0/thumbnail.png", "#3c84f7", theme_color) + subst_text(f"{output_dir}/gtk-3.0/thumbnail.png", + "#3c84f7", theme_color) subst_text(f"{output_dir}/gtk-4.0/thumbnail.png", "#f2f2f2", titlebar) - subst_text(f"{output_dir}/gtk-4.0/thumbnail.png", "#3c84f7", theme_color) + subst_text(f"{output_dir}/gtk-4.0/thumbnail.png", + "#3c84f7", theme_color) for file in glob.glob(f"{SRC_DIR}/assets/cinnamon/common-assets/*.svg"): shutil.copy(file, f"{output_dir}/cinnamon/assets") @@ -399,11 +397,12 @@ def make_assets(ctx: BuildContext): for file in glob.glob(f"{SRC_DIR}/assets/metacity-1/assets{ctx.apply_suffix(IS_WINDOW_NORMAL)}/*.svg"): shutil.copy(file, f"{output_dir}/metacity-1/assets") shutil.copy( - f"{SRC_DIR}/assets/metacity-1/thumbnail{ctx.apply_suffix(IS_DARK)}.png", + f"{SRC_DIR}/assets/metacity-1/thumbnail{ ctx.apply_suffix(IS_DARK)}.png", f"{output_dir}/metacity-1/thumbnail.png", ) - xfwm4_assets = f"{THIS_DIR}/patches/xfwm4/generated/assets-catppuccin-{ctx.flavor.identifier}" + xfwm4_assets = f"{ + THIS_DIR}/patches/xfwm4/generated/assets-catppuccin-{ctx.flavor.identifier}" for file in glob.glob(xfwm4_assets + '/*'): shutil.copy(file, f"{output_dir}/xfwm4") @@ -417,12 +416,12 @@ def make_assets(ctx: BuildContext): def zip_dir(path, zip_file): - # Ref: https://stackoverflow.com/questions/46229764/python-zip-multiple-directories-into-one-zip-file for root, _, files in os.walk(path): for file in files: zip_file.write( os.path.join(root, file), - os.path.relpath(os.path.join(root, file), os.path.join(path, "..")), + os.path.relpath(os.path.join(root, file), + os.path.join(path, "..")), ) @@ -463,16 +462,6 @@ def build_theme(ctx: BuildContext): True, ) - """ - if (command -v xfce4-popup-whiskermenu &> /dev/null) && $(sed -i "s|.*menu-opacity=.*|menu-opacity=95|" "$HOME/.config/xfce4/panel/whiskermenu"*".rc" &> /dev/null); then - sed -i "s|.*menu-opacity=.*|menu-opacity=95|" "$HOME/.config/xfce4/panel/whiskermenu"*".rc" - fi - - if (pgrep xfce4-session &> /dev/null); then - xfce4-panel -r - fi - """ - def apply_colloid_patches(): if os.path.isfile("colloid/.patched"): @@ -482,7 +471,6 @@ def apply_colloid_patches(): return logger.info("Applying patches...") - # Change into colloid for patch in [ "plank-dark.patch", "plank-light.patch", @@ -493,7 +481,8 @@ def apply_colloid_patches(): ]: path = f"./patches/colloid/{patch}" logger.info(f"Applying patch '{patch}', located at '{path}'") - subprocess.check_call(["git", "apply", path, "--directory", f"colloid"]) + subprocess.check_call( + ["git", "apply", path, "--directory", f"colloid"]) with open("colloid/.patched", "w") as f: f.write("true") @@ -601,6 +590,7 @@ def parse_args(): def process_accent(args, palette, accent): + temp_file = f"{SRC_DIR}/sass/_tweaks-temp-{accent.identifier}.scss" tweaks = Tweaks(tweaks=args.tweaks) if args.zip: @@ -616,12 +606,13 @@ def process_accent(args, palette, accent): size=args.size, tweaks=tweaks, output_format=output_format, + temp_tweaks_file=temp_file, # Pass the temporary file to context ) logger.info("Building temp tweaks file") - init_tweaks_temp() + init_tweaks_temp(temp_file) logger.info("Inserting gnome-shell imports") - gnome_shell_version() + gnome_shell_version(temp_file) logger.info("Building main theme") build_theme(ctx) logger.info(f"Completed {palette.identifier} with {accent.identifier}") @@ -660,7 +651,6 @@ def main(): "lavender", ] - # Use ThreadPoolExecutor to process accents in parallel with concurrent.futures.ThreadPoolExecutor() as executor: futures = [] for accent_name in accents: