diff --git a/build.py b/build.py index 0659462..fc15198 100644 --- a/build.py +++ b/build.py @@ -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()