import sys
import json
-from repa.common import OBS_PROJECT_PREFIX
+from repa.common import OBS_PROJECT_PREFIX, Colorizer
from repa.obs import OBS
from repa.main import sub_main
-
-def get_status(meta, build_results=None):
+def get_status(meta, colorizer, build_results=None):
"""Get overall status by analyzing package and image build status."""
if build_results:
codes = set()
for pkginfo in target['packages']:
codes.add(pkginfo[1])
- statuses = [('broken', 'broken source'),
- ('unresolvable', 'unresolvable packages'),
- ('failed', 'package build failed'),
- ('building', 'package building')]
- for pkgstatus, status in statuses:
+ statuses = [('broken', ('red', 'broken source')),
+ ('unresolvable', ('red', 'unresolvable packages')),
+ ('failed', ('red', 'package build failed')),
+ ('building', ('blue', 'package building'))]
+ for pkgstatus, (color, status) in statuses:
if pkgstatus in codes:
- return status
+ return getattr(colorizer, color)(status)
if 'images' in meta:
for img in meta['images']:
- statuses = [('failed', 'image build failed'),
- ('building', 'image building')]
- for imgstatus, status in statuses:
+ statuses = [('failed', ('red', 'image build failed')),
+ ('building', ('blue', 'image building'))]
+ for imgstatus, (color, status) in statuses:
if img['status'] == imgstatus:
- return status
- return 'ready'
+ return getattr(colorizer, color)(status)
+
+ return colorizer.green('ready')
-def list_submissions(obs, target, processes):
+def list_submissions(obs, target, processes, is_colorize=False):
"""List submissions and groups."""
+ colorizer = Colorizer(is_colorize)
# submissions
groups = []
for project, desc, build_results in \
continue
projects = [project.split('/')[-1] for project in meta['projects']]
print '%-37s %-22s %s' % (meta['git_tag'], \
- get_status(meta, build_results), ','.join(projects))
+ get_status(meta, colorizer, build_results), ','.join(projects))
# groups
if groups:
print
for meta in groups:
- print '%-37s %-22s' % (meta['name'], get_status(meta))
+ print '%-37s %-22s' % (meta['name'], get_status(meta, colorizer))
class List(object):
def run(argv):
"""Command line entry point. Called from [sub_]main"""
obs = OBS(argv.apiurl, argv.apiuser, argv.apipasswd)
- return list_submissions(obs, argv.project, argv.processes)
+ return list_submissions(obs, argv.project, argv.processes,
+ argv.colorize)
if __name__ == '__main__':