From 5f4b249820ebe1e3a2f1b1a5ded5a916aab07626 Mon Sep 17 00:00:00 2001 From: Martin Kirchgessner Date: Tue, 5 May 2020 10:28:26 +0200 Subject: [PATCH 1/7] coherent returns in main() --- blo/blog.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/blo/blog.py b/blo/blog.py index 9472a37..ac32905 100644 --- a/blo/blog.py +++ b/blo/blog.py @@ -117,8 +117,10 @@ def main(): slug = opts.action[1] blog_action.post(slug, opts.type) + return 0 + if __name__ == "__main__": log.addHandler(logging.StreamHandler(sys.stdout)) log.setLevel(logging.DEBUG) - sys.exit(main()) \ No newline at end of file + sys.exit(main()) From 8ce6173666306b7ef63f227ad25392ec78a1ce01 Mon Sep 17 00:00:00 2001 From: Martin Kirchgessner Date: Tue, 5 May 2020 10:29:07 +0200 Subject: [PATCH 2/7] Markdown's hilite extension requires Pygments --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 1fc37cf..d8560b9 100644 --- a/setup.py +++ b/setup.py @@ -13,7 +13,7 @@ 'blo = blo.blog:main', ], }, - install_requires=['jinja2', 'markdown', 'PyRSS2Gen'], + install_requires=['jinja2', 'markdown', 'PyRSS2Gen', 'Pygments'], package_data={'': ['blo/default.json', 'blo/draft_templates.json',]}, include_package_data=True, url='https://github.com/savuir/blo', # use the URL to the github repo From 5fec16425a654f197eee0be2e14bda73ded47c91 Mon Sep 17 00:00:00 2001 From: Martin Kirchgessner Date: Tue, 5 May 2020 10:29:56 +0200 Subject: [PATCH 3/7] new syntax of Markdown extensions --- blo/page_generator.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/blo/page_generator.py b/blo/page_generator.py index a71e7dd..decfdb5 100644 --- a/blo/page_generator.py +++ b/blo/page_generator.py @@ -26,9 +26,7 @@ def __init__(self, config): self.config = config self.jinja_env = jinja2.Environment( loader=jinja2.FileSystemLoader(self.config['template_dir'])) - self.md = markdown.Markdown( - extensions=['markdown.extensions.meta', - 'markdown.extensions.codehilite']) + self.md = markdown.Markdown(extensions=['meta', 'codehilite']) self.content_aggregator = ContentAggregator(config) def _generate_html(self, template_name, page_vars): @@ -189,4 +187,4 @@ def generate_all(self): # render rss xml_page = self._generate_xml_rss() - self._create_rss_file(xml_page, 'rss.xml') \ No newline at end of file + self._create_rss_file(xml_page, 'rss.xml') From f0bf5cca83c10e5d2b3f23dc8785ca7fcc466bc5 Mon Sep 17 00:00:00 2001 From: Martin Kirchgessner Date: Tue, 5 May 2020 10:32:45 +0200 Subject: [PATCH 4/7] minor tests update --- blo/tests/test_blog.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/blo/tests/test_blog.py b/blo/tests/test_blog.py index 1c2954a..e194d9d 100644 --- a/blo/tests/test_blog.py +++ b/blo/tests/test_blog.py @@ -1,16 +1,13 @@ import unittest import os import shutil -import sys -import subprocess -from datetime import datetime -import blog +from blo import blog class SandboxTestCase(unittest.TestCase): def make_sandbox(self): - self.sandbox = '{0}/test-artifacts/'.format( + self.sandbox = '{0}/{1}/{2}/test-artifacts/'.format( os.getcwd(), self.__class__.__name__, self._testMethodName @@ -41,12 +38,18 @@ def tearDown(self): def test_create_simple_blog(self): """ Check initially created blog """ blog.create_blog(self.sandbox) - real_list = [i[1:] for i in os.walk(self.sandbox)] + real_list = list() + for i in os.walk(self.sandbox): + entry = i[1:] + entry[0].sort() + entry[1].sort() + real_list.append(entry) + expected_list = [ (['_blog'], []), - (['pages', 'templates'], ['draft_templates.json', 'default.json']), + (['pages', 'templates'], ['default.json', 'draft_templates.json']), ([], []), - ([], ['base.html', 'list.html', 'post.html', 'stat.html']) + ([], ['base.html', 'list.html', 'page.html', 'post.html', 'stat.html']) ] self.assertListEqual(real_list, expected_list) @@ -88,4 +91,4 @@ def setUp(self): self.make_sandbox() def tearDown(self): - self.remove_sandbox() \ No newline at end of file + self.remove_sandbox() From e7a3e8faea1d0ba134f1e029035c9534bfc952c9 Mon Sep 17 00:00:00 2001 From: Martin Kirchgessner Date: Tue, 5 May 2020 10:34:04 +0200 Subject: [PATCH 5/7] version bump --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index d8560b9..ef7bf9f 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ setup( name='blo', - version='0.6', + version='0.8.1', license='BSD-3-clause', author='Yann Savuir', author_email='savuir@gmail.com', From 6c0ec03a781d6a63f72511e31cb3a472c2c3c035 Mon Sep 17 00:00:00 2001 From: Martin Kirchgessner Date: Tue, 5 May 2020 10:48:24 +0200 Subject: [PATCH 6/7] introduce BloError for clearer error messages --- blo/page_generator.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/blo/page_generator.py b/blo/page_generator.py index decfdb5..75d1db4 100644 --- a/blo/page_generator.py +++ b/blo/page_generator.py @@ -21,6 +21,14 @@ def split_into_pages(items, per_page): return [items[i:i + per_page] for i in range(0, len(items), per_page)] +class BloError(Exception): + def __init__(self, message): + self.message = message + + def __str__(self): + return self.message + + class PageGenerator: def __init__(self, config): self.config = config @@ -109,6 +117,8 @@ def _generate_html_page_and_path(self, content): page_vars['page_content'] = page_html page_vars['page_author'] = self.config['site']['author'] page_vars['page_date'] = page_vars.get('page_date_time', '').split(' ')[0] + if 'page_tags' not in page_vars: + raise BloError("Missing tags") page_vars['page_tags'] = [tag for tag in page_vars['page_tags'].split(', ') if tag] if 'page_date_time' in page_vars: page_vars['page_date_time'] = \ @@ -157,10 +167,16 @@ def generate_all(self): """ # render page for draft in os.listdir(self.config['pages_dir']): - with open(os.path.join(self.config['pages_dir'], draft)) as f: + path = os.path.join(self.config['pages_dir'], draft) + with open(path) as f: content = f.read() - - html_page, html_page_path = self._generate_html_page_and_path(content) + try: + html_page, html_page_path = self._generate_html_page_and_path(content) + except BloError as blo_error: + blo_error.message += " in %s" % path + raise + except Exception as exc: + raise BloError("Caught exception while generating %s" % path) from exc self._create_html_file(html_page, html_page_path) # render index page From 4c0a4e0dcf8fe844ac205324f1a2e1e1db7f1fb5 Mon Sep 17 00:00:00 2001 From: Martin Kirchgessner Date: Sun, 5 Nov 2023 17:40:48 +0100 Subject: [PATCH 7/7] use 'fenced_code' and 'tables' markdown extensions --- blo/page_generator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blo/page_generator.py b/blo/page_generator.py index 75d1db4..d82e56f 100644 --- a/blo/page_generator.py +++ b/blo/page_generator.py @@ -34,7 +34,7 @@ def __init__(self, config): self.config = config self.jinja_env = jinja2.Environment( loader=jinja2.FileSystemLoader(self.config['template_dir'])) - self.md = markdown.Markdown(extensions=['meta', 'codehilite']) + self.md = markdown.Markdown(extensions=['meta', 'codehilite', 'fenced_code', 'tables']) self.content_aggregator = ContentAggregator(config) def _generate_html(self, template_name, page_vars):