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

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to