Compare commits

..

4 Commits

4 changed files with 27 additions and 14 deletions

View File

@@ -17,6 +17,9 @@ install-dep:
clean: clean:
@rm -r ./dist ./build @rm -r ./dist ./build
publish:
@cd ./outbox && python3 -m http.server
install: install:
ifeq ($(USER), root) ifeq ($(USER), root)
@cp ./dist/main /usr/local/bin/blog @cp ./dist/main /usr/local/bin/blog

View File

@@ -1,12 +1,13 @@
import glob import glob
import shutil import shutil
import datetime import datetime
import textwrap import textwrap
from pathlib import Path from pathlib import Path
from blog.page import Page from blog.page import Page
from blog.config import Config from blog.config import Config
from jinja2 import Environment, FileSystemLoader, Template from jinja2 import Environment, FileSystemLoader, Template
class Blog: class Blog:
def __init__(self, conf: Config): def __init__(self, conf: Config):
@@ -69,7 +70,8 @@ class Blog:
if updated < date: if updated < date:
updated = date updated = date
articles += textwrap.indent( articles += textwrap.indent(
textwrap.dedent(f"""\ textwrap.dedent(
f"""\
<entry> <entry>
<title>{self.pages[filename].title}</title> <title>{self.pages[filename].title}</title>
<link href="{self.conf.url}/pages/{filename}.html"/> <link href="{self.conf.url}/pages/{filename}.html"/>
@@ -81,10 +83,13 @@ class Blog:
</div> </div>
</content> </content>
</entry> </entry>
"""), """
" ") ),
" ",
)
header = textwrap.dedent(f""" <?xml version="1.0" encoding="utf-8"?> header = textwrap.dedent(
f""" <?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"> <feed xmlns="http://www.w3.org/2005/Atom">
<title>{self.conf.title}</title> <title>{self.conf.title}</title>
<subtitle>{self.conf.presentation}</subtitle> <subtitle>{self.conf.presentation}</subtitle>
@@ -96,11 +101,12 @@ class Blog:
<email>{self.conf.author_mail}</email> <email>{self.conf.author_mail}</email>
</author> </author>
<id>urn:uuid:{self.conf.id}</id> <id>urn:uuid:{self.conf.id}</id>
""") """
)
footer = "</feed>" footer = "</feed>"
with open(Path(self.conf.outbox) / "atom.xml", 'w+') as rss_file: with open(Path(self.conf.outbox) / "atom.xml", "w+") as rss_file:
rss_file.write(header + articles + footer) rss_file.write(header + articles + footer)
def _copy_css(self): def _copy_css(self):

View File

@@ -15,7 +15,7 @@ class Config:
"draft", "draft",
"author_name", "author_name",
"author_mail", "author_mail",
"id" "id",
} }
def __init__(self, config_file: Path): def __init__(self, config_file: Path):

View File

@@ -14,13 +14,13 @@ def new_page(title: str, path: Path) -> Path:
today = date.today().strftime("%Y-%m-%d") today = date.today().strftime("%Y-%m-%d")
filename = path + '/' + re.sub("[^a-zA-Z0-9-]", "_", title) + ".md" filename = path + "/" + re.sub("[^a-zA-Z0-9-]", "_", title) + ".md"
id = uuid.uuid4() id = uuid.uuid4()
content = textwrap.dedent( content = textwrap.dedent(
f"""\ f"""\
--- ---
date: {today} date: {today}
title: {title} title: "{title}"
id: {id} id: {id}
category: category:
tags: tags:
@@ -43,6 +43,8 @@ class Page:
md_content = "" md_content = ""
filename = "" filename = ""
_cache = ""
def __init__(self, filename: Path): def __init__(self, filename: Path):
"""Constructeur : nouvelle page""" """Constructeur : nouvelle page"""
self.filename = filename self.filename = filename
@@ -84,12 +86,14 @@ class Page:
def html(self) -> str: def html(self) -> str:
"""Convertit le markdown en html""" """Convertit le markdown en html"""
return markdown.markdown( if not self._cache:
self.md_content, extensions=["codehilite", "fenced_code"] self._cache = markdown.markdown(
) self.md_content, extensions=["codehilite", "fenced_code"]
)
return self._cache
def html_template(self, template: jinja2.Template) -> str: def html_template(self, template: jinja2.Template) -> str:
"""Convertit la page en html a partir d'un template jinja2""" """Convertit la page en html a partir d'un template jinja2"""
title = self.meta["title"] or "Sans titre" title = self.meta["title"] or "Sans titre"
date = self.meta["date"] or None date = self.meta["date"] or None