import os
import shutil
import pathlib
from datetime import datetime
from jinja2 import Environment, FileSystemLoader

env = Environment(loader=FileSystemLoader("src"))
env.globals['now'] = datetime.now
env.filters['datetime'] = lambda u: datetime.strptime(u, '%Y-%m-%d')



def is_jinja(filename):
    split_tup = os.path.splitext(filename)
    return split_tup[1] == ".jinja"

def is_ignored(filename):
    for i in ignored_files:
        if filename == i:
            return True
    return False


def filerun(filename,folder):
    if is_ignored(filename):
        return
    if is_jinja(filename):
        template = env.get_template(filename)
        output = template.render()
        output2 = output.render()
        split_tup = os.path.splitext(filename)
        pathlib.Path(folder.replace("src","www")).mkdir(parents=True, exist_ok=True)
        print(os.path.join(folder.replace("src","www"),split_tup[0]))
        with open(os.path.join(folder.replace("src","www"),split_tup[0]),"w") as f:
            f.write(output2)
    else:
        pathlib.Path(folder.replace("src","www")).mkdir(parents=True, exist_ok=True)
        shutil.copy2(os.path.join(folder,filename), os.path.join(folder.replace("src","www"),filename))


def do_folder(folder):
    f = []
    for (dirpath, dirnames, filenames) in os.walk(folder):
        f.extend(filenames)
        break
    
    print(f)
    print(dirnames)
    
    for file in f:
        filerun(file,folder)

    if len(dirnames) == 0:
        return
    print(len(dirnames))
    for folders in dirnames:
        print(folders)
        if is_ignored(folders):
            continue
        print(folders)
        do_folder(os.path.join(folder,folders))


with open(".ssgenignore") as f:
    ignored_files = f.read().split("\n")


#if not os.path.exists("www"):
#    os.mkdir("www") 
#else:
#    dir = os.listdir("www") 
#    if len(dir) != 0:
#        print("www directory isnt empty!")
#        exit()


do_folder("src")