On sob, 2017-08-05 at 17:11 -0400, Alec Warner wrote: > On Fri, Aug 4, 2017 at 6:37 PM, Michał Górny <mgo...@gentoo.org> wrote: > > > Support two new options: --bug (-b) and --closes (-c) to add a plain > > 'Bug' reference and a 'Closes' footer for a GitHub pull request. Both > > options can be specified multiple times, resulting in multiple footer > > tags being written. > > > > The --bug option accepts either a Gentoo Bugzilla bug number or an URL > > to any bug tracker. In the latter case, it performs two trivial > > transformations automatically: replaces long 'show_bug.cgi' Bugzilla > > URLs with the short 'https://bugs.gentoo.org/NNNNNN', and forces > > https:// for a few known services. > > > > The --closes option accepts either a GitHub Gentoo repository pull > > request number or an URL to any pull request (or bug) that uses > > the 'Closes' tag. In the latter case, https:// is forced for a few known > > services. > > > > Changes in v2: use urlparse instead of regexps > > > > --- > > repoman/pym/repoman/actions.py | 45 ++++++++++++++++++++++++++++++ > > ++++++++++ > > repoman/pym/repoman/argparser.py | 16 +++++++++++++- > > 2 files changed, 60 insertions(+), 1 deletion(-) > > > > diff --git a/repoman/pym/repoman/actions.py b/repoman/pym/repoman/actions. > > py > > index 00bb5b2ca..8299ed0fe 100644 > > --- a/repoman/pym/repoman/actions.py > > +++ b/repoman/pym/repoman/actions.py > > @@ -14,6 +14,11 @@ import tempfile > > import time > > from itertools import chain > > > > +try: > > + from urllib.parse import parse_qs, urlsplit, urlunsplit > > +except ImportError: > > + from urlparse import parse_qs, urlsplit, urlunsplit > > + > > from _emerge.UserQuery import UserQuery > > > > from repoman._portage import portage > > @@ -324,6 +329,13 @@ class Actions(object): > > return (changes.new, changes.changed, changes.removed, > > changes.no_expansion, changes.expansion) > > > > + https_bugtrackers = frozenset([ > > + 'bitbucket.org', > > + 'bugs.gentoo.org', > > + 'github.com', > > + 'gitlab.com', > > + ]) > > + > > def get_commit_footer(self): > > portage_version = getattr(portage, "VERSION", None) > > gpg_key = self.repoman_settings.get("PORTAGE_GPG_KEY", "") > > @@ -345,9 +357,42 @@ class Actions(object): > > > > # Common part of commit footer > > commit_footer = "\n" > > + for bug in self.options.bug: > > + # case 1: pure number NNNNNN > > + if bug.isdigit(): > > + bug = 'https://bugs.gentoo.org/%s' % > > (bug, ) > > + else: > > + purl = urlsplit(bug) > > + qs = parse_qs(purl.query) > > + # case 2: long Gentoo bugzilla URL to > > shorten > > + if (purl.netloc == 'bugs.gentoo.org' and > > + purl.path == > > '/show_bug.cgi' and > > + tuple(qs.keys()) == > > ('id',)): > > + bug = urlunsplit(('https', > > purl.netloc, > > + qs['id'][-1], '', > > purl.fragment)) > > + # case 3: bug tracker w/ http -> https > > + elif (purl.scheme == 'http' and > > + purl.netloc in > > self.https_bugtrackers): > > + bug = urlunsplit(('https',) + > > purl[1:]) > > + commit_footer += "Bug: %s\n" % (bug, ) > > + > > + for closes in self.options.closes: > > + # case 1: pure number NNNN > > + if closes.isdigit(): > > + closes = 'https://github.com/gentoo/ > > gentoo/pull/%s' % (closes, ) > > + else: > > + purl = urlsplit(closes) > > + # case 2: bug tracker w/ http -> https > > + if purl.netloc in self.https_bugtrackers: > > + closes = urlunsplit(('https',) + > > purl[1:]) > > + commit_footer += "Closes: %s\n" % (closes, ) > > + > > if dco_sob: > > commit_footer += "Signed-off-by: %s\n" % (dco_sob, > > ) > > > > + print(commit_footer) > > + raise SystemExit(666) > > > > Debug lines? >
Yeah, that happens when you work instead of sleeping ;-). -- Best regards, Michał Górny
signature.asc
Description: This is a digitally signed message part