import os from django.conf import settings from django.core.management.base import BaseCommand class Command(BaseCommand): help = "Renders Markdown to HTML" def handle(self, *args, **options): try: import markdown # We use pygments for highlighting code samples import pygments except ImportError as e: self.stdout.write(f"This command requires the {e.name} package.") self.stdout.write("Please install it with:\n\n") self.stdout.write(f" pip install {e.name}\n\n") return extensions = ["fenced_code", "codehilite", "tables", "def_list", "attr_list"] ec = {"codehilite": {"css_class": "highlight", "startinline": True}} docs_path = os.path.join(settings.BASE_DIR, "templates/docs") for doc in os.listdir(docs_path): if not doc.endswith(".md"): continue print("Rendering %s" % doc) src_path = os.path.join(docs_path, doc) dst_path = os.path.join(docs_path, doc[:-3] + ".html") text = open(src_path, "r", encoding="utf-8").read() html = markdown.markdown(text, extensions=extensions, extension_configs=ec) with open(dst_path, "w", encoding="utf-8") as f: f.write(html)