Simple site generation
This commit is contained in:
parent
ed18ceb6a5
commit
89ea1f6062
3 changed files with 39 additions and 4 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,3 +1,4 @@
|
|||
.venv
|
||||
build/
|
||||
*.egg-info
|
||||
__pycache__/
|
|
@ -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()
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
Loading…
Reference in a new issue