From 6bd04a10e40d4cfcb2d8e5e24d9e29feadee6230 Mon Sep 17 00:00:00 2001
From: Weilbyte <me@weilbyte.dev>
Date: Thu, 6 Oct 2022 00:31:43 +0200
Subject: [PATCH] add compile script

---
 PVEDiscordDark/sassy.py | 58 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 58 insertions(+)
 create mode 100644 PVEDiscordDark/sassy.py

diff --git a/PVEDiscordDark/sassy.py b/PVEDiscordDark/sassy.py
new file mode 100644
index 0000000..7606921
--- /dev/null
+++ b/PVEDiscordDark/sassy.py
@@ -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()
\ No newline at end of file
-- 
GitLab