summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2014-12-07 18:04:35 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2014-12-11 07:50:10 +0100
commit28410ebf89fe139c02594f42898f71925469f193 (patch)
treed79d760b3a7b1ff84d3c9edceca01a6ead26cd91
parentsb: Move git status to formatter classes (diff)
downloadrtems-source-builder-28410ebf89fe139c02594f42898f71925469f193.tar.bz2
sb: Move build set to formatter classes
-rw-r--r--source-builder/sb/reports.py292
1 files changed, 191 insertions, 101 deletions
diff --git a/source-builder/sb/reports.py b/source-builder/sb/reports.py
index 008fac1..d40922c 100644
--- a/source-builder/sb/reports.py
+++ b/source-builder/sb/reports.py
@@ -97,6 +97,58 @@ class formatter(object):
def epilogue(self, name):
return ''
+ def config_start(self, nest_level, name):
+ return ''
+
+ def config(self, nest_level, name, _config):
+ c = chunk()
+ c.line('-' * _line_len)
+ c.line('Package: %s' % (name))
+ c.line(' Config: %s' % (_config.file_name()))
+ return c.get()
+
+ def config_end(self, nest_level, name):
+ return ''
+
+ def buildset_start(self, nest_level, name):
+ c = chunk()
+ c.line('=-' * (_line_len / 2))
+ c.line('Build Set: %s' % (name))
+ return c.get()
+
+ def buildset_end(self, nest_level, name):
+ return ''
+
+ def info(self, nest_level, name, info, separated):
+ c = chunk()
+ c.line(' ' + name + ':')
+ for l in info:
+ c.line(' ' + l)
+ return c.get()
+
+ def directive(self, nest_level, name, data):
+ c = chunk()
+ c.line(' %s:' % (name))
+ for l in data:
+ c.line(' ' + l)
+ return c.get()
+
+ def files(self, nest_level, sigular, plural, _files):
+ c = chunk()
+ c.line(' ' + plural + ': %d' % (len(_files)))
+ i = 0
+ for name in _files:
+ for s in _files[name]:
+ i += 1
+ c.line(' %2d: %s' % (i, s[0]))
+ if s[1] is None:
+ h = 'No checksum'
+ else:
+ hash = s[1].split()
+ h = '%s: %s' % (hash[0], hash[1])
+ c.line(' %s' % (h))
+ return c.get()
+
class asciidoc_formatter(formatter):
def format(self):
return 'asciidoc'
@@ -155,6 +207,69 @@ class asciidoc_formatter(formatter):
c.line('')
return c.get()
+ def config(self, nest_level, name, _config):
+ c = chunk()
+ c.line('*Package*: _%s_ +' % (name))
+ c.line('*Config*: %s' % (_config.file_name()))
+ c.line('')
+ return c.get()
+
+ def config_end(self, nest_level, name):
+ c = chunk()
+ c.line('')
+ c.line("'''")
+ c.line('')
+ return c.get()
+
+ def buildset_start(self, nest_level, name):
+ c = chunk()
+ h = '%s' % (name)
+ c.line('=%s %s' % ('=' * nest_level, h))
+ return c.get()
+
+ def info(self, nest_level, name, info, separated):
+ c = chunk()
+ end = ''
+ if separated:
+ c.line('*%s:*::' % (name))
+ c.line('')
+ else:
+ c.line('*%s:* ' % (name))
+ end = ' +'
+ spaces = ''
+ for l in info:
+ c.line('%s%s%s' % (spaces, l, end))
+ if separated:
+ c.line('')
+ return c.get()
+
+ def directive(self, nest_level, name, data):
+ c = chunk()
+ c.line('')
+ c.line('*%s*:' % (name))
+ c.line('--------------------------------------------')
+ for l in data:
+ c.line(l)
+ c.line('--------------------------------------------')
+ return c.get()
+
+ def files(self, nest_level, singular, plural, _files):
+ c = chunk()
+ c.line('')
+ c.line('*' + plural + ':*::')
+ if len(_files) == 0:
+ c.line('No ' + plural.lower())
+ for name in _files:
+ for s in _files[name]:
+ c.line('. %s' % (s[0]))
+ if s[1] is None:
+ h = 'No checksum'
+ else:
+ hash = s[1].split()
+ h = '%s: %s' % (hash[0], hash[1])
+ c.line('+\n%s\n' % (h))
+ return c.get()
+
class html_formatter(asciidoc_formatter):
def format(self):
return 'html'
@@ -243,6 +358,21 @@ class ini_formatter(text_formatter):
c.line(';')
return c.get()
+ def config(self, nest_level, name, _config):
+ return ''
+
+ def buildset_start(self, nest_level, name):
+ return ''
+
+ def info(self, nest_level, name, info, separated):
+ return ''
+
+ def directive(self, nest_level, name, data):
+ return ''
+
+ def files(self, nest_level, singular, plural, _files):
+ return ''
+
class xml_formatter(formatter):
def format(self):
return 'xml'
@@ -276,6 +406,58 @@ class xml_formatter(formatter):
c.line('\t</Git>')
return c.get()
+ def config_start(self, nest_level, name):
+ c = chunk()
+ c.line('\t' * nest_level + '<Package name="' + name + '">')
+ return c.get()
+
+ def config(self, nest_level, name, _config):
+ c = chunk()
+ c.line('\t' * nest_level + '<Config>' + _config.file_name() + '</Config>')
+ return c.get()
+
+ def config_end(self, nest_level, name):
+ c = chunk()
+ c.line('\t' * nest_level + '</Package>')
+ return c.get()
+
+ def buildset_start(self, nest_level, name):
+ c = chunk()
+ c.line('\t' * nest_level + '<BuildSet name="' + name + '">')
+ return c.get()
+
+ def buildset_end(self, nest_level, name):
+ c = chunk()
+ c.line('\t' * nest_level + '</BuildSet>')
+ return c.get()
+
+ def info(self, nest_level, name, info, separated):
+ c = chunk()
+ c.add('\t' * nest_level + '<' + name.replace(' ', '') + '>')
+ for l in info:
+ c.add(l)
+ c.line('</' + name + '>')
+ return c.get()
+
+ def directive(self, nest_level, name, data):
+ c = chunk()
+ c.line('\t' * nest_level + '<' + name + '><![CDATA[')
+ for l in data:
+ c.line(l.replace(']]>', ']]]><![CDATA[]>'))
+ c.line(']]></' + name + '>')
+ return c.get()
+
+ def files(self, nest_level, sigular, plural, _files):
+ c = chunk()
+ for name in _files:
+ for s in _files[name]:
+ c.add('\t' * nest_level + '<' + sigular)
+ if not (s[1] is None):
+ hash = s[1].split()
+ c.add(' ' + hash[0] + '="' + hash[1] + '"')
+ c.line('>' + s[0] + '</' + sigular + '>')
+ return c.get()
+
def _tree_name(path_):
return path.splitext(path.basename(path_))[0]
@@ -362,26 +544,17 @@ class report:
cfbn = path.basename(cf)
if cfbn not in self.files['configs']:
self.files['configs'] += [cfbn]
+ self.out += self.formatter.config_start(self.bset_nesting + 1, name)
def config_end(self, name, _config):
- if self.is_asciidoc():
- self.output('')
- self.output("'''")
- self.output('')
+ self.out += self.formatter.config_end(self.bset_nesting + 1, name)
def buildset_start(self, name):
self.files['buildsets'] += [name]
- if self.is_asciidoc():
- h = '%s' % (name)
- self.output('=%s %s' % ('=' * self.bset_nesting, h))
- elif self.is_ini():
- pass
- else:
- self.output('=-' * (_line_len / 2))
- self.output('Build Set: %s' % (name))
+ self.out += self.formatter.buildset_start(self.bset_nesting, name)
def buildset_end(self, name):
- return
+ self.out += self.formatter.buildset_end(self.bset_nesting, name)
def source(self, macros):
def err(msg):
@@ -413,37 +586,11 @@ class report:
def output_info(self, name, info, separated = False):
if info is not None:
- end = ''
- if self.is_asciidoc():
- if separated:
- self.output('*%s:*::' % (name))
- self.output('')
- else:
- self.output('*%s:* ' % (name))
- end = ' +'
- spaces = ''
- else:
- self.output(' %s:' % (name))
- spaces = ' '
- for l in info:
- self.output('%s%s%s' % (spaces, l, end))
- if self.is_asciidoc() and separated:
- self.output('')
+ self.out += self.formatter.info(self.bset_nesting + 2, name, info, separated)
def output_directive(self, name, directive):
if directive is not None:
- if self.is_asciidoc():
- self.output('')
- self.output('*%s*:' % (name))
- self.output('--------------------------------------------')
- spaces = ''
- else:
- self.output(' %s:' % (name))
- spaces = ' '
- for l in directive:
- self.output('%s%s' % (spaces, l))
- if self.is_asciidoc():
- self.output('--------------------------------------------')
+ self.out += self.formatter.directive(self.bset_nesting + 2, name, directive)
def tree_sources(self, name, tree, sources = []):
if 'cfg' in tree:
@@ -481,71 +628,14 @@ class report:
else:
tree['patches'] = patches
self.config_start(name, _config)
- if self.is_ini():
- return
- if self.is_asciidoc():
- self.output('*Package*: _%s_ +' % (name))
- self.output('*Config*: %s' % (_config.file_name()))
- self.output('')
- else:
- self.output('-' * _line_len)
- self.output('Package: %s' % (name))
- self.output(' Config: %s' % (_config.file_name()))
+ self.out += self.formatter.config(self.bset_nesting + 2, name, _config)
self.output_info('Summary', package.get_info('summary'), True)
self.output_info('URL', package.get_info('url'))
self.output_info('Version', package.get_info('version'))
self.output_info('Release', package.get_info('release'))
self.output_info('Build Arch', package.get_info('buildarch'))
- if self.is_asciidoc():
- self.output('')
- if self.is_asciidoc():
- self.output('*Sources:*::')
- if len(sources) == 0:
- self.output('No sources')
- else:
- self.output(' Sources: %d' % (len(sources)))
- c = 0
- for name in sources:
- for s in sources[name]:
- c += 1
- if self.is_asciidoc():
- self.output('. %s' % (s[0]))
- else:
- self.output(' %2d: %s' % (c, s[0]))
- if s[1] is None:
- h = 'No checksum'
- else:
- hash = s[1].split()
- h = '%s: %s' % (hash[0], hash[1])
- if self.is_asciidoc():
- self.output('+\n%s\n' % (h))
- else:
- self.output(' %s' % (h))
- if self.is_asciidoc():
- self.output('')
- self.output('*Patches:*::')
- if len(patches) == 0:
- self.output('No patches')
- else:
- self.output(' Patches: %s' % (len(patches)))
- c = 0
- for name in patches:
- for p in patches[name]:
- c += 1
- if self.is_asciidoc():
- self.output('. %s' % (p[0]))
- else:
- self.output(' %2d: %s' % (c, p[0]))
- hash = p[1]
- if hash is None:
- h = 'No checksum'
- else:
- hash = hash.split()
- h = '%s: %s' % (hash[0], hash[1])
- if self.is_asciidoc():
- self.output('+\n(%s)\n' % (h))
- else:
- self.output(' %s' % (h))
+ self.out += self.formatter.files(self.bset_nesting + 2, "Source", "Sources", sources)
+ self.out += self.formatter.files(self.bset_nesting + 2, "Patch", "Patches", patches)
self.output_directive('Preparation', package.prep())
self.output_directive('Build', package.build())
self.output_directive('Install', package.install())