From 4e76494cce02d4f48a9482e921a0c35bcbe443f1 Mon Sep 17 00:00:00 2001 From: "Martin A. Brown" Date: Fri, 26 Feb 2016 01:02:16 -0800 Subject: [PATCH] rework the build sequence adapt all of the methods to the new topological-sort driven technique --- tldp/doctypes/linuxdoc.py | 92 ++++++++++++++++++++------------------- 1 file changed, 47 insertions(+), 45 deletions(-) diff --git a/tldp/doctypes/linuxdoc.py b/tldp/doctypes/linuxdoc.py index 4f4b4aa..ec96112 100644 --- a/tldp/doctypes/linuxdoc.py +++ b/tldp/doctypes/linuxdoc.py @@ -5,11 +5,13 @@ from __future__ import absolute_import, division, print_function import os import logging -logger = logging.getLogger(__name__) +import networkx as nx -from tldp.utils import which, execute +from tldp.utils import which from tldp.utils import arg_isexecutable, isexecutable -from tldp.doctypes.common import BaseDoctype, SignatureChecker +from tldp.doctypes.common import BaseDoctype, SignatureChecker, depends + +logger = logging.getLogger(__name__) class Linuxdoc(BaseDoctype, SignatureChecker): @@ -22,54 +24,56 @@ class Linuxdoc(BaseDoctype, SignatureChecker): 'linuxdoc_htmldoc': isexecutable, } + graph = nx.DiGraph() + buildorder = ['buildall'] - buildscript = '''#! /bin/bash -# -# -- generate LDP outputs from DocBook XML 4.x -set -x -set -e -set -o pipefail + def chdir_output(self): + os.chdir(self.output.dirname) + return True -cd "{output.dirname}" + @depends(graph, chdir_output) + def make_htmls(self): + '''create a single page HTML output (with incorrect name)''' + s = '"{config.linuxdoc_sgml2html}" --split=0 "{source.filename}"' + return self.shellscript(s) -# -- implicitly creates {output.name_html} -"{config.linuxdoc_sgml2html}" \\ - --split=0 \\ - "{source.filename}" + @depends(graph, make_htmls) + def make_name_htmls(self): + '''correct the single page HTML output name''' + s = 'mv -v --no-clobber -- "{output.name_html}" "{output.name_htmls}"' + return self.shellscript(s) -# -- .... so, it must be rename to {output.name_htmls} -mv \\ - --no-clobber \\ - --verbose \\ - -- "{output.name_html}" "{output.name_htmls}" + @depends(graph, make_name_htmls) + def make_name_txt(self): + '''create text output (from single-page HTML)''' + s = '''"{config.linuxdoc_html2text}" > "{output.name_txt}" \\ + -style pretty \\ + -nobs \\ + "{output.name_htmls}"''' + return self.shellscript(s) -"{config.linuxdoc_html2text}" > "{output.name_txt}" \\ - -style pretty \\ - -nobs \\ - "{output.name_htmls}" + @depends(graph, make_name_htmls) + def make_name_pdf(self): + s = '''"{config.linuxdoc_htmldoc}" \\ + --size universal \\ + -t pdf \\ + --firstpage p1 \\ + --outfile "{output.name_pdf}" \\ + "{output.name_htmls}"''' + return self.shellscript(s) -"{config.linuxdoc_htmldoc}" \\ - --size universal \\ - -t pdf \\ - --firstpage p1 \\ - --outfile "{output.name_pdf}" \\ - "{output.name_htmls}" + @depends(graph, make_name_htmls) + def make_name_html(self): + '''create final index.html symlink''' + s = '"{config.linuxdoc_sgml2html}" "{source.filename}"' + return self.shellscript(s) -# -- implicitly creates {output.name_html} -"{config.linuxdoc_sgml2html}" \\ - "{source.filename}" - -ln \ - --symbolic \ - --relative \ - --verbose \ - -- "{output.name_html}" "{output.name_indexhtml}" - -# -- end of file''' - - def buildall(self): - return self.shellscript(self.buildscript) + @depends(graph, make_name_html) + def make_name_indexhtml(self): + '''create final index.html symlink''' + s = 'ln -svr -- "{output.name_html}" "{output.name_indexhtml}"' + return self.shellscript(s) @staticmethod def argparse(p): @@ -83,7 +87,5 @@ ln \ default=which('htmldoc'), help='full path to htmldoc [%(default)s]') - - # # -- end of file