diff --git a/.gitignore b/.gitignore index 7a90478..d7c89e0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .venv build/ -*.egg-info \ No newline at end of file +*.egg-info +__pycache__/ \ No newline at end of file diff --git a/src/dialann/main_cli.py b/src/dialann/main_cli.py index 62f39cd..1210337 100644 --- a/src/dialann/main_cli.py +++ b/src/dialann/main_cli.py @@ -3,11 +3,14 @@ import argparse import logging from pathlib import Path +from .site_generator import SiteGenerator + logger = logging.getLogger(__name__) -def generate(build_dir: Path): +def generate(source_dir:Path, build_dir: Path): - pass + generator = SiteGenerator(source_dir, build_dir) + generator.run() def main_cli(): parser = argparse.ArgumentParser() @@ -16,8 +19,12 @@ def main_cli(): type=Path, help="Path to the build output", ) + parser.add_argument( + "--source_dir", type=Path, default=Path(), + help="Site source directory") + args = parser.parse_args() - generate(args.build_dir) + generate(args.source_dir, args.build_dir) if __name__ == "__main__": main_cli() diff --git a/src/dialann/site_generator.py b/src/dialann/site_generator.py index e69de29..d509ffa 100644 --- a/src/dialann/site_generator.py +++ b/src/dialann/site_generator.py @@ -0,0 +1,27 @@ +from pathlib import Path +import os + +from markdown_it import MarkdownIt + +class SiteGenerator(): + + def __init__(self, source_dir: Path, + build_dir: Path): + self.source_dir = source_dir + self.build_dir = build_dir + self.parser = MarkdownIt() + + def run(self): + + for md_file in self.source_dir.glob('**/*.md'): + with open(md_file, 'r', encoding='utf-8') as f: + md_src = f.read() + + html_path = self.build_dir / (str(md_file.stem) + ".html") + os.makedirs(html_path.parent, exist_ok=True) + + html_src = self.parser.render(md_src) + with open(html_path, 'w', encoding='utf-8') as f: + f.write(html_src) + +