summaryrefslogtreecommitdiff
path: root/repo
diff options
context:
space:
mode:
authorKévin Le Gouguec <kevin.legouguec@gmail.com>2020-08-18 22:14:48 +0200
committerKévin Le Gouguec <kevin.legouguec@gmail.com>2020-08-18 22:16:59 +0200
commit205b6d12ff5673bd8ae59f827f07b69771b9dfee (patch)
tree1d360828ad5485a4c572baae4eba4183ebe467b7 /repo
parentb173c7328dc8ae69880b305216f1196b052f5e03 (diff)
downloadmemory-leaks-205b6d12ff5673bd8ae59f827f07b69771b9dfee.tar.xz
Mutualize pandoc invocations
Will be useful to avoid duplicating changes to Lua filters.
Diffstat (limited to 'repo')
-rwxr-xr-xrepo/www/generate-index.py27
-rwxr-xr-xrepo/www/generate-page.py15
-rw-r--r--repo/www/helpers.py15
3 files changed, 35 insertions, 22 deletions
diff --git a/repo/www/generate-index.py b/repo/www/generate-index.py
index c51bf98..7eed97a 100755
--- a/repo/www/generate-index.py
+++ b/repo/www/generate-index.py
@@ -5,10 +5,11 @@ from itertools import chain
import json
from pathlib import Path
from subprocess import run
+from tempfile import NamedTemporaryFile
from git import Repo
-from helpers import deserialize_directories
+from helpers import deserialize_directories, pandoc
def parse_arguments():
@@ -78,6 +79,8 @@ def list_pages(files):
return pages, readme
+# TODO: use pandoc's --include-after-body, so that this works with
+# non-markdown READMEs.
def format_index(target, directories, files):
pages, readme = list_pages(files)
@@ -99,22 +102,16 @@ def format_index(target, directories, files):
return format_readme_index(intro, title, items)
-def convert_page(content, output, site_title, template):
- pandoc = (
- 'pandoc', '-s', '--lua-filter', 'convert-internal-links.lua',
- '--template', template, '-o', output
- )
- if site_title is not None:
- pandoc += ('-T', site_title)
-
- run(pandoc, input=content, check=True, text=True)
+def main(arguments):
+ target = arguments.target
+ folders, files = list_files(arguments.site_tree, target)
+ with NamedTemporaryFile(suffix='.md', mode='w+') as page:
+ page.write(format_index(target, folders, files))
+ page.flush()
-def main(arguments):
- folders, files = list_files(arguments.site_tree, arguments.target)
- index_page = format_index(arguments.target, folders, files)
- convert_page(index_page, arguments.output, arguments.site_title,
- arguments.template)
+ pandoc(page.name, arguments.output, arguments.template,
+ site_title=arguments.site_title)
if __name__ == '__main__':
diff --git a/repo/www/generate-page.py b/repo/www/generate-page.py
index 9e0f57c..372e8a2 100755
--- a/repo/www/generate-page.py
+++ b/repo/www/generate-page.py
@@ -1,7 +1,8 @@
#!/usr/bin/env python3
from argparse import ArgumentParser
-from subprocess import run
+
+from helpers import pandoc
def parse_arguments():
@@ -25,13 +26,13 @@ def parse_arguments():
def main(arguments):
- pandoc = (
- 'pandoc', '-s', arguments.page, '-o', arguments.output,
- '--lua-filter', 'convert-internal-links.lua',
- '--template', arguments.template, '-T', arguments.site_title,
- '-M', f'title={arguments.title}'
+ pandoc(
+ arguments.page,
+ arguments.output,
+ arguments.template,
+ title=arguments.title,
+ site_title=arguments.site_title
)
- run(pandoc, check=True)
if __name__ == '__main__':
diff --git a/repo/www/helpers.py b/repo/www/helpers.py
index 6dc5bad..16cd496 100644
--- a/repo/www/helpers.py
+++ b/repo/www/helpers.py
@@ -1,6 +1,7 @@
from collections import defaultdict
from dataclasses import dataclass, field
from os import path
+from subprocess import run
from typing import Iterator
@@ -52,3 +53,17 @@ def deserialize_directories(directories):
return {
k: Directory.deserialize(v) for k, v in directories.items()
}
+
+
+def pandoc(page, output, template, title=None, site_title=None):
+ cmd = (
+ 'pandoc', '-s', page, '-o', output, '--template', template,
+ '--lua-filter', 'convert-internal-links.lua'
+ )
+
+ if title is not None:
+ cmd += ('-M', f'title={title}')
+ if site_title is not None:
+ cmd += ('-T', site_title)
+
+ run(cmd, check=True)