esc-reporting/esc-automate.py | 21 +++++++++------------ esc-reporting/esc-collect.py | 18 ++++++++---------- esc-reporting/esc-report.py | 9 +++++---- 3 files changed, 22 insertions(+), 26 deletions(-)
New commits: commit 49b88333c8b541a391d11c1b0341e25445e2ef71 Author: Guilhem Moulin <guil...@libreoffice.org> AuthorDate: Mon Feb 17 06:15:03 2020 +0100 Commit: Xisco Faulí <xiscofa...@libreoffice.org> CommitDate: Wed Feb 19 17:09:36 2020 +0100 esc-reporting: replace os.system with subprocess.* Change-Id: Ief15aae7bb7a66ba59c57f3bd1b6d489a590b0ab Reviewed-on: https://gerrit.libreoffice.org/c/dev-tools/+/88908 Tested-by: Xisco Faulí <xiscofa...@libreoffice.org> Reviewed-by: Xisco Faulí <xiscofa...@libreoffice.org> diff --git a/esc-reporting/esc-automate.py b/esc-reporting/esc-automate.py index 32f603b..77cf5ee 100755 --- a/esc-reporting/esc-automate.py +++ b/esc-reporting/esc-automate.py @@ -27,6 +27,8 @@ import datetime import json import requests from requests.auth import HTTPDigestAuth +from shlex import quote +from subprocess import check_call import unidecode def util_load_data_file(fileName): @@ -78,10 +80,8 @@ def doBugzilla(id, command, isComment=False): def doGerrit(id, command): - cmd = 'ssh gerrit.libreoffice.org gerrit ' + command + ' "' + id + '"' - r = os.system(cmd) - if r != 0: - raise Exception('error: ' + cmd + ' failed') + gerrit = ['ssh', '-p', '29418', 'gerrit.libreoffice.org', 'gerrit'] + check_call(gerrit + command + [quote(id)]) def doMail(cfg, mail, subject, content, attachFile=None): @@ -91,13 +91,13 @@ def doMail(cfg, mail, subject, content, attachFile=None): def handle_gerrit_abandon(id, patchset): pid = str(id) + ',' + str(patchset) - cmd = 'review --abandon --message \'"' + cfg['automate']['gerrit']['abandon'] + '"\'' + cmd = ['review', '--abandon', '--message', quote(cfg['automate']['gerrit']['abandon'])] doGerrit(pid, cmd) def handle_gerrit_review(id, row): - cmd = 'set-reviewers -a \'"' + row['name'] + '"\'' + cmd = ['set-reviewers', '-a', quote(row['name'])] doGerrit(id, cmd) handle_gerrit_comment(row['id'], row['patchset'], useText='added reviewer') @@ -109,7 +109,7 @@ def handle_gerrit_comment(id, patchset, useText = None): txt = 'A polite ping, ' + cfg['automate']['gerrit']['comment'] else: txt = useText - cmd = 'review --message \'"' + txt + '"\'' + cmd = ['review', '--message', quote(txt)] doGerrit(pid, cmd) @@ -133,13 +133,10 @@ def handle_mail_pdf(email, name): fp.close() filePdf = '/tmp/award.pdf' - pdfGen = 'pdftk ' + cfg['homedir'] + 'AcknowledgmentForm.pdf fill_form ' + fileFdf + ' output ' + filePdf - attachFile= {'path': filePdf, 'name': 'award.pdf', 'extension': 'pdf'} - r = os.system(pdfGen) - if r != 0: - raise Exception('pdf generation failed ') + check_call(['pdftk', cfg['homedir'] + 'AcknowledgmentForm.pdf', 'fill_form', fileFdf, 'output', filePdf]) text = cfg['automate']['1st award']['content'].format(name) + attachFile= {'path': filePdf, 'name': 'award.pdf', 'extension': 'pdf'} doMail(cfg, email, cfg['automate']['1st award']['subject'], text, attachFile) diff --git a/esc-reporting/esc-collect.py b/esc-reporting/esc-collect.py index b0adc1f..034e0ca 100755 --- a/esc-reporting/esc-collect.py +++ b/esc-reporting/esc-collect.py @@ -38,7 +38,7 @@ import datetime import json import xmltodict import requests -from subprocess import check_call, Popen, PIPE +from subprocess import check_call, Popen, PIPE, CalledProcessError from requests.auth import HTTPDigestAuth @@ -591,19 +591,17 @@ def get_gerrit(cfg): print("Updating gerrit dump from " + rawList['newest-entry']) rawList['committers'] = [] - r = os.system('ssh gerrit.libreoffice.org "gerrit ls-members Committers" > /tmp/committerList') - if r != 0: - raise Exception('ssh gerrit... failed') - - fp = open('/tmp/committerList', encoding='utf-8') - tmp = fp.read().split('\n')[1:-1] - fp.close() - for line in tmp: - row = line.split('\t') + # Could use the REST API instead and receive pre-formatted JSON, but that requires HTTP auth + cmd = ["ssh", "-p", "29418", "gerrit.libreoffice.org", "gerrit", "ls-members", "Committers"] + p = Popen(cmd, stdout=PIPE) + for line in io.TextIOWrapper(p.stdout, encoding="utf-8"): + row = line.rstrip().split('\t') rawList['committers'].append({"_account_id": int(row[0]), "email": row[3], "name": row[2], "username": row[1]}) + if p.wait() != 0: + raise CalledProcessError(p.returncode, cmd) url = 'https://gerrit.libreoffice.org/changes/?q=after:' + searchDate.strftime("%Y-%m-%d") + \ '&o=DETAILED_LABELS&o=DETAILED_ACCOUNTS&o=MESSAGES&limit=200&start=' diff --git a/esc-reporting/esc-report.py b/esc-reporting/esc-report.py index 9f54321..7e1b630 100755 --- a/esc-reporting/esc-report.py +++ b/esc-reporting/esc-report.py @@ -39,6 +39,7 @@ import operator import datetime import json import xmltodict +from subprocess import check_call @@ -462,8 +463,8 @@ def report_bug_metrics(): filePath = cfg['homedir'] + fileName fileContent = '/tmp/bugs/content.xml' - os.system('rm -rf /tmp/bugs') - os.system('unzip -d /tmp/bugs ' + filePath) + check_call(['rm', '-rf', '/tmp/bugs']) + check_call(['unzip', '-d', '/tmp/bugs', filePath]) fp = open(fileContent, encoding='utf-8') text = fp.read() fp.close() @@ -498,8 +499,8 @@ def report_bug_metrics(): fp = open(fileContent, 'w', encoding='utf-8') print(text, file=fp) fp.close() - os.system('cd /tmp/bugs; zip ' + filePath + ' *') - os.system('cd ' + cfg['homedir'] + 'bug-metrics; git add *; git commit -m \'new version ' + statList['addDate'] + '\'') + check_call(['zip', filePath, '-r', '.'], cwd='/tmp/bugs') + check_call(['git', '-C', cfg['homedir'] + 'bug-metrics', 'commit', '-am', 'new version ' + statList['addDate']]) fileBody='/tmp/esc_odf.txt' fp = open(fileBody, 'w', encoding='utf-8') _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits