from __future__ import print_function
import getpass
import datetime
from github import Github
from github_issues import GithubIssues
from six.moves import input
gh = Github(login_or_token=input("Enter github username: "),
password=getpass.getpass('Enter github password: '),
user_agent='PyGithub/Python')
print("Enter location (<user>/<repo>)", end=' ')
repo_full_name = 'avocado-framework/avocado-vt'
repo_full_name = input("or blank for '%s': "
% repo_full_name).strip() or repo_full_name
print()
issues = GithubIssues(gh, repo_full_name)
print()
print("Pull requests applied since:")
while True:
date_string = "20" + input("Enter date (YY-MM-DD): ") + " 00:00:00.0"
date_string = date_string.strip()
fmt = '%Y-%m-%d %H:%M:%S.%f'
try:
since = datetime.datetime.strptime(date_string, fmt)
break
except ValueError:
print("When?")
print()
print("Enter github labels, blank to end:")
labels = []
while True:
label = input("labels[%d]" % (len(labels) + 1))
label = label.strip()
if label:
try:
labels.append(issues.get_gh_label(label).name)
except ValueError as detail:
print(str(detail))
else:
break
print()
criteria = {'state': 'closed', 'labels': labels,
'sort': 'updated', 'since': since}
heading = ("Applied %s pull-requests from %s since %s by author"
% (",".join(labels), repo_full_name, since.isoformat()))
print(heading)
print("-" * len(heading))
print()
author_issues = {}
for number in issues.search(criteria):
issue = issues[number]
if issue['commits'] is not None:
author_issues[issue['author']] = issue
authors = list(author_issues.keys())
authors.sort()
for author in authors:
issue = author_issues[author]
print("Pull #%d: '%s'" % (issue['number'], issue['summary']))
print(" %d commit(s) by %s" % (issue['commits'],
",".join(issue['commit_authors'])))
print()
del issues
print()