Skip to content
Commits on Source (2)
......@@ -4,4 +4,5 @@ dist/
test.*
__pycache__
.eggs
.tox
\ No newline at end of file
.tox
example/blog/no-git-test.md
# Changelog
## [1.2.0](https://gitlab.der-jd.de/python/mkblog/compare/1.1.0...1.2.0) (2021-04-14)
### Features
* **plugin:** Add fallback determening release date ([a76c126](https://gitlab.der-jd.de/python/mkblog/commit/a76c126f9843059ede3f8908c78d826699ed32cf))
## [1.1.0](https://gitlab.der-jd.de/python/mkblog/compare/1.0.1...1.1.0) (2021-04-13)
......
......@@ -28,6 +28,7 @@ install_requires =
mkdocs>=1
mkdocs-awesome-pages-plugin
mkdocs-material
GitPython
python_requires = >=3.6
setup_requires =
......
......@@ -10,6 +10,7 @@ Yet an other blog plugin for MkDocs.
from datetime import datetime
from pathlib import Path
from git import Git
import logging
import markdown
......@@ -78,22 +79,30 @@ class MkBlog(BasePlugin):
def get_blog_post_date(self):
"""
Search markdown metadata for a releasedate from given file.
Parameters:
file: absolute path to blogpost markdown file
If no matching metadata is present, the oldest commit is used instead.
As a last resort the file's ctime is used as release date.
Returns:
blogpost's release date as uri path
"""
m_d = markdown.Markdown(extensions=['meta'])
m_d.convert(self._blog_md_file.read_text())
# Prevent pylint from false positive report:
# Instance of 'Markdown' has no 'Meta' member
metadata = m_d.Meta # pylint: disable=E1101
# TODO: search for different date metadata(release-date, date, release)
# if no metadata is found, use file's ctime or mtime instead.
release_date = datetime.strptime(metadata['date'][0], '%Y-%m-%d')
metadata = m_d.Meta # pylint: disable=E1101 # false positive
if 'date' in metadata:
rawdate = metadata['date'][0]
else:
rawdate = Git().log(
self._blog_md_file,
date='short',
format='%ad'
).split('\n')[-1]
try:
release_date = datetime.strptime(rawdate, '%Y-%m-%d')
except ValueError:
release_date = datetime.fromtimestamp(
self._blog_md_file.stat().st_ctime)
return str(release_date.strftime('%Y/%m/%d'))
......