summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2014-12-08 06:44:56 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2014-12-11 07:50:10 +0100
commite794d0aba99b18c113afcb717dd055b89c949d5d (patch)
tree22119f5d2d8d324c2c0dc5eddbc37bbc07f37427
parentsb: Move build set to formatter classes (diff)
downloadrtems-source-builder-e794d0aba99b18c113afcb717dd055b89c949d5d.tar.bz2
sb: Add HTML generation to formatter class
-rw-r--r--source-builder/sb/reports.py68
1 files changed, 28 insertions, 40 deletions
diff --git a/source-builder/sb/reports.py b/source-builder/sb/reports.py
index d40922c..550b22d 100644
--- a/source-builder/sb/reports.py
+++ b/source-builder/sb/reports.py
@@ -149,6 +149,9 @@ class formatter(object):
c.line(' %s' % (h))
return c.get()
+ def post_process(self, out):
+ return out
+
class asciidoc_formatter(formatter):
def format(self):
return 'asciidoc'
@@ -271,12 +274,34 @@ class asciidoc_formatter(formatter):
return c.get()
class html_formatter(asciidoc_formatter):
+ def __init__(self):
+ super(html_formatter, self).__init__()
+ try:
+ import asciidocapi
+ except:
+ raise error.general('installation error: no asciidocapi found')
+ asciidoc_py = _make_path(self.sbpath, options.basepath, 'asciidoc', 'asciidoc.py')
+ try:
+ self.asciidoc = asciidocapi.AsciiDocAPI(asciidoc_py)
+ except:
+ raise error.general('application error: asciidocapi failed')
+
def format(self):
return 'html'
def ext(self):
return '.html'
+ def post_process(self, out):
+ import StringIO
+ infile = StringIO.StringIO(out)
+ outfile = StringIO.StringIO()
+ self.asciidoc.execute(infile, outfile)
+ out = outfile.getvalue()
+ infile.close()
+ outfile.close()
+ return out
+
class text_formatter(formatter):
def __init__(self):
super(text_formatter, self).__init__()
@@ -474,7 +499,6 @@ class report:
def __init__(self, formatter, _configs, opts, macros = None):
self.formatter = formatter
- self.format = formatter.format()
self.configs = _configs
self.opts = opts
if macros is None:
@@ -485,40 +509,14 @@ class report:
self.formatter.set_sbpath(self.sbpath)
self.bset_nesting = 0
self.out = ''
- self.asciidoc = None
- if self.is_ini():
- self.cini = ';'
- else:
- self.cini = ''
self.tree = {}
self.files = { 'buildsets':[], 'configs':[] }
def output(self, text):
self.out += text + '\n'
- def is_text(self):
- return self.format == 'text'
-
- def is_asciidoc(self):
- return self.format == 'asciidoc' or self.format == 'html'
-
- def is_html(self):
- return self.format == 'html'
-
def is_ini(self):
- return self.format == 'ini'
-
- def setup(self):
- if self.is_html():
- try:
- import asciidocapi
- except:
- raise error.general('installation error: no asciidocapi found')
- asciidoc_py = _make_path(self.sbpath, options.basepath, 'asciidoc', 'asciidoc.py')
- try:
- self.asciidoc = asciidocapi.AsciiDocAPI(asciidoc_py)
- except:
- raise error.general('application error: asciidocapi failed')
+ return self.formatter.format() == 'ini'
def header(self):
pass
@@ -730,17 +728,8 @@ class report:
self.generate_ini_node(_tree_name(node), self.tree[node])
def write(self, name):
- if self.is_html():
- if self.asciidoc is None:
- raise error.general('asciidoc not initialised')
- import StringIO
- infile = StringIO.StringIO(self.out)
- outfile = StringIO.StringIO()
- self.asciidoc.execute(infile, outfile)
- self.out = outfile.getvalue()
- infile.close()
- outfile.close()
- elif self.is_ini():
+ self.out = self.formatter.post_process(self.out)
+ if self.is_ini():
self.generate_ini()
if name is not None:
try:
@@ -775,7 +764,6 @@ class report:
self.bset_nesting -= 1
def create(self, inname, outname = None, intro_text = None):
- self.setup()
self.introduction(inname, intro_text)
self.generate(inname)
self.epilogue(inname)