Weilbyte
2 years ago
1 changed files with 58 additions and 0 deletions
@ -0,0 +1,58 @@ |
|||||
|
# Script to compile SASS to CSS |
||||
|
# Requires libsass and watchdog pip packages |
||||
|
# |
||||
|
# Input: PVEDiscordDark.sass |
||||
|
# Output: PVEDiscordDark.css (compressed, no sourcemap) |
||||
|
# |
||||
|
# Passing 'w' or 'watch' as argument to the script will auto-compile on every SASS change |
||||
|
|
||||
|
import time |
||||
|
import os |
||||
|
import sys |
||||
|
|
||||
|
try: |
||||
|
import sass |
||||
|
from watchdog.observers import Observer |
||||
|
from watchdog.events import PatternMatchingEventHandler |
||||
|
except ImportError: |
||||
|
print("FATAL: libsass or watchdog package not installed but required") |
||||
|
exit(1) |
||||
|
|
||||
|
self_location = os.path.dirname(os.path.realpath(__file__)) |
||||
|
sass_src_name = "PVEDiscordDark.sass" |
||||
|
sass_src_path = os.path.join(self_location, "sass", sass_src_name) |
||||
|
sass_out_path = os.path.splitext(sass_src_path)[0] + ".css" |
||||
|
sass_out_last_generated = 0 |
||||
|
|
||||
|
def compile(): |
||||
|
global sass_out_last_generated |
||||
|
if time.time() - sass_out_last_generated < 0.5: |
||||
|
return |
||||
|
with open(sass_out_path, "w") as f: |
||||
|
try: |
||||
|
f.write(sass.compile(filename=sass_src_path, output_style="compressed")) |
||||
|
print(f"Compiled {sass_src_name} to {os.path.basename(sass_out_path)}") |
||||
|
except sass.CompileError as e: |
||||
|
print(f"ERROR: {e}") |
||||
|
sass_out_last_generated = time.time() |
||||
|
|
||||
|
if __name__ == "__main__": |
||||
|
if not os.path.exists(sass_src_path): |
||||
|
print(f"FATAL: SASS source file ({sass_src_name}) not found") |
||||
|
exit(1) |
||||
|
|
||||
|
should_watch = len(sys.argv) > 1 and (sys.argv[1] == "w" or sys.argv[1] == "w") |
||||
|
|
||||
|
compile() |
||||
|
if should_watch: |
||||
|
handler = PatternMatchingEventHandler(["*.sass"]) |
||||
|
handler.on_modified = lambda event: compile() |
||||
|
observer = Observer() |
||||
|
observer.schedule(handler, os.path.dirname(sass_src_path), recursive=True) |
||||
|
observer.start() |
||||
|
try: |
||||
|
while True: |
||||
|
time.sleep(1) |
||||
|
except KeyboardInterrupt: |
||||
|
observer.stop() |
||||
|
observer.join() |
Loading…
Reference in new issue