import os import yaml import shutil from jinja2 import Template import sass from page import Page pages = [] # SRC_DIR = "/home/mreenen/Documents/git/kladjes" SRC_DIR = os.path.abspath("/home/mreenen/Documents/git/kladjes") TARGET_DIR = os.path.abspath("public") def renderPage(page, template, header): html = page.renderPage(template, header, SRC_DIR) path = TARGET_DIR + page.url if (path.split('.')[-1] != "html"): path = os.path.abspath(path + '/index.html') pathDir = os.path.dirname(path) fileName = os.path.basename(path) os.makedirs(pathDir, exist_ok=True) with open(path, 'w') as file: file.write(html) del html if (page.assets is not None): print("assets found") for asset in page.assets: srcAssets = SRC_DIR + asset destAssets = TARGET_DIR + asset if(not os.path.isdir(destAssets)): os.mkdir(destAssets) print(f"asset: {asset}") for f in os.listdir(srcAssets): print(f"f: {f}") if ((f[0] != '.') and os.path.isfile(srcAssets + "/" + f)): print("copy: " + asset + "/" + f) shutil.copyfile(srcAssets + "/" + f, destAssets + "/" + f) def findPageInList(list, url): i = 0 while (i < len(list)): if (list[i].url == url): return i i += 1 return -1 def render(rootPage, template, header): done = False isSub = False lastPage = [] curPage = 0 while not done: if (curPage == 0): page = rootPage else: pageIndex = curPage - 1 page = None if (pageIndex < len(rootPage.subPages)): page = rootPage.subPages[pageIndex] else: pageIndex -= len(rootPage.subPages) if (pageIndex < len(rootPage.sidebar)): page = rootPage.sidebar[pageIndex] if (page is not None): if (page.clickable): renderPage(page, template, header) if ((curPage != 0) and ((len(page.subPages) > 0) or (len(page.sidebar) > 0))): rootPage = page lastPage.append(curPage) curPage = 1 else: curPage += 1 else: if (len(lastPage) > 0): curPage = lastPage.pop() + 1 rootPage = rootPage.parrent else: done = True print(f"done") def index(fileName): global pages with open(SRC_DIR + '/index.yaml', 'r') as file: index = yaml.safe_load(file) if ('sitemap' not in index): print("ERROR: /index.yaml is missing a sitemap") else: pages = [] for item in index["sitemap"]: pages.append(Page(item, None)) for page in pages: page.scan(SRC_DIR) print("START INDEX") for p in pages: print(p) print("END INDEX") seperator = False header = "" for p in pages: if (seperator): header += "|" header += p.topMenuHTML() seperator = True os.makedirs(TARGET_DIR, exist_ok=True) with open(TARGET_DIR + '/header.html', 'w') as file: file.write(header); with open('template.html') as file: template = Template(file.read()) for p in pages: render(p, template, header) with open('style.scss', 'r') as file: css = sass.compile(string=file.read()) with open(TARGET_DIR + '/style.css', 'w') as file: file.write(css) del css if __name__ == '__main__': index('index.yml')