gerritbot/gerrit_daily_digest | 39 +++++++++++++++++++++++ gerritbot/send-daily-digest | 69 +++++++++++++++++++++++++++++++++++++++++ scripts/gerrit_daily_digest.py | 64 -------------------------------------- 3 files changed, 108 insertions(+), 64 deletions(-)
New commits: commit 792546d5773879580fb4f30d3e76c20387c3dc74 Author: Bjoern Michaelsen <bjoern.michael...@canonical.com> Date: Thu Jun 6 19:26:44 2013 +0200 initial version -- still doesnt send diff --git a/gerritbot/send-daily-digest b/gerritbot/send-daily-digest new file mode 100755 index 0000000..90274bc --- /dev/null +++ b/gerritbot/send-daily-digest @@ -0,0 +1,69 @@ +#!/usr/bin/env python +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +import argparse +import codecs +import datetime +import email +import json +import os +import sh +import smtplib +import sys + +def get_daily_query(status, age): + return 'project:core branch:master status:%s -age:%dh' % (status, age) + +def get_digest(gerrit, query): + digest = '' + for line in sh.ssh(gerrit, 'gerrit query --format=JSON \'%s\'' % query).strip().split('\n'): + change = json.loads(line) + if 'url' in change.keys(): + digest += '%s %s %s\n' % (change['url'], change['subject'].ljust(75)[:75], change['owner']['email']) + if digest == '': + digest = 'None' + return digest + +def create_message(gerrit, age): + now = datetime.datetime.now() + message = '''From: ger...@libreoffice.org +To: libreoffice@lists.freedesktop.org +Date: %s +Subject: LibreOffice Gerrit news %s +Reply-To: libreoffice@lists.freedesktop.org +X-Mailer: LibreOfficeGerritDigestMailer 1.0 + +''' % (now, now.date().isoformat()) + message += 'Moin!\n\n' + message += 'open changes on master for project core changed in the last %d hours:\n' % age + message += get_digest(gerrit, get_daily_query('open', age)) + message += '\n\nmerged changes on master for project core changed in the last %d hours:\n' % age + message += get_digest(gerrit, get_daily_query('merged', age)) + message += '\n\nabandoned changes on master for project core changed in the last %d hours:\n' % age + message += get_digest(gerrit, get_daily_query('abandoned', age)) + message += '\n\nOpen changes needing tweaks, but being untouched for more than a week:\n' + message += get_digest(gerrit, 'project:core branch:master status:open (label:Code-Review<=-1 label:Verified<=-1) age:1w') + message += ''' + +Best, + +Your friendly LibreOffice Gerrit Digest Mailer''' + return message + +if __name__ == '__main__': + parser = argparse.ArgumentParser('gerrit daily digest generator') + parser.add_argument('-g', '--gerrit', help='(i. e. logerrit or gerrit.libreoffice.org, use alias in your ~/.ssh(config with your public key)', required=True) + args=vars(parser.parse_args()) + #server = smtplib.SMTP('localhost') + #server.sendmail('ger...@libreoffice.org', 'libreoffice@lists.freedesktop.org', str(message)) + #server.quit() + sys.stdout = codecs.getwriter("utf-8")(sys.stdout) + print(create_message(args['gerrit'], 25)) +# vim: set et sw=4 ts=4: commit 1d38493ce916c39c9289b8ba32bead3f026c9907 Author: Bjoern Michaelsen <bjoern.michael...@canonical.com> Date: Thu Jun 6 15:36:52 2013 +0200 no ugly file extension needed diff --git a/gerritbot/gerrit_daily_digest b/gerritbot/gerrit_daily_digest new file mode 100755 index 0000000..02ca161 --- /dev/null +++ b/gerritbot/gerrit_daily_digest @@ -0,0 +1,39 @@ +#!/usr/bin/env python +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +''' +Created on 19.06.2012 + +@author: david ostrovsky +''' + +from json import loads +import argparse +import sh + +def main(): + parser = argparse.ArgumentParser('gerrit daily digest generator') + parser.add_argument('-s', '--status', choices=['open', 'merged', 'abandoned'], required=True) + parser.add_argument('-g', '--gerrit', help='(i. e. logerrit or gerrit.libreoffice.org, use alias in your ~/.ssh(config with your public key)', required=True) + parser.add_argument('-p', '--project', help='(i. e. core)', required=True) + parser.add_argument('-b', '--branch', help='(i. e. master)', required=True) + args=vars(parser.parse_args()) + gerrit_host_name = args['gerrit'] + status = args['status'] + project = args['project'] + branch = args['branch'] + lines = sh.ssh(gerrit_host_name, 'gerrit', 'query', '--format=JSON', 'status:%s' % status, 'project:%s' % project, 'branch:%s' % branch) + for chunk in lines.strip().split("\n"): + data = loads(chunk) + if 'url' in data.keys(): + print data['url'] + " \"" + data['subject'] + "\" " + data['owner']['email'] + +if __name__ == "__main__": + main() +# vim: set et sw=4 ts=4: diff --git a/gerritbot/gerrit_daily_digest.py b/gerritbot/gerrit_daily_digest.py deleted file mode 100755 index 02ca161..0000000 --- a/gerritbot/gerrit_daily_digest.py +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env python -# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- -# -# This file is part of the LibreOffice project. -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. -# -''' -Created on 19.06.2012 - -@author: david ostrovsky -''' - -from json import loads -import argparse -import sh - -def main(): - parser = argparse.ArgumentParser('gerrit daily digest generator') - parser.add_argument('-s', '--status', choices=['open', 'merged', 'abandoned'], required=True) - parser.add_argument('-g', '--gerrit', help='(i. e. logerrit or gerrit.libreoffice.org, use alias in your ~/.ssh(config with your public key)', required=True) - parser.add_argument('-p', '--project', help='(i. e. core)', required=True) - parser.add_argument('-b', '--branch', help='(i. e. master)', required=True) - args=vars(parser.parse_args()) - gerrit_host_name = args['gerrit'] - status = args['status'] - project = args['project'] - branch = args['branch'] - lines = sh.ssh(gerrit_host_name, 'gerrit', 'query', '--format=JSON', 'status:%s' % status, 'project:%s' % project, 'branch:%s' % branch) - for chunk in lines.strip().split("\n"): - data = loads(chunk) - if 'url' in data.keys(): - print data['url'] + " \"" + data['subject'] + "\" " + data['owner']['email'] - -if __name__ == "__main__": - main() -# vim: set et sw=4 ts=4: diff --git a/scripts/gerrit_daily_digest.py b/scripts/gerrit_daily_digest.py deleted file mode 100755 index 510c60f..0000000 --- a/scripts/gerrit_daily_digest.py +++ /dev/null @@ -1,64 +0,0 @@ -#!/usr/bin/env python - -''' -Created on 19.06.2012 - -@author: david ostrovsky -''' - -from subprocess import check_output, STDOUT -from json import loads -import getopt, sys -#from pprint import pprint - -def main(): - try: - opts, args = getopt.getopt(sys.argv[1:], "hs:g:b:p:", ["help", "status=", "gerrit=", "branch=", "project="]) - except getopt.GetoptError, err: - # print help information and exit: - print str(err) # will print something like "option -a not recognized" - usage() - sys.exit(2) - gerrit_host_name = None - status = None - project = None - branch = None - for o, a in opts: - if o in ("-h", "--help"): - usage() - sys.exit() - elif o in ("-s", "--status"): - status = a - elif o in ("-g", "--gerrit"): - gerrit_host_name = a - elif o in ("-p", "--project"): - project = a - elif o in ("-b", "--branch"): - branch = a - else: - assert False, "unhandled option" - if branch == None or gerrit_host_name == None or status == None or project == None or branch == None: - usage() - sys.exit(2) - - cmd = "ssh " + gerrit_host_name + " gerrit query --format=JSON status:" + status + " project:core branch:master" - lines = check_output(cmd, shell=True, stderr=STDOUT).strip() - for chunk in lines.split("\n"): - data = loads(chunk) - #pprint(data) - if 'url' in data.keys(): - print data['url'] + " \"" + data['subject'] + "\" " + data['owner']['email'] - -def usage(): - print """gerrit_daily_digest.py - -g --gerrit (i. e. logerrit or gerrit.libreoffice.org, use alias in your ~/.ssh(config with your public key) - -s --status (open, merged, abandoned) - -p --project (i. e. core) - -b --branch (i. e. master) - -v --verbose - -h --help - Example: gerrit_daily_digest.py -g logerrit -s merged -p core -b master - """ - -if __name__ == "__main__": - main() commit 66b165fea4bb1c42f2f60e966a3466ecef5ae7f6 Author: Bjoern Michaelsen <bjoern.michael...@canonical.com> Date: Thu Jun 6 15:36:05 2013 +0200 use sh from amoffat.github.io/sh/ instead diff --git a/gerritbot/gerrit_daily_digest.py b/gerritbot/gerrit_daily_digest.py index 59ac20e..02ca161 100755 --- a/gerritbot/gerrit_daily_digest.py +++ b/gerritbot/gerrit_daily_digest.py @@ -13,11 +13,9 @@ Created on 19.06.2012 @author: david ostrovsky ''' -from subprocess import check_output, STDOUT from json import loads -import getopt, sys import argparse -#from pprint import pprint +import sh def main(): parser = argparse.ArgumentParser('gerrit daily digest generator') @@ -30,11 +28,9 @@ def main(): status = args['status'] project = args['project'] branch = args['branch'] - cmd = 'ssh %s gerrit query --format=JSON status:%s project:%s branch:%s' % (gerrit_host_name, status, project, branch) - lines = check_output(cmd, shell=True, stderr=STDOUT).strip() - for chunk in lines.split("\n"): + lines = sh.ssh(gerrit_host_name, 'gerrit', 'query', '--format=JSON', 'status:%s' % status, 'project:%s' % project, 'branch:%s' % branch) + for chunk in lines.strip().split("\n"): data = loads(chunk) - #pprint(data) if 'url' in data.keys(): print data['url'] + " \"" + data['subject'] + "\" " + data['owner']['email'] commit 48cbdd77e1cef40b451c167112957ea5ed0bd6c8 Author: Bjoern Michaelsen <bjoern.michael...@canonical.com> Date: Thu Jun 6 15:14:39 2013 +0200 actually use project and branch diff --git a/gerritbot/gerrit_daily_digest.py b/gerritbot/gerrit_daily_digest.py index 163d9e5..59ac20e 100755 --- a/gerritbot/gerrit_daily_digest.py +++ b/gerritbot/gerrit_daily_digest.py @@ -30,7 +30,7 @@ def main(): status = args['status'] project = args['project'] branch = args['branch'] - cmd = "ssh " + gerrit_host_name + " gerrit query --format=JSON status:" + status + " project:core branch:master" + cmd = 'ssh %s gerrit query --format=JSON status:%s project:%s branch:%s' % (gerrit_host_name, status, project, branch) lines = check_output(cmd, shell=True, stderr=STDOUT).strip() for chunk in lines.split("\n"): data = loads(chunk) commit 796a1022e56425904149d6fc2fc299da22934923 Author: Bjoern Michaelsen <bjoern.michael...@canonical.com> Date: Thu Jun 6 15:11:43 2013 +0200 add license header, move to argparse diff --git a/gerritbot/gerrit_daily_digest.py b/gerritbot/gerrit_daily_digest.py new file mode 100755 index 0000000..163d9e5 --- /dev/null +++ b/gerritbot/gerrit_daily_digest.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +''' +Created on 19.06.2012 + +@author: david ostrovsky +''' + +from subprocess import check_output, STDOUT +from json import loads +import getopt, sys +import argparse +#from pprint import pprint + +def main(): + parser = argparse.ArgumentParser('gerrit daily digest generator') + parser.add_argument('-s', '--status', choices=['open', 'merged', 'abandoned'], required=True) + parser.add_argument('-g', '--gerrit', help='(i. e. logerrit or gerrit.libreoffice.org, use alias in your ~/.ssh(config with your public key)', required=True) + parser.add_argument('-p', '--project', help='(i. e. core)', required=True) + parser.add_argument('-b', '--branch', help='(i. e. master)', required=True) + args=vars(parser.parse_args()) + gerrit_host_name = args['gerrit'] + status = args['status'] + project = args['project'] + branch = args['branch'] + cmd = "ssh " + gerrit_host_name + " gerrit query --format=JSON status:" + status + " project:core branch:master" + lines = check_output(cmd, shell=True, stderr=STDOUT).strip() + for chunk in lines.split("\n"): + data = loads(chunk) + #pprint(data) + if 'url' in data.keys(): + print data['url'] + " \"" + data['subject'] + "\" " + data['owner']['email'] + +if __name__ == "__main__": + main() +# vim: set et sw=4 ts=4: _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits