import datetime
now = datetime.datetime.now()
import sys
import shutil
import os

class Sassy():
    def __init__(self, theme):
        print("### OnlyLegs Theme Manager ###")
        print(f"{now.hour}:{now.minute}:{now.second} - Loading theme...")
        
        try:
            import sass
        except ImportError:
            print("Could not find libsass!")
            sys.exit(1)
        
        theme_path = os.path.join('usr', 'themes', theme, 'style.scss')
        
        if os.path.exists(theme_path):
            print(f"Theme '{theme}' found at:", theme_path)
            self.sass = sass
            self.loadTheme(theme_path)
        else:
            print("No theme found!")
            sys.exit(1)
            
        font_path = os.path.join('usr', 'themes', theme, 'fonts')
        
        if os.path.exists(font_path):
            print("Fonts found at:", font_path)
            self.loadFonts(font_path)
        else:
            print("No fonts found!")
        
        print(f"{now.hour}:{now.minute}:{now.second} - Done!\n")
    
    def loadTheme (self, theme):
        with open('static/theme/style.css', 'w') as f:
            try:
                f.write(self.sass.compile(filename=theme, output_style='compressed'))
                print("Compiled successfully to:", f.name)
            except self.sass.CompileError as e:
                print("Failed to compile!\nFull error:", e)
                sys.exit(1)
    
    def loadFonts (self, font_path):
        dest = os.path.join('static', 'theme', 'fonts')
        
        if os.path.exists(dest):
            print("Removing old fonts...")
            try:
                shutil.rmtree(dest)
                print("Removed old fonts!")
            except Exception as e:
                print("Failed to remove old fonts!\nFull error:", e)
                sys.exit(1)
        
        try:
            shutil.copytree(font_path, dest)
            print("Copied fonts to:", dest)
        except Exception as e:
            print("Failed to copy fonts!\nFull error:", e)
            sys.exit(1)
        
        #print ("Removing old fonts from:", dest)
        #for old in os.listdir(dest):
        #    dir = os.path.join(dest , old)
        #    
        #    try:
        #        if os.path.isfile(dir) or os.path.islink(dir):
        #            os.unlink(dir)
        #            print("Removed:", old)
        #        elif os.path.isdir(dir):
        #            shutil.rmtree(dir)
        #            print("Removed:", old)
        #    except Exception as e:
        #        print("Failed to remove:", dir)
        #        print("Full error:", e)
        
        #print ("Loading new fonts")
        #for font in os.listdir(font_path):
        #    dir = os.path.join(font_path, dest)
        #    new_dir = os.path.join(dest, font)
        #        
        #    try:
        #        if os.path.isfile(dir):
        #            shutil.copy(dir, new_dir)
        #            print("Copied font:", font)
        #    except Exception as e:
        #        print("Failed to copy font:", font)
        #        print("Full error:", e)