Skip to content
This repository has been archived by the owner on Jun 2, 2024. It is now read-only.

Commit

Permalink
add: dispatch to build workflow and using different temp file on buil…
Browse files Browse the repository at this point in the history
…d.py
  • Loading branch information
iruzo committed May 24, 2024
1 parent 58471b5 commit 86f4256
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 69 deletions.
1 change: 1 addition & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
name: "Generate test artifacts"

on:
workflow_dispatch:
pull_request:
types: [opened, reopened, synchronize]

Expand Down
128 changes: 59 additions & 69 deletions build.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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
Expand All @@ -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()}"
Expand Down Expand Up @@ -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",
]
Expand All @@ -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",
]
Expand All @@ -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(
Expand All @@ -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(
Expand All @@ -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):
Expand All @@ -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}';",
)
Expand Down Expand Up @@ -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):
Expand All @@ -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",
)

Expand Down Expand Up @@ -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")
Expand All @@ -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")

Expand All @@ -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, "..")),
)


Expand Down Expand Up @@ -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"):
Expand All @@ -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",
Expand All @@ -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")
Expand Down Expand Up @@ -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:
Expand All @@ -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}")
Expand Down Expand Up @@ -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:
Expand Down

0 comments on commit 86f4256

Please sign in to comment.