From 1f91b015ab0174c26a39771156a3f26962be9db1 Mon Sep 17 00:00:00 2001 From: Stefano Rivera Date: Sun, 13 Nov 2011 20:54:05 +0200 Subject: [PATCH] Use subprocess and EditFile in submittodebian --- submittodebian | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/submittodebian b/submittodebian index f697543..6b9b349 100755 --- a/submittodebian +++ b/submittodebian @@ -30,7 +30,8 @@ from tempfile import mkstemp from distro_info import UbuntuDistroInfo from ubuntutools.config import ubu_email -from ubuntutools.question import YesNoQuestion +from ubuntutools.question import YesNoQuestion, EditFile +from ubuntutools.subprocess import call, check_call, Popen, PIPE try: from debian.changelog import Changelog @@ -75,13 +76,12 @@ def gen_debdiff(changelog): oldver = next(changelog_it).version (fd, debdiff) = mkstemp() - os.close(fd) + debdiff_f = os.fdopen(fd, 'w') - if os.system('bzr diff -r tag:%s > /dev/null 2>&1' % oldver) == 256: + devnull = open('/dev/null', 'w') + diff_cmd = ['bzr', 'diff', '-r', 'tag:' + str(oldver)] + if call(diff_cmd, stdout=devnull, stderr=devnull) == 1: print "Extracting bzr diff between %s and %s" % (oldver, newver) - cmd = 'bzr diff -r tag:%s | filterdiff -x "*changelog*" > %s' % \ - (oldver, debdiff) - run_cmd(cmd) else: if oldver.epoch is not None: oldver = str(oldver)[str(oldver).index(":")+1:] @@ -95,9 +95,15 @@ def gen_debdiff(changelog): check_file(newdsc) print "Generating debdiff between %s and %s" % (oldver, newver) - cmd = 'debdiff %s %s | filterdiff -x "*changelog*" > %s' % \ - (olddsc, newdsc, debdiff) - run_cmd(cmd) + diff_cmd = ['debdiff', olddsc, newdsc] + + diff = Popen(diff_cmd, stdout=PIPE) + filterdiff = Popen(['filterdiff', '-x', '*changelog*'], + stdin=diff.stdout, stdout=debdiff_f) + diff.stdout.close() + filterdiff.wait() + debdiff_f.close() + devnull.close() return debdiff @@ -110,22 +116,13 @@ def check_file(fname, critical = True): print u"Couldn't find «%s».\n" % fname sys.exit(1) -def edit_debdiff(debdiff): - cmd = 'sensible-editor %s' % (debdiff) - run_cmd(cmd) - def submit_bugreport(body, debdiff, deb_version, changelog): - cmd = ('reportbug -P "User: ubuntu-devel@lists.ubuntu.com" ' - '-P "Usertags: origin-ubuntu %s ubuntu-patch" -T patch -A %s ' - '-B debian -i %s -V %s %s') % \ - (UbuntuDistroInfo().devel(), debdiff, body, deb_version, - changelog.package) - run_cmd(cmd) - -def run_cmd(cmd): - if os.getenv('DEBUG'): - print "%s\n" % cmd - os.system(cmd) + devel = UbuntuDistroInfo().devel() + cmd = ('reportbug', '-P', 'User: ubuntu-devel@lists.ubuntu.com', + '-P', 'Usertags: origin-ubuntu %s ubuntu-patch' % devel, + '-T', 'patch', '-A', debdiff, '-B', 'debian', '-i', body, + '-V', deb_version, changelog.package) + check_call(cmd) def check_reportbug_config(): fn = os.path.expanduser('~/.reportbugrc') @@ -182,7 +179,10 @@ def main(): fp.close() debdiff = gen_debdiff(changelog) - edit_debdiff(debdiff) + EditFile(debdiff, 'debdiff').edit(optional=True) + EditFile(body, 'bug report', [ + re.compile('.*REPLACE THIS WITH ACTUAL INFORMATION.*') + ]).edit() submit_bugreport(body, debdiff, deb_version, changelog) os.unlink(body) os.unlink(debdiff)