10 changed files with 552 additions and 12 deletions
@ -1,14 +1,20 @@
|
||||
stages: |
||||
- test |
||||
- doc |
||||
|
||||
image: code.ungleich.ch:5050/ungleich-public/cdist/cdist-ci:latest |
||||
|
||||
shellcheck: |
||||
stage: test |
||||
script: |
||||
- ./scripts/run-shellcheck.sh |
||||
- make lint |
||||
|
||||
manpages: |
||||
stage: test |
||||
script: |
||||
- ./scripts/run-manpage-checks.sh |
||||
- make check-manpages |
||||
|
||||
docs: |
||||
stage: doc |
||||
script: |
||||
- make docs |
||||
|
@ -0,0 +1,70 @@
|
||||
.PHONY: help |
||||
help: |
||||
@echo "Please use \`make <target>' where <target> is one of"
|
||||
@echo "man build only man user documentation"
|
||||
@echo "html build only html user documentation"
|
||||
@echo "docs build both man and html user documentation"
|
||||
@echo "check-manpages check for manpage in types"
|
||||
@echo "lint run shellcheck on types"
|
||||
@echo "check run both type manpage checks and linting"
|
||||
@echo "clean clean"
|
||||
|
||||
DOCS_SRC_DIR=./docs/src
|
||||
TYPEDIR=./type
|
||||
|
||||
SPHINXM=make -C $(DOCS_SRC_DIR) man
|
||||
SPHINXH=make -C $(DOCS_SRC_DIR) html
|
||||
SPHINXC=make -C $(DOCS_SRC_DIR) clean
|
||||
|
||||
################################################################################
|
||||
# Manpages
|
||||
#
|
||||
MAN7DSTDIR=$(DOCS_SRC_DIR)/man7
|
||||
|
||||
# Use shell / ls to get complete list - $(TYPEDIR)/*/man.rst does not work
|
||||
# Using ls does not work if no file with given pattern exist, so use wildcard
|
||||
MANTYPESRC=$(wildcard $(TYPEDIR)/*/man.rst)
|
||||
MANTYPEPREFIX=$(subst $(TYPEDIR)/,$(MAN7DSTDIR)/cdist-type,$(MANTYPESRC))
|
||||
MANTYPES=$(subst /man.rst,.rst,$(MANTYPEPREFIX))
|
||||
|
||||
# Link manpage: do not create man.html but correct named file
|
||||
$(MAN7DSTDIR)/cdist-type%.rst: $(TYPEDIR)/%/man.rst |
||||
mkdir -p $(MAN7DSTDIR)
|
||||
ln -sf "../../../$^" $@
|
||||
|
||||
DOCSINDEX=$(MAN7DSTDIR)/index.rst
|
||||
DOCSINDEXH=$(DOCS_SRC_DIR)/index.rst.sh
|
||||
|
||||
$(DOCSINDEX): $(DOCSINDEXH) |
||||
$(DOCSINDEXH)
|
||||
|
||||
# Manpages: .cdist Types
|
||||
DOT_CDIST_PATH=${HOME}/.cdist
|
||||
DOTMAN7DSTDIR=$(MAN7DSTDIR)
|
||||
DOTTYPEDIR=$(DOT_CDIST_PATH)/type
|
||||
|
||||
# Link manpage: do not create man.html but correct named file
|
||||
$(DOTMAN7DSTDIR)/cdist-type%.rst: $(DOTTYPEDIR)/%/man.rst |
||||
ln -sf "$^" $@
|
||||
|
||||
man: $(MANTYPES) $(DOCSINDEX) |
||||
$(SPHINXM)
|
||||
|
||||
html: $(MANTYPES) $(DOCSINDEX) |
||||
$(SPHINXH)
|
||||
|
||||
docs: man html |
||||
|
||||
check-manpages: |
||||
./scripts/run-manpage-checks.sh
|
||||
|
||||
lint: |
||||
./scripts/run-shellcheck.sh
|
||||
|
||||
check: check-manpages lint |
||||
|
||||
clean: |
||||
$(SPHINXC)
|
||||
rm -f docs/src/index.rst
|
||||
rm -rf docs/src/man7/
|
||||
rm -rf docs/src/__pycache__/
|
@ -0,0 +1,235 @@
|
||||
# Makefile for Sphinx documentation
|
||||
#
|
||||
|
||||
# You can set these variables from the command line.
|
||||
SPHINXOPTS ?=
|
||||
SPHINXBUILD ?= sphinx-build
|
||||
PAPER ?=
|
||||
BUILDDIR ?= ../dist
|
||||
# for cache, etc.
|
||||
_BUILDDIR = _build
|
||||
|
||||
# User-friendly check for sphinx-build
|
||||
ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) |
||||
$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don\'t have Sphinx installed, grab it from http://sphinx-doc.org/)
|
||||
endif |
||||
|
||||
# Internal variables.
|
||||
PAPEROPT_a4 = -D latex_paper_size=a4
|
||||
PAPEROPT_letter = -D latex_paper_size=letter
|
||||
ALLSPHINXOPTS = -d $(_BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
|
||||
# the i18n builder cannot share the environment and doctrees with the others
|
||||
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
|
||||
|
||||
.PHONY: help |
||||
help: |
||||
@echo "Please use \`make <target>' where <target> is one of"
|
||||
@echo " html to make standalone HTML files"
|
||||
@echo " dirhtml to make HTML files named index.html in directories"
|
||||
@echo " singlehtml to make a single large HTML file"
|
||||
@echo " pickle to make pickle files"
|
||||
@echo " json to make JSON files"
|
||||
@echo " htmlhelp to make HTML files and a HTML help project"
|
||||
@echo " qthelp to make HTML files and a qthelp project"
|
||||
@echo " applehelp to make an Apple Help Book"
|
||||
@echo " devhelp to make HTML files and a Devhelp project"
|
||||
@echo " epub to make an epub"
|
||||
@echo " epub3 to make an epub3"
|
||||
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
|
||||
@echo " latexpdf to make LaTeX files and run them through pdflatex"
|
||||
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
|
||||
@echo " text to make text files"
|
||||
@echo " man to make manual pages"
|
||||
@echo " texinfo to make Texinfo files"
|
||||
@echo " info to make Texinfo files and run them through makeinfo"
|
||||
@echo " gettext to make PO message catalogs"
|
||||
@echo " changes to make an overview of all changed/added/deprecated items"
|
||||
@echo " xml to make Docutils-native XML files"
|
||||
@echo " pseudoxml to make pseudoxml-XML files for display purposes"
|
||||
@echo " linkcheck to check all external links for integrity"
|
||||
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
|
||||
@echo " coverage to run coverage check of the documentation (if enabled)"
|
||||
@echo " dummy to check syntax errors of document sources"
|
||||
|
||||
.PHONY: clean |
||||
clean: |
||||
rm -rf $(BUILDDIR)/*
|
||||
rm -rf $(_BUILDDIR)/*
|
||||
|
||||
.PHONY: html |
||||
html: |
||||
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
|
||||
@echo
|
||||
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
|
||||
|
||||
.PHONY: dirhtml |
||||
dirhtml: |
||||
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
|
||||
@echo
|
||||
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
|
||||
|
||||
.PHONY: singlehtml |
||||
singlehtml: |
||||
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
|
||||
@echo
|
||||
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
|
||||
|
||||
.PHONY: pickle |
||||
pickle: |
||||
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
|
||||
@echo
|
||||
@echo "Build finished; now you can process the pickle files."
|
||||
|
||||
.PHONY: json |
||||
json: |
||||
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
|
||||
@echo
|
||||
@echo "Build finished; now you can process the JSON files."
|
||||
|
||||
.PHONY: htmlhelp |
||||
htmlhelp: |
||||
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
|
||||
@echo
|
||||
@echo "Build finished; now you can run HTML Help Workshop with the" \
|
||||
".hhp project file in $(BUILDDIR)/htmlhelp."
|
||||
|
||||
.PHONY: qthelp |
||||
qthelp: |
||||
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
|
||||
@echo
|
||||
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
|
||||
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
|
||||
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/cdist-docs.qhcp"
|
||||
@echo "To view the help file:"
|
||||
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/cdist-docs.qhc"
|
||||
|
||||
.PHONY: applehelp |
||||
applehelp: |
||||
$(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp
|
||||
@echo
|
||||
@echo "Build finished. The help book is in $(BUILDDIR)/applehelp."
|
||||
@echo "N.B. You won't be able to view it unless you put it in" \
|
||||
"~/Library/Documentation/Help or install it in your application" \
|
||||
"bundle."
|
||||
|
||||
.PHONY: devhelp |
||||
devhelp: |
||||
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
|
||||
@echo
|
||||
@echo "Build finished."
|
||||
@echo "To view the help file:"
|
||||
@echo "# mkdir -p $$HOME/.local/share/devhelp/cdist-docs"
|
||||
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/cdist-docs"
|
||||
@echo "# devhelp"
|
||||
|
||||
.PHONY: epub |
||||
epub: |
||||
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
|
||||
@echo
|
||||
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
|
||||
|
||||
.PHONY: epub3 |
||||
epub3: |
||||
$(SPHINXBUILD) -b epub3 $(ALLSPHINXOPTS) $(BUILDDIR)/epub3
|
||||
@echo
|
||||
@echo "Build finished. The epub3 file is in $(BUILDDIR)/epub3."
|
||||
|
||||
.PHONY: latex |
||||
latex: |
||||
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
||||
@echo
|
||||
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
|
||||
@echo "Run \`make' in that directory to run these through (pdf)latex" \
|
||||
"(use \`make latexpdf' here to do that automatically)."
|
||||
|
||||
.PHONY: latexpdf |
||||
latexpdf: |
||||
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
||||
@echo "Running LaTeX files through pdflatex..."
|
||||
$(MAKE) -C $(BUILDDIR)/latex all-pdf
|
||||
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
|
||||
|
||||
.PHONY: latexpdfja |
||||
latexpdfja: |
||||
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
||||
@echo "Running LaTeX files through platex and dvipdfmx..."
|
||||
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
|
||||
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
|
||||
|
||||
.PHONY: text |
||||
text: |
||||
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
|
||||
@echo
|
||||
@echo "Build finished. The text files are in $(BUILDDIR)/text."
|
||||
|
||||
.PHONY: man |
||||
man: |
||||
$(SPHINXBUILD) -b cman $(ALLSPHINXOPTS) $(BUILDDIR)/man
|
||||
mkdir -p $(BUILDDIR)/man/man7
|
||||
mv -f $(BUILDDIR)/man/*.7 $(BUILDDIR)/man/man7/
|
||||
@echo
|
||||
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
|
||||
|
||||
.PHONY: texinfo |
||||
texinfo: |
||||
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
|
||||
@echo
|
||||
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
|
||||
@echo "Run \`make' in that directory to run these through makeinfo" \
|
||||
"(use \`make info' here to do that automatically)."
|
||||
|
||||
.PHONY: info |
||||
info: |
||||
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
|
||||
@echo "Running Texinfo files through makeinfo..."
|
||||
make -C $(BUILDDIR)/texinfo info
|
||||
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
|
||||
|
||||
.PHONY: gettext |
||||
gettext: |
||||
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
|
||||
@echo
|
||||
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
|
||||
|
||||
.PHONY: changes |
||||
changes: |
||||
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
|
||||
@echo
|
||||
@echo "The overview file is in $(BUILDDIR)/changes."
|
||||
|
||||
.PHONY: linkcheck |
||||
linkcheck: |
||||
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
|
||||
@echo
|
||||
@echo "Link check complete; look for any errors in the above output " \
|
||||
"or in $(BUILDDIR)/linkcheck/output.txt."
|
||||
|
||||
.PHONY: doctest |
||||
doctest: |
||||
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
|
||||
@echo "Testing of doctests in the sources finished, look at the " \
|
||||
"results in $(BUILDDIR)/doctest/output.txt."
|
||||
|
||||
.PHONY: coverage |
||||
coverage: |
||||
$(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage
|
||||
@echo "Testing of coverage in the sources finished, look at the " \
|
||||
"results in $(BUILDDIR)/coverage/python.txt."
|
||||
|
||||
.PHONY: xml |
||||
xml: |
||||
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
|
||||
@echo
|
||||
@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
|
||||
|
||||
.PHONY: pseudoxml |
||||
pseudoxml: |
||||
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
|
||||
@echo
|
||||
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
|
||||
|
||||
.PHONY: dummy |
||||
dummy: |
||||
$(SPHINXBUILD) -b dummy $(ALLSPHINXOPTS) $(BUILDDIR)/dummy
|
||||
@echo
|
||||
@echo "Build finished. Dummy builder generates no files."
|
@ -0,0 +1,101 @@
|
||||
#!/usr/bin/env python3 |
||||
|
||||
import sys |
||||
import os |
||||
import sphinx_rtd_theme |
||||
|
||||
from datetime import date |
||||
|
||||
# If extensions (or modules to document with autodoc) are in another directory, |
||||
# add these directories to sys.path here. If the directory is relative to the |
||||
# documentation root, use os.path.abspath to make it absolute, like shown here. |
||||
# sys.path.insert(0, os.path.abspath('.')) |
||||
sys.path.insert(0, os.path.abspath(os.path.join( |
||||
os.path.dirname(os.path.realpath(__file__)), "..", ".."))) |
||||
|
||||
# -- General configuration ------------------------------------------------ |
||||
|
||||
# If your documentation needs a minimal Sphinx version, state it here. |
||||
# needs_sphinx = '1.0' |
||||
|
||||
# Add any Sphinx extension module names here, as strings. They can be |
||||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom |
||||
# ones. |
||||
extensions = [ |
||||
'docs.src.manpage', |
||||
'sphinx.ext.extlinks', |
||||
] |
||||
|
||||
# The suffix(es) of source filenames. |
||||
# You can specify multiple suffix as a list of string: |
||||
source_suffix = ['.rst'] |
||||
|
||||
# The encoding of source files. |
||||
# source_encoding = 'utf-8-sig' |
||||
|
||||
# The master toctree document. |
||||
master_doc = 'index' |
||||
|
||||
# General information about the project. |
||||
project = 'cdist-contrib' |
||||
copyright = 'cdist-contrib contributors' |
||||
|
||||
# The version info for the project you're documenting, acts as replacement for |
||||
# |version| and |release|, also used in various other places throughout the |
||||
# built documents. |
||||
|
||||
version = str(date.today()) |
||||
release = os.popen('git rev-parse HEAD').read() |
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation |
||||
# for a list of supported languages. |
||||
# |
||||
# This is also used if you do content translation via gettext catalogs. |
||||
# Usually you set "language" from the command line for these cases. |
||||
language = None |
||||
|
||||
# The name of the Pygments (syntax highlighting) style to use. |
||||
pygments_style = 'sphinx' |
||||
|
||||
# If true, `todo` and `todoList` produce output, else they produce nothing. |
||||
todo_include_todos = False |
||||
|
||||
# -- Options for HTML output ---------------------------------------------- |
||||
|
||||
# The theme to use for HTML and HTML Help pages. See the documentation for |
||||
# a list of builtin themes. |
||||
html_theme = 'sphinx_rtd_theme' |
||||
html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] |
||||
|
||||
# Output file base name for HTML help builder. |
||||
htmlhelp_basename = 'cdistcontribdoc' |
||||
|
||||
# -- Options for manual page output --------------------------------------- |
||||
|
||||
# One entry per manual page. List of tuples |
||||
# (source start file, name, description, authors, manual section). |
||||
root_mandir = os.path.dirname(os.path.realpath(__file__)) |
||||
mandirs = [] |
||||
for mansubdir in ('man7',): |
||||
mandirs.append((os.path.join(root_mandir, mansubdir), mansubdir[-1])) |
||||
man_pages = [] |
||||
for mandir, section in mandirs: |
||||
for root, dirs, files in os.walk(mandir): |
||||
for fname in files: |
||||
froot, fext = os.path.splitext(fname) |
||||
if fext == '.rst': |
||||
man_page = (os.path.join('man' + str(section), froot), |
||||
froot, '', [], section) |
||||
man_pages.append(man_page) |
||||
|
||||
# man_pages = [ |
||||
# ('cdist-type', 'cdist-type', 'cdist-type documentation', |
||||
# [author], 1), |
||||
# ('man7/cdist-type__file', 'cdist-type__file', |
||||
# '', [], 1), |
||||
# ('cdist-type__directory', 'cdist-type__directory', |
||||
# 'cdist-type__directory documentation', [author], 1), |
||||
# ] |
||||
|
||||
# If true, show URL addresses after external links. |
||||
# man_show_urls = False |
@ -0,0 +1,45 @@
|
||||
#!/bin/sh |
||||
|
||||
__cdist_pwd="$(pwd -P)" |
||||
__cdist_mydir="${0%/*}"; |
||||
__cdist_abs_mydir="$(cd "$__cdist_mydir" && pwd -P)" |
||||
__cdist_myname=${0##*/}; |
||||
__cdist_abs_myname="$__cdist_abs_mydir/$__cdist_myname" |
||||
|
||||
filename="${__cdist_myname%.sh}" |
||||
dest="$__cdist_abs_mydir/$filename" |
||||
|
||||
cd "$__cdist_abs_mydir" |
||||
|
||||
exec > "$dest" |
||||
cat << EOF |
||||
cdist-contrib - Community maintained cdist types |
||||
================================================ |
||||
|
||||
This project extends the \`cdist <https://cdi.st/>\`_ configuration management |
||||
tool with community-maitained types which are either too specific to fit/be |
||||
maintained in cdist itself or were not accepted in code cdist but could still |
||||
be useful. |
||||
|
||||
Please note this project is a **rolling release**! The documentation you're |
||||
reading has been generated from the |version| state (commit |release|). |
||||
Sources are available on \`code.ungleich.ch |
||||
<https://code.ungleich.ch/ungleich-public/cdist-contrib>\`_. |
||||
|
||||
|
||||
.. toctree:: |
||||
:hidden: |
||||
|
||||
EOF |
||||
|
||||
# If there is no such file then ls prints error to stderr, |
||||
# so redirect stderr to /dev/null. |
||||
for type in $(ls man7/cdist-type__*.rst 2>/dev/null | LC_ALL=C sort); do |
||||
no_dir="${type#man7/}"; |
||||
no_type="${no_dir#cdist-type}"; |
||||
name="${no_type%.rst}"; |
||||
manref="${no_dir%.rst}" |
||||
man="${manref}(7)" |
||||
|
||||
echo " $name" "<man7/${manref}>" |
||||
done |
@ -0,0 +1,87 @@
|
||||
import sphinx.builders.manpage |
||||
import sphinx.writers.manpage |
||||
from docutils.frontend import OptionParser |
||||
from sphinx.util.console import bold, darkgreen |
||||
from six import string_types |
||||
from docutils.io import FileOutput |
||||
from os import path |
||||
from sphinx.util.nodes import inline_all_toctrees |
||||
from sphinx import addnodes |
||||
from sphinx.util import logging |
||||
|
||||
""" |
||||
Extension based on sphinx builtin manpage. |
||||
It does not write its own .SH NAME based on config, |
||||
but leaves everything to actual reStructuredText file content. |
||||
""" |
||||
|
||||
|
||||
logger = logging.getLogger(__name__) |
||||
|
||||
|
||||
class ManualPageTranslator(sphinx.writers.manpage.ManualPageTranslator): |
||||
|
||||
def header(self): |
||||
tmpl = (".TH \"%(title_upper)s\" \"%(manual_section)s\"" |
||||
" \"%(date)s\" \"%(version)s\" \"%(manual_group)s\"\n") |
||||
return tmpl % self._docinfo |
||||
|
||||
|
||||
class ManualPageWriter(sphinx.writers.manpage.ManualPageWriter): |
||||
|
||||
def __init__(self, builder): |
||||
super().__init__(builder) |
||||
self.translator_class = ( |
||||
self.builder.get_translator_class() or ManualPageTranslator) |
||||
|
||||
|
||||
class ManualPageBuilder(sphinx.builders.manpage.ManualPageBuilder): |
||||
|
||||
name = 'cman' |
||||
default_translator_class = ManualPageTranslator |
||||
|
||||
def write(self, *ignored): |
||||
docwriter = ManualPageWriter(self) |
||||
docsettings = OptionParser( |
||||
defaults=self.env.settings, |
||||
components=(docwriter,), |
||||
read_config_files=True).get_default_values() |
||||
|
||||
logger.info(bold('writing... '), nonl=True) |
||||
|
||||
for info in self.config.man_pages: |
||||
docname, name, description, authors, section = info |
||||
if isinstance(authors, string_types): |
||||
if authors: |
||||
authors = [authors] |
||||
else: |
||||
authors = [] |
||||
|
||||
targetname = '%s.%s' % (name, section) |
||||
logger.info(darkgreen(targetname) + ' { ', nonl=True) |
||||
destination = FileOutput( |
||||
destination_path=path.join(self.outdir, targetname), |
||||
encoding='utf-8') |
||||
|
||||
tree = self.env.get_doctree(docname) |
||||
docnames = set() |
||||
largetree = inline_all_toctrees(self, docnames, docname, tree, |
||||
darkgreen, [docname]) |
||||
logger.info('} ', nonl=True) |
||||
self.env.resolve_references(largetree, docname, self) |
||||
# remove pending_xref nodes |
||||
for pendingnode in largetree.traverse(addnodes.pending_xref): |
||||
pendingnode.replace_self(pendingnode.children) |
||||
|
||||
largetree.settings = docsettings |
||||
largetree.settings.title = name |
||||
largetree.settings.subtitle = description |
||||
largetree.settings.authors = authors |
||||
largetree.settings.section = section |
||||
|
||||
docwriter.write(largetree, destination) |
||||
logger.info("") |
||||
|
||||
|
||||
def setup(app): |
||||
app.add_builder(ManualPageBuilder) |
Loading…
Reference in new issue