75 lines
2.0 KiB
Python
Executable File
75 lines
2.0 KiB
Python
Executable File
#!/usr/bin/python3
|
|
|
|
import time
|
|
import locale
|
|
import os
|
|
import sys
|
|
try:
|
|
locale.setlocale(locale.LC_ALL, '')
|
|
except:
|
|
pass
|
|
|
|
sys.path.insert(0, '..')
|
|
import nvchecker
|
|
|
|
from docutils.core import publish_cmdline, default_description
|
|
from docutils import nodes
|
|
from docutils.writers import manpage
|
|
from docutils.parsers.rst import roles
|
|
|
|
def ref_role(
|
|
role, rawtext, text, lineno, inliner,
|
|
options={}, content=[],
|
|
):
|
|
node = nodes.reference(rawtext, text.title(), **options)
|
|
return [node], []
|
|
|
|
def doc_role(
|
|
role, rawtext, text, lineno, inliner,
|
|
options={}, content=[],
|
|
):
|
|
node = nodes.reference(rawtext, text, **options)
|
|
return [node], []
|
|
|
|
roles.register_local_role('ref', ref_role)
|
|
roles.register_local_role('doc', doc_role)
|
|
|
|
class MyTranslator(manpage.Translator):
|
|
def visit_image(self, node):
|
|
raise nodes.SkipNode
|
|
|
|
def visit_topic(self, node):
|
|
self.body.append('\n')
|
|
raise nodes.SkipNode
|
|
|
|
def visit_title(self, node):
|
|
try:
|
|
super().visit_title(node)
|
|
except nodes.SkipNode:
|
|
if self.section_level == 0:
|
|
self._docinfo['title'] = 'nvchecker'
|
|
self._docinfo['subtitle'] = 'New version checker for software releases'
|
|
self._docinfo['title_upper'] = 'nvchecker'.upper()
|
|
self._docinfo['manual_section'] = '1'
|
|
# Make the generated man page reproducible. Based on the patch from
|
|
# https://sourceforge.net/p/docutils/patches/132/#5333
|
|
source_date_epoch = os.environ.get('SOURCE_DATE_EPOCH')
|
|
if source_date_epoch:
|
|
self._docinfo['date'] = time.strftime('%Y-%m-%d', time.gmtime(int(source_date_epoch)))
|
|
else:
|
|
self._docinfo['date'] = time.strftime('%Y-%m-%d')
|
|
self._docinfo['version'] = nvchecker.__version__
|
|
raise
|
|
|
|
class MyWriter(manpage.Writer):
|
|
def __init__(self):
|
|
super().__init__()
|
|
self.translator_class = MyTranslator
|
|
|
|
def main():
|
|
description = ("Generates plain unix manual documents. " + default_description)
|
|
publish_cmdline(writer=MyWriter(), description=description)
|
|
|
|
if __name__ == '__main__':
|
|
main()
|