Skip to content

Instantly share code, notes, and snippets.

@zenoalbisser
Created November 19, 2013 16:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zenoalbisser/7548190 to your computer and use it in GitHub Desktop.
Save zenoalbisser/7548190 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
import sys
import subprocess
class GerritChange:
def __init__(self):
self.shasum = ''
self.project = ''
self.branch = ''
self.change_id = ''
self.change_number = 0
self.subject = ''
self.owner_name = ''
self.owner_email = ''
self.gerrit_url = ''
self.last_updated = ''
self.is_open = True
self.status = ''
def setProperty(self, property_string):
property_line = property_string.strip()
if property_line.startswith('change '):
self.shasum = property_line.split(' ')[1]
return;
prop = property_line.split(':')
p = prop[0];
v = prop[1].strip();
if p == 'project':
self.project = v
if p == 'branch':
self.branch = v
if p == 'id':
self.change_id = v
if p == 'number':
self.change_number = v
if p == 'subject':
self.subject = ':'.join(prop[1:])
if p == 'name':
self.owner_name = v
if p == 'email':
self.owner_email = v
if p == 'url':
self.gerrit_url = property_line.split(' ')[1]
if p == 'lastUpdated':
self.last_updated = v
if p == 'open':
self.is_open = (v == 'true')
if p == 'status':
self.status = v
def isValid(self):
if self.shasum and self.project and self.change_id and self.subject:
return True
return False
def printShortForm(self):
owner = '{:<20}'.format(self.owner_name)
subject = '{:<80}'.format(self.subject)
gerrit_url = self.gerrit_url
if sys.stdout.isatty():
blue = '\033[94m'
green = '\033[92m'
yellow = '\033[93m'
red = '\033[91m'
end = '\033[0m'
gerrit_url = green + gerrit_url + end
owner = red + owner + end
print gerrit_url + ' ' + owner + ' ' + subject
def parse_gerrit_results(gerrit_query):
changes = []
gerrit_result = subprocess.check_output(gerrit_query);
lines = gerrit_result.splitlines();
change = GerritChange();
for line in lines:
if line.strip():
change.setProperty(line)
else:
if change.isValid():
changes.append(change)
change = GerritChange();
return changes
def show_open():
changes = parse_gerrit_results(['ssh', 'codereview.qt-project.org', 'gerrit', 'query', 'NOT', 'is:reviewed', 'AND', 'is:open', 'project:qt-labs/qtwebengine']);
for change in changes:
change.printShortForm();
show_open();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment