You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
watcha-matrix-react-sdk/scripts/watcha_build-theme.py

61 lines
1.7 KiB

#!/usr/bin/env python3
from pathlib import Path
import re
CSS_PREFIX = "_watcha-"
VAR_PREFIX = "$dark-"
DEST = "res/themes/watcha/css"
DARK_CSS_PATH = "res/themes/dark/css/_dark.scss"
CSS_PATHS = [
"res/css/structures/_LeftPanel.scss",
"res/css/structures/_QuickSettingsButton.scss",
"res/css/structures/_RoomSearch.scss",
"res/css/structures/_SpacePanel.scss",
"res/css/views/avatars/_DecoratedRoomAvatar.scss",
"res/css/views/rooms/_NotificationBadge.scss",
"res/css/views/rooms/_RoomList.scss",
"res/css/views/rooms/_RoomListHeader.scss",
"res/css/views/rooms/_RoomSublist.scss",
"res/css/views/rooms/_RoomTile.scss",
"res/css/views/rooms/_VideoRoomSummary.scss",
]
VAR_PATTERN = r"\$[a-z1-9\-]+"
def get_dest(str_path):
path = Path(str_path)
name = CSS_PREFIX + path.name[1:]
return Path(DEST, name)
def replace_var(line):
match = re.search(f"(?!^){VAR_PATTERN}", line)
if match is not None:
var = match.group(0)
if var in dark_vars:
dark_name = VAR_PREFIX + var[1:]
line = line.replace(var, dark_name)
return line
dark_vars = []
with get_dest(DARK_CSS_PATH).open("w") as f:
for line in open(DARK_CSS_PATH):
match = re.search(f"^{VAR_PATTERN}", line)
if match is not None:
assigned_var = match.group(0)
dark_vars.append(assigned_var)
dark_name = VAR_PREFIX + assigned_var[1:]
line = line.replace(assigned_var, dark_name)
line = replace_var(line)
f.write(line)
for path in CSS_PATHS:
with get_dest(path).open("w") as f:
for line in open(path):
line = replace_var(line)
f.write(line)