#!/usr/bin/env python
# -*- coding: utf-8 -*-


import sys
from wgnsite_lib import *
from sys import argv
import urllib
from urllib import request
import datetime
import os

import os
from datetime import datetime
from jinja2 import Environment, PackageLoader
from markdown2 import markdown



def post(judul):
    baca = open("archetypes/default.md", "r")

    f = open(judul)

    f.write(baca)
    f.close()

    exit()



def help():


        


    pesanh = """
wgnsite - a Simple Static Site Generator.

Usage:
    wgnsite [flag]
    wgnsite --> for generate output from your site



-h --help     show this message.
-v --version  show version information.
-n --new      make a new site folderself.
-p --post     make a new post. 

"""


    print(pesanh)
    exit()

def newsite(root_path):
    os.mkdir(root_path)
    
  
    list = ['output', 'content', 'templates'] 

    for items in list: 
        path = os.path.join(root_path, items) 
        os.mkdir(path)
        

    tulissan = """Congratulations! Your new site is created !!
"""        

    print(tulissan)
    exit()

def main():
    try:
    # mengubah markdown menjadi html

    #os.mkdir("output")
        POSTS = {}

        for markdown_post in os.listdir('content'):
            file_path = os.path.join('content', markdown_post)

            with open(file_path, 'r') as file:
                POSTS[markdown_post] = markdown(file.read(), extras=['metadata'])

    
        POSTS = {
            post: POSTS[post] for post in sorted(POSTS, key=lambda post: datetime.strptime(POSTS[post].metadata['date'], '%Y-%m-%d'), reverse=True)
        }

        env = Environment(loader=PackageLoader('main', 'templates'))
        home_template = env.get_template('home.html')
        post_template = env.get_template('post.html')

        posts_metadata = [POSTS[post].metadata for post in POSTS]
        tags = [post['tags'] for post in posts_metadata]
        home_html = home_template.render(posts=posts_metadata, tags=tags)

        with open('output/index.html', 'w') as file:
            file.write(home_html)

        for post in POSTS:
            post_metadata = POSTS[post].metadata

        post_data = {
            'content': POSTS[post],
            'title': post_metadata['title'],
            'date': post_metadata['date']
        }

        post_html = post_template.render(post=post_data)
        post_file_path = 'output/posts/{slug}.html'.format(slug=post_metadata['slug'])

        os.makedirs(os.path.dirname(post_file_path), exist_ok=True)
        with open(post_file_path, 'w') as file:
            file.write(post_html)
        exit()
    
    except:
        exit("Error: site not falid")



if __name__ == '__main__':

	if len(argv) == 1:
		main()

	if argv[1] in ('-h', '--help'):
		help()
	
	elif argv[1] == ('-n', '--new'):
	
		NameSite = argv[2]
		newsite(NameSite)
    
	elif argv[1] == ('-p', '--post'):
	
		JudulP = argv[2]
		newsite(JudulP)


