#!/usr/bin/env python import os import sys import markdown import re # SRC # +-2022/ # | +-10/ # | +-12/ # | +-25/ # +-2023/ # | +-1/ # | +-26/ # | +-3/ # ... def print_usage(): print("\nusage: python mkblog.py SRC DEST\n") print("\n") print("\t\tSRC\tinput markdown file") print("\t\tDEST\tdestination html file") # check args if len(sys.argv) != 3: print_usage() sys.exit(1) src_file = sys.argv[1] dest_file = sys.argv[2] # check blog root exists if not os.path.isfile(src_file): print("{blog_root} doesn't exist") sys.exit(1) # make dest dir if it doesnt exist dest_dir = os.path.dirname(dest_file) print(dest_dir) if not os.path.isdir(dest_dir): os.makedirs(dest_dir) # write markdown into a dummy file first so that we can add lines before it in the final output dummy_file = f"{dest_file}.bak" open(dummy_file, 'w').close() print(f"{src_file} -> {dummy_file}") markdown.markdownFromFile(input=src_file, output=dummy_file, extensions=["fenced_code"]) # TODO: a lot of this templating work is specific to the ktyl.dev blog - ideally, that stuff should # be in *that* repo, not this one print(f"{dummy_file} -> {dest_file}") with open(dummy_file, 'r') as read_file, open(dest_file, 'w') as write_file: write_file.write("#include blogstart.html\n") # modify the basic html to make it nicer for styling later html = read_file.read() # extract images from their enclosing

tags and put them in img panels html = re.sub('(

()

)', r'
\2
', html) # wrap