Changeset 97e083a in rtems-source-builder


Ignore:
Timestamp:
Dec 4, 2014, 4:12:36 PM (5 years ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
4.10, 4.11, 4.9, master
Children:
1f77f9e
Parents:
5d56584
git-author:
Sebastian Huber <sebastian.huber@…> (12/04/14 16:12:36)
git-committer:
Sebastian Huber <sebastian.huber@…> (12/11/14 06:50:09)
Message:

sb: Move introduction to formatter classes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • source-builder/sb/reports.py

    r5d56584 r97e083a  
    5050    sys.exit(1)
    5151
     52_line_len = 78
     53
     54_title = 'RTEMS Tools Project <users@rtems.org>'
     55
     56def _make_path(p, *args):
     57    for arg in args:
     58        p = path.join(p, arg)
     59    return os.path.abspath(path.host(p))
     60
     61class chunk:
     62    def __init__(self):
     63        self.data = ''
     64
     65    def line(self, text):
     66        self.data += text + '\n'
     67
     68    def get(self):
     69        return self.data
     70
    5271class formatter(object):
     72    def set_sbpath(self, sbpath):
     73        self.sbpath = sbpath
     74
    5375    def format(self):
    5476        raise error.general('internal error: formatter.format() not implemented')
     
    5678    def ext(self):
    5779        raise error.general('internal error: formatter.ext() not implemented')
     80
     81    def introduction(self, name, now, intro_text):
     82        c = chunk()
     83        c.line('=' * _line_len)
     84        c.line('%s %s' % (_title, now))
     85        if intro_text:
     86            c.line('')
     87            c.line('%s' % ('\n'.join(intro_text)))
     88        c.line('=' * _line_len)
     89        c.line('Report: %s' % (name))
     90        return c.get()
    5891
    5992class asciidoc_formatter(formatter):
     
    6497        return '.txt'
    6598
    66 class ini_formatter(formatter):
    67     def format(self):
    68         return 'ini'
    69 
    70     def ext(self):
    71         return '.ini'
    72 
    73 class html_formatter(formatter):
     99    def introduction(self, name, now, intro_text):
     100        c = chunk()
     101        h = 'RTEMS Source Builder Report'
     102        c.line(h)
     103        c.line('=' * len(h))
     104        c.line(':doctype: book')
     105        c.line(':toc2:')
     106        c.line(':toclevels: 5')
     107        c.line(':icons:')
     108        c.line(':numbered:')
     109        c.line(':data-uri:')
     110        c.line('')
     111        c.line(_title)
     112        c.line(now)
     113        c.line('')
     114        image = _make_path(self.sbpath, options.basepath, 'images', 'rtemswhitebg.jpg')
     115        c.line('image:%s["RTEMS",width="20%%"]' % (image))
     116        c.line('')
     117        if intro_text:
     118            c.line('%s' % ('\n'.join(intro_text)))
     119        return c.get()
     120
     121class html_formatter(asciidoc_formatter):
    74122    def format(self):
    75123        return 'html'
     
    84132    def ext(self):
    85133        return '.txt'
     134
     135    def introduction(self, name, now, intro_text):
     136        c = chunk()
     137        c.line('=' * _line_len)
     138        c.line('%s %s' % (_title, now))
     139        if intro_text:
     140            c.line('')
     141            c.line('%s' % ('\n'.join(intro_text)))
     142        c.line('=' * _line_len)
     143        c.line('Report: %s' % (name))
     144        return c.get()
     145
     146class ini_formatter(text_formatter):
     147    def format(self):
     148        return 'ini'
     149
     150    def ext(self):
     151        return '.ini'
     152
     153    def introduction(self, name, now, intro_text):
     154        c = chunk()
     155        c.line(';')
     156        c.line('; %s %s' % (_title, now))
     157        if intro_text:
     158            c.line(';')
     159            c.line('; %s' % ('\n; '.join(intro_text)))
     160            c.line(';')
     161        return c.get()
    86162
    87163def _tree_name(path_):
     
    98174class report:
    99175    """Report the build details about a package given a config file."""
    100 
    101     line_len = 78
    102176
    103177    def __init__(self, formatter, _configs, opts, macros = None):
     
    110184        else:
    111185            self.macros = macros
     186        self.sbpath = self.macros.expand('%{_sbdir}')
     187        self.formatter.set_sbpath(self.sbpath)
    112188        self.bset_nesting = 0
    113         self.configs_active = False
    114189        self.out = ''
    115190        self.asciidoc = None
     
    121196        self.files = { 'buildsets':[], 'configs':[] }
    122197
    123     def _sbpath(self, *args):
    124         p = self.macros.expand('%{_sbdir}')
    125         for arg in args:
    126             p = path.join(p, arg)
    127         return os.path.abspath(path.host(p))
    128 
    129198    def output(self, text):
    130         self.out += '%s\n' % (text)
     199        self.out += text + '\n'
    131200
    132201    def is_text(self):
     
    148217            except:
    149218                raise error.general('installation error: no asciidocapi found')
    150             asciidoc_py = self._sbpath(options.basepath, 'asciidoc', 'asciidoc.py')
     219            asciidoc_py = _make_path(self.sbpath, options.basepath, 'asciidoc', 'asciidoc.py')
    151220            try:
    152221                self.asciidoc = asciidocapi.AsciiDocAPI(asciidoc_py)
     
    172241            self.output(';')
    173242        else:
    174             self.output('-' * self.line_len)
     243            self.output('-' * _line_len)
    175244            self.output('%s' % (text))
    176245        repo = git.repo('.', self.opts, self.macros)
     
    227296    def introduction(self, name, intro_text = None):
    228297        now = datetime.datetime.now().ctime()
    229         title = 'RTEMS Tools Project <users@rtems.org>'
    230         if self.is_asciidoc():
    231             h = 'RTEMS Source Builder Report'
    232             self.output(h)
    233             self.output('=' * len(h))
    234             self.output(':doctype: book')
    235             self.output(':toc2:')
    236             self.output(':toclevels: 5')
    237             self.output(':icons:')
    238             self.output(':numbered:')
    239             self.output(':data-uri:')
    240             self.output('')
    241             self.output(title)
    242             self.output(datetime.datetime.now().ctime())
    243             self.output('')
    244             image = self._sbpath(options.basepath, 'images', 'rtemswhitebg.jpg')
    245             self.output('image:%s["RTEMS",width="20%%"]' % (image))
    246             self.output('')
    247             if intro_text:
    248                 self.output('%s' % ('\n'.join(intro_text)))
    249         elif self.is_ini():
    250             self.output(';')
    251             self.output('; %s %s' % (title, now))
    252             if intro_text:
    253                 self.output(';')
    254                 self.output('; %s' % ('\n; '.join(intro_text)))
    255                 self.output(';')
    256         else:
    257             self.output('=' * self.line_len)
    258             self.output('%s %s' % (title, now))
    259             if intro_text:
    260                 self.output('')
    261                 self.output('%s' % ('\n'.join(intro_text)))
    262             self.output('=' * self.line_len)
    263             self.output('Report: %s' % (name))
     298        self.out += self.formatter.introduction(name, now, intro_text)
    264299        self.git_status()
    265300
     
    270305            if cfbn not in self.files['configs']:
    271306                self.files['configs'] += [cfbn]
    272         first = not self.configs_active
    273         self.configs_active = True
    274307
    275308    def config_end(self, name, _config):
     
    287320            pass
    288321        else:
    289             self.output('=-' * (self.line_len / 2))
     322            self.output('=-' * (_line_len / 2))
    290323            self.output('Build Set: %s' % (name))
    291324
    292325    def buildset_end(self, name):
    293         self.configs_active = False
     326        return
    294327
    295328    def source(self, macros):
     
    398431            self.output('')
    399432        else:
    400             self.output('-' * self.line_len)
     433            self.output('-' * _line_len)
    401434            self.output('Package: %s' % (name))
    402435            self.output(' Config: %s' % (_config.file_name()))
Note: See TracChangeset for help on using the changeset viewer.