Mercurial > mozilla > hg > bzgit
diff bzgit.py @ 0:89e0c87f09ca
initial (STUB) commit
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Tue, 11 Dec 2012 16:41:39 -0800 |
parents | |
children | 240f98f19ee3 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bzgit.py Tue Dec 11 16:41:39 2012 -0800 @@ -0,0 +1,65 @@ +#!/usr/bin/env python + +""" +bzgit +github <-> bugzilla.m.o bridge +""" + +import bzconsole +import optparse +import sys +import urlparse +from pygithub3 import Github + +def path_segments(path): + """return path segments""" + segments = path.strip('/').split('/') + if segments == ['']: + return [] + return segments + +def add_options(parser): + """add bzgit options to an OptionParser instance""" + + +def main(args=sys.argv[1:]): + + # parse command line arguments + usage = '%prog [options] ...' + class PlainDescriptionFormatter(optparse.IndentedHelpFormatter): + """description formatter""" + def format_description(self, description): + if description: + return description.strip() + '\n' + else: + return '' + parser = optparse.OptionParser(usage=usage, description=__doc__, formatter=PlainDescriptionFormatter()) + add_options(parser) + options, args = parser.parse_args(args) + if not args: + parser.print_usage() + parser.exit() + + # parse resource + assert len(args) == 1 # for now + resource = args[0] + scheme, hostspec, path, query, anchor = urlparse.urlsplit(resource) + segments = path_segments(path) + assert len(segments) > 2 # for now + github_user = segments[0] + github_project = segments[1] + + assert len(segments) == 4 # for now + assert segments[2] == 'pull' + pull_request = int(segments[3]) + + # connect to gh + gh = Github() # TODO: auth + pull = gh.pull_requests.get(44, github_user, github_project) + + # ...and move all the things + bz = bzconsole + +if __name__ == '__main__': + main() +