Changeset 14e5d2e in rtems-source-builder


Ignore:
Timestamp:
Dec 5, 2014, 5:48:35 AM (5 years ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
4.10, 4.11, 4.9, master
Children:
28410eb
Parents:
1f77f9e
git-author:
Sebastian Huber <sebastian.huber@…> (12/05/14 05:48:35)
git-committer:
Sebastian Huber <sebastian.huber@…> (12/11/14 06:50:10)
Message:

sb: Move git status to formatter classes

File:
1 edited

Legend:

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

    r1f77f9e r14e5d2e  
    5454_title = 'RTEMS Tools Project <users@rtems.org>'
    5555
     56_git_status_text = 'RTEMS Source Builder Repository Status'
     57
    5658def _make_path(p, *args):
    5759    for arg in args:
     
    6567    def line(self, text):
    6668        self.data += text + '\n'
     69
     70    def add(self, text):
     71        self.data += text
    6772
    6873    def get(self):
     
    122127        return c.get()
    123128
     129    def git_status(self, valid, dirty, head, remotes):
     130        c = chunk()
     131        c.line('')
     132        c.line("'''")
     133        c.line('')
     134        c.line('.%s' % (_git_status_text))
     135        if valid:
     136            c.line('*Remotes*:;;')
     137            for r in remotes:
     138                if 'url' in remotes[r]:
     139                    text = remotes[r]['url']
     140                else:
     141                    text = 'no URL found'
     142                text = '%s: %s' % (r, text)
     143                c.line('. %s' % (text))
     144            c.line('*Status*:;;')
     145            if dirty:
     146                c.line('_Repository is dirty_')
     147            else:
     148                c.line('Clean')
     149            c.line('*Head*:;;')
     150            c.line('Commit: %s' % (head))
     151        else:
     152            c.line('_Not a valid GIT repository_')
     153        c.line('')
     154        c.line("'''")
     155        c.line('')
     156        return c.get()
     157
    124158class html_formatter(asciidoc_formatter):
    125159    def format(self):
     
    130164
    131165class text_formatter(formatter):
     166    def __init__(self):
     167        super(text_formatter, self).__init__()
     168        self.cini = ''
     169
    132170    def format(self):
    133171        return 'text'
     
    147185        return c.get()
    148186
     187    def git_status_header(self):
     188        c = chunk()
     189        c.line('-' * _line_len)
     190        c.line('%s' % (_git_status_text))
     191        return c.get()
     192
     193    def git_status(self, valid, dirty, head, remotes):
     194        c = chunk()
     195        c.add(self.git_status_header())
     196        if valid:
     197            c.line('%s Remotes:' % (self.cini))
     198            rc = 0
     199            for r in remotes:
     200                rc += 1
     201                if 'url' in remotes[r]:
     202                    text = remotes[r]['url']
     203                else:
     204                    text = 'no URL found'
     205                text = '%s: %s' % (r, text)
     206                c.line('%s  %2d: %s' % (self.cini, rc, text))
     207            c.line('%s Status:' % (self.cini))
     208            if dirty:
     209                c.line('%s  Repository is dirty' % (self.cini))
     210            else:
     211                c.line('%s  Clean' % (self.cini))
     212            c.line('%s Head:' % (self.cini))
     213            c.line('%s  Commit: %s' % (self.cini, head))
     214        else:
     215            c.line('%s Not a valid GIT repository' % (self.cini))
     216        return c.get()
     217
    149218class ini_formatter(text_formatter):
     219    def __init__(self):
     220        super(ini_formatter, self).__init__()
     221        self.cini = ';'
     222
    150223    def format(self):
    151224        return 'ini'
     
    164237        return c.get()
    165238
     239    def git_status_header(self):
     240        c = chunk()
     241        c.line(';')
     242        c.line('; %s' % (_git_status_text))
     243        c.line(';')
     244        return c.get()
     245
    166246class xml_formatter(formatter):
    167247    def format(self):
     
    181261        c = chunk()
    182262        c.line('</RTEMSSourceBuilderReport>')
     263        return c.get()
     264
     265    def git_status(self, valid, dirty, head, remotes):
     266        c = chunk()
     267        c.line('\t<Git>')
     268        if valid:
     269            if dirty:
     270                c.line('\t\t<Status>dirty</Status>')
     271            else:
     272                c.line('\t\t<Status>clean</Status>')
     273            c.line('\t\t<Commit>' + head + '</Commit>')
     274        else:
     275            c.line('\t\t<Status>invalid</Status>')
     276        c.line('\t</Git>')
    183277        return c.get()
    184278
     
    252346
    253347    def git_status(self):
    254         text = 'RTEMS Source Builder Repository Status'
    255         if self.is_asciidoc():
    256             self.output('')
    257             self.output("'''")
    258             self.output('')
    259             self.output('.%s' % (text))
    260         elif self.is_ini():
    261             self.output(';')
    262             self.output('; %s' % (text))
    263             self.output(';')
    264         else:
    265             self.output('-' * _line_len)
    266             self.output('%s' % (text))
    267         repo = git.repo('.', self.opts, self.macros)
    268         repo_valid = repo.valid()
    269         if repo_valid:
    270             if self.is_asciidoc():
    271                 self.output('*Remotes*:;;')
    272             else:
    273                 self.output('%s Remotes:' % (self.cini))
    274             repo_remotes = repo.remotes()
    275             rc = 0
    276             for r in repo_remotes:
    277                 rc += 1
    278                 if 'url' in repo_remotes[r]:
    279                     text = repo_remotes[r]['url']
    280                 else:
    281                     text = 'no URL found'
    282                 text = '%s: %s' % (r, text)
    283                 if self.is_asciidoc():
    284                     self.output('. %s' % (text))
    285                 else:
    286                     self.output('%s  %2d: %s' % (self.cini, rc, text))
    287             if self.is_asciidoc():
    288                 self.output('*Status*:;;')
    289             else:
    290                 self.output('%s Status:' % (self.cini))
    291             if repo.dirty():
    292                 if self.is_asciidoc():
    293                     self.output('_Repository is dirty_')
    294                 else:
    295                     self.output('%s  Repository is dirty' % (self.cini))
    296             else:
    297                 if self.is_asciidoc():
    298                     self.output('Clean')
    299                 else:
    300                     self.output('%s  Clean' % (self.cini))
    301             repo_head = repo.head()
    302             if self.is_asciidoc():
    303                 self.output('*Head*:;;')
    304                 self.output('Commit: %s' % (repo_head))
    305             else:
    306                 self.output('%s Head:' % (self.cini))
    307                 self.output('%s  Commit: %s' % (self.cini, repo_head))
    308         else:
    309             if self.is_asciidoc():
    310                 self.output('_Not a valid GIT repository_')
    311             else:
    312                 self.output('%s Not a valid GIT repository' % (self.cini))
    313         if self.is_asciidoc():
    314             self.output('')
    315             self.output("'''")
    316             self.output('')
     348        r = git.repo('.', self.opts, self.macros)
     349        self.out += self.formatter.git_status(r.valid(), r.dirty(), r.head(), r.remotes())
    317350
    318351    def introduction(self, name, intro_text = None):
Note: See TracChangeset for help on using the changeset viewer.