gerritbot/send-daily-digest | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-)
New commits: commit 251933c6163b9d323f521275907dd08f54a997ce Author: Mathias Michel <m...@gmx.fr> Date: Wed Oct 30 01:44:27 2013 +0100 Implement fdo#70682 : first commits more visible in mail digest Limited to core repo on open submissions in gerrit Also fix the dev-tools project name for submissions Change-Id: I11ce5c01443c5b279c1a3a79a5440f7dffd2f67e Reviewed-on: https://gerrit.libreoffice.org/6481 Reviewed-by: Björn Michaelsen <bjoern.michael...@canonical.com> Tested-by: Björn Michaelsen <bjoern.michael...@canonical.com> diff --git a/gerritbot/send-daily-digest b/gerritbot/send-daily-digest old mode 100755 new mode 100644 index ea3f9b5..899fe2e --- a/gerritbot/send-daily-digest +++ b/gerritbot/send-daily-digest @@ -15,6 +15,7 @@ import email import email.mime.text import json import os +import subprocess import sh import smtplib import sys @@ -24,14 +25,42 @@ def get_daily_query(status, project): def get_digest(query): digest = '' - for line in sh.ssh(args['gerrit'], 'gerrit query --format=JSON -- \'%s\'' % query).strip().split('\n'): + freshers = '' + + # we want first time contributors on new changes for core + do_fresh = query.split(':')[1].split(' ')[0] == 'core' and \ + query.split(':')[3].split(' ')[0] == 'open' and \ + query.split(':')[3].split(' ')[1] == '-age' + + if do_fresh: all_users = init_freshers() + + for line in sh.ssh(args['gerrit'], 'gerrit query --format=JSON -- \'%s\'' % query).encode('utf8').strip().split('\n'): change = json.loads(line) if 'url' in change.keys(): - digest += '+ %s\n in %s from %s\n' % (change['subject'][:73], change['url'], change['owner']['name']) + if do_fresh and change['owner']['name'].encode('utf8') not in all_users: + freshers += '+ %s\n in %s from %s\n' % (change['subject'][:73], change['url'], change['owner']['name']) + else: + digest += '+ %s\n in %s from %s\n' % (change['subject'][:73], change['url'], change['owner']['name']) + if freshers != '': + digest = '~~~~ First time contributors doing great things ! ~~~~\n' + freshers + \ + "~~~~ End of freshness ~~~~\n\n" + digest if digest == '': digest = 'None' return digest + +def init_freshers(): + repo_dir='/var/tmp/core.git' + if not os.path.exists(repo_dir):os.makedirs(repo_dir) + os.chdir(repo_dir) + + if not os.path.exists(os.path.join(repo_dir,'config')): + subprocess.call(['git','clone','--bare','git://gerrit.libreoffice.org/core',repo_dir]) + else: + subprocess.call(['git','fetch','origin']) + return subprocess.check_output(['git','shortlog','-s']) + + def get_project_body(project): none = True @@ -97,6 +126,7 @@ Note: The bot generating this message can be found and improved here: msg['Subject'] = 'LibreOffice Gerrit News for %s on %s' % (project, now.date().isoformat()) msg['Reply-To'] = msg_to[0] msg['X-Mailer'] = 'LibreOfficeGerritDigestMailer 1.1' + server.sendmail(msg_from, msg_to, str(msg)) server.quit() return project @@ -104,7 +134,7 @@ Note: The bot generating this message can be found and improved here: if __name__ == '__main__': parser = argparse.ArgumentParser('gerrit daily digest generator') parser.add_argument('-g', '--gerrit', help='(i. e. logerrit or gerrit.libreoffice.org, use the alias in your ~/.ssh(config with your public key)', required=True) - parser.add_argument('-r', '--repo', help='(A single project from gerrit (core, ...) or "submodules" (... of core) or "all" (core + contrib + submodules)', required=False, default='all') + parser.add_argument('-r', '--repo', help='(A single project from gerrit (core, ...) or "submodules" (... of core) or "all" (core + dev-tools + submodules)', required=False, default='all') parser.add_argument('-a', '--age', help='(A number expressed in hours.)', required=False, default=25) args=vars(parser.parse_args()) msg_from = 'ger...@libreoffice.org' @@ -114,7 +144,7 @@ if __name__ == '__main__': if args['repo'] == 'all': send_message_for_project('core') send_message_for_project('submodules') - send_message_for_project('contrib') + send_message_for_project('dev-tools') else: send_message_for_project(args['repo'])
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits