50 lines
1.1 KiB
Python
50 lines
1.1 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
Build Gemini blog from Sphinx.
|
|
"""
|
|
|
|
__version_info__ = (0, 0, 1)
|
|
__version__ = '.'.join([str(val) for val in __version_info__])
|
|
|
|
|
|
from typing import Set, Dict, Any
|
|
|
|
from sphinx.builders.text import TextBuilder
|
|
from sphinx.util import logging
|
|
from sphinx.locale import __
|
|
from sphinx.application import Sphinx
|
|
|
|
from .writer import GeminiTranslator, GeminiWriter
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class GeminiBuilder(TextBuilder):
|
|
"""
|
|
Gemini builder, based on native TextBuilder code from Sphinx
|
|
"""
|
|
name = 'gemini'
|
|
format = 'gemini'
|
|
epilog = __('The gemini files are in %(outdir)s.')
|
|
|
|
out_suffix = '.gmi'
|
|
allow_parallel = True
|
|
default_translator_class = GeminiTranslator
|
|
|
|
current_docname = None
|
|
|
|
def prepare_writing(self, docnames: Set[str]) -> None:
|
|
self.writer = GeminiWriter(self)
|
|
|
|
|
|
def setup(app: Sphinx) -> Dict[str, Any]:
|
|
app.add_builder(GeminiBuilder)
|
|
|
|
return {
|
|
'version': __version__,
|
|
'parallel_read_safe': True,
|
|
'parallel_write_safe': True
|
|
}
|