diff options
Diffstat (limited to 'bcst/theme.py')
| -rw-r--r-- | bcst/theme.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/bcst/theme.py b/bcst/theme.py new file mode 100644 index 0000000..58e7902 --- /dev/null +++ b/bcst/theme.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python + +from bcst.resource import Resource +from shutil import copytree, ignore_patterns +from jinja2 import Template +import os +from os import path + +themes_location=path.join(path.dirname(path.abspath(__file__)),"themes") + + +def list_themes(): + themes=list() + for f in os.listdir(themes_location): + if(not(os.path.isfile(os.path.join(themes_location,f)))): + themes.append(f) + return(themes) + +def get_theme_path(name): + p=path.join(themes_location,name) + if(path.isdir(p)): + return(p) + else: + print("Could not find theme: "+name) + exit(1) + +class Theme: + + def __init__(self, name, resource_data): + self.theme_path=get_theme_path(name) + res=Resource(self.theme_path+"/resources.json") + self.data=res.json + self.data.update(resource_data) + # Read theme + try: + with open(self.theme_path+"/index.html",'r') as f: + self.template=Template(f.read()) + except IOError: + print("Unable to found "+resource) + exit(1) + + + def deploy(self, dest_path): + copytree(self.theme_path, dest_path, dirs_exist_ok=True,ignore=ignore_patterns("*.json","index.html")) + themes_dir=os.path.split(self.theme_path)[0] + theme_dir=os.path.split(self.theme_path)[1] + with open(dest_path+"/index.html", "w") as index: + index.write(self.template.render(self.data)) |
