#!/usr/bin/env python3 import sys as _sys import os as _os import argparse as _argparse def string_coin( template, arguments ): result = template for (key, value, ) in arguments.items(): result = result.replace("{{%s}}" % key, value) return result def file_read(path): handle = open(path, "r") content = handle.read() handle.close() return content def file_write(path, content): handle = open(path, "w") handle.write(content) handle.close() def main(): ## consts conf = { "title": "Espe", "source_directory": "source" } ## args argument_parser = _argparse.ArgumentParser() argument_parser.add_argument( "-t", "--target-directory", type = str, default = "build", ) argument_parser.add_argument( "-f", "--format", type = str, action = "append", choices = ["markdown", "html", "pdf"], default = [], ) args = argument_parser.parse_args() ## vars target_directory = _os.path.abspath(args.target_directory) formats = (["html"] if (len(args.format) <= 0) else args.format) ## exec _os.makedirs(args.target_directory, exist_ok = True) for format_ in formats: if (format_ == "markdown"): target_path = string_coin( "{{target_directory}}/espe.md", { "target_directory": target_directory, } ) file_write( target_path, string_coin( "# {{title}}\n\n{{content}}", { "title": conf["title"], "content": file_read( string_coin( "{{source_directory}}/notizen.md", { "source_directory": conf["source_directory"], } ) ), } ) ) _sys.stdout.write("%s\n" % target_path) elif (format_ == "html"): target_path = string_coin( "{{target_directory}}/espe.html", { "target_directory": target_directory, } ) _os.system( string_coin( "pandoc {{source_directory}}/notizen.md --to=html --title={{title}} --metadata='title:{{title}}' --output={{target_path}}", { "source_directory": conf["source_directory"], "target_path": target_path, "title": conf["title"], } ) ) _sys.stdout.write("%s\n" % target_path) elif (format_ == "pdf"): target_path = string_coin( "{{target_directory}}/espe.pdf", { "target_directory": target_directory, } ) _os.system( string_coin( "pandoc {{source_directory}}/notizen.md --to=pdf --title={{title}} --metadata='title:{{title}}' --output={{target_path}}", { "source_directory": conf["source_directory"], "target_path": target_path, "title": conf["title"], } ) ) _sys.stdout.write("%s\n" % target_path) else: raise ValueError("invalid format: %s" % format_) main()