all repos — py-vite @ a2ce44b273f3e270dd50db400fd3fb7551b6cd20

the original vite, written in python

vite.py (view raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
#!/usr/bin/env python3

"""
Vite - A simple and minimal static site generator.
"""

import sys
import argparse
import pathlib
import os

from huepy import *

usage = lightblue('vite.py') + ' new [PATH]' 
desc = green('A simple and minimal static site generator.')
parser = argparse.ArgumentParser(description=desc, usage=usage)
parser.add_argument('new', nargs='*', help='Create new Vite project.')

if len(sys.argv) == 1:
    parser.print_help()
    sys.exit(1)

try:
    args = parser.parse_args()
    project_path = args.new[1]
except IndexError:
    parser.print_help()
    sys.exit(1)


def create_project(path):
    try:
        abs_path = pathlib.Path(path).resolve()
        cur_path = pathlib.Path('.').resolve()
        os.makedirs(os.path.join(path, 'build'))
        os.mkdir(os.path.join(path, 'pages'))
        os.mkdir(os.path.join(path, 'templates'))
        os.mkdir(os.path.join(path, 'static'))
        create_config(path)
        os.symlink(os.path.join(cur_path, 'make.py'),
                   os.path.join(abs_path, 'make.py'))
        create_template(path)
        print(good('Created project directory at %s.' % (abs_path)))
    except FileExistsError:
        print(bad('Error: specified path exists.'))


def create_config(path):
    with open(path + '/config.py', 'w') as f:
        f.write("""# config.py - Vite's configuration script

title = ''
author = ''
header = ''
footer = '' 
template = 'index.html'  # default is index.html
               """)


def create_template(path):
    with open(os.path.join(path, 'templates', 'index.html'), 'w') as f:
        f.write("""
<!DOCTYPE html>
<html>
<header>
	{{ header }}
	<title>
		{{ title }}	
	</title>
</header>

<body>
	{{ body }}
</body>

<footer>
	{{ footer }}
	<p> © {{ author }} </p>
<footer>

                """)


def main():
    if args.new:
        create_project(project_path)


if __name__ == "__main__":
    main()