|
|
@ -33,62 +33,63 @@ md_extensions = ['fenced_code', 'codehilite', 'nl2br', 'toc', 'smarty', 'tables' |
|
|
|
def print_file(in_file, out_file): |
|
|
|
print('%-62s -> %s' % (in_file, out_file)) |
|
|
|
|
|
|
|
os.makedirs(output_directory, exist_ok=True) |
|
|
|
|
|
|
|
for (dirpath, _, filenames) in os.walk(static_directory): |
|
|
|
for filename in filenames: |
|
|
|
source = os.path.join(dirpath, filename) |
|
|
|
out_path = dirpath.replace(static_directory, '', 1) |
|
|
|
out_path = out_path.lstrip('/') |
|
|
|
dest_dir = os.path.join(output_directory, out_path) |
|
|
|
os.makedirs(dest_dir, exist_ok=True) |
|
|
|
dest = os.path.join(dest_dir, filename) |
|
|
|
print_file(source, dest) |
|
|
|
shutil.copy2(source, dest) |
|
|
|
|
|
|
|
|
|
|
|
template = open('template.html').read() |
|
|
|
for (dirpath, _, filenames) in os.walk(input_directory): |
|
|
|
for filename in filenames: |
|
|
|
markdown_filename = os.path.join(dirpath, filename) |
|
|
|
if not markdown_filename.endswith('.md'): |
|
|
|
continue |
|
|
|
|
|
|
|
markdown_file = open(markdown_filename) |
|
|
|
text = markdown_file.read() |
|
|
|
markdown_file.close() |
|
|
|
|
|
|
|
if not text.startswith('# '): |
|
|
|
text = '# ' + text |
|
|
|
|
|
|
|
match = re.match(r'^(.*?)\n', text) |
|
|
|
if match: |
|
|
|
title = match.group(1).lstrip('# ') |
|
|
|
else: |
|
|
|
title = text |
|
|
|
title += ' | Colin McMillen' |
|
|
|
if markdown_filename == os.path.join(input_directory, 'index.md'): |
|
|
|
title = 'Colin McMillen' |
|
|
|
|
|
|
|
out_filename = os.path.basename(markdown_filename).replace('.md', '.html') |
|
|
|
|
|
|
|
out_dirpath = os.path.join(output_directory, dirpath) |
|
|
|
out_dirpath = out_dirpath.replace('/content', '', 1) |
|
|
|
out_fullpath = os.path.join(out_dirpath, out_filename) |
|
|
|
page_url = out_fullpath.replace('output/', '', 1) |
|
|
|
if page_url.endswith('index.html'): # strip off index.html |
|
|
|
page_url = page_url[:-len('index.html')] |
|
|
|
|
|
|
|
html = markdown.markdown(text, extensions=md_extensions, output_format='html5') |
|
|
|
output = template.replace('__TITLE_GOES_HERE__', title) |
|
|
|
output = output.replace('__CONTENT_GOES_HERE__', html) |
|
|
|
output = output.replace('__PAGE_URL_GOES_HERE__', page_url) |
|
|
|
|
|
|
|
os.makedirs(out_dirpath, exist_ok=True) |
|
|
|
print_file(markdown_filename, out_fullpath) |
|
|
|
out_file = open(out_fullpath, 'w') |
|
|
|
out_file.write(output) |
|
|
|
out_file.close() |
|
|
|
|
|
|
|
def copy_static_files(): |
|
|
|
for (dirpath, _, filenames) in os.walk(static_directory): |
|
|
|
for filename in filenames: |
|
|
|
source = os.path.join(dirpath, filename) |
|
|
|
out_path = dirpath.replace(static_directory, '', 1) |
|
|
|
out_path = out_path.lstrip('/') |
|
|
|
dest_dir = os.path.join(output_directory, out_path) |
|
|
|
os.makedirs(dest_dir, exist_ok=True) |
|
|
|
dest = os.path.join(dest_dir, filename) |
|
|
|
print_file(source, dest) |
|
|
|
shutil.copy2(source, dest) |
|
|
|
|
|
|
|
|
|
|
|
def process_markdown_files(): |
|
|
|
template = open('template.html').read() |
|
|
|
for (dirpath, _, filenames) in os.walk(input_directory): |
|
|
|
for filename in filenames: |
|
|
|
markdown_filename = os.path.join(dirpath, filename) |
|
|
|
if not markdown_filename.endswith('.md'): |
|
|
|
continue |
|
|
|
|
|
|
|
markdown_file = open(markdown_filename) |
|
|
|
text = markdown_file.read() |
|
|
|
markdown_file.close() |
|
|
|
|
|
|
|
if not text.startswith('# '): |
|
|
|
text = '# ' + text |
|
|
|
|
|
|
|
match = re.match(r'^(.*?)\n', text) |
|
|
|
if match: |
|
|
|
title = match.group(1).lstrip('# ') |
|
|
|
else: |
|
|
|
title = text |
|
|
|
title += ' | Colin McMillen' |
|
|
|
if markdown_filename == os.path.join(input_directory, 'index.md'): |
|
|
|
title = 'Colin McMillen' |
|
|
|
|
|
|
|
out_filename = os.path.basename(markdown_filename).replace('.md', '.html') |
|
|
|
|
|
|
|
out_dirpath = os.path.join(output_directory, dirpath) |
|
|
|
out_dirpath = out_dirpath.replace('/content', '', 1) |
|
|
|
out_fullpath = os.path.join(out_dirpath, out_filename) |
|
|
|
page_url = out_fullpath.replace('output/', '', 1) |
|
|
|
if page_url.endswith('index.html'): # strip off index.html |
|
|
|
page_url = page_url[:-len('index.html')] |
|
|
|
|
|
|
|
html = markdown.markdown(text, extensions=md_extensions, output_format='html5') |
|
|
|
output = template.replace('__TITLE_GOES_HERE__', title) |
|
|
|
output = output.replace('__CONTENT_GOES_HERE__', html) |
|
|
|
output = output.replace('__PAGE_URL_GOES_HERE__', page_url) |
|
|
|
|
|
|
|
os.makedirs(out_dirpath, exist_ok=True) |
|
|
|
print_file(markdown_filename, out_fullpath) |
|
|
|
out_file = open(out_fullpath, 'w') |
|
|
|
out_file.write(output) |
|
|
|
out_file.close() |
|
|
|
|
|
|
|
|
|
|
|
def make_sitemap(): |
|
|
@ -106,6 +107,9 @@ def make_rss(): # TODO: implement. |
|
|
|
|
|
|
|
|
|
|
|
def main(): |
|
|
|
os.makedirs(output_directory, exist_ok=True) |
|
|
|
copy_static_files() |
|
|
|
process_markdown_files() |
|
|
|
make_sitemap() |
|
|
|
make_rss() |
|
|
|
|
|
|
|