geoserver

Форк
0
/
list_pulls.py 
81 строка · 2.3 Кб
1
import sys, optparse, getpass, urllib2, json
2
from base64 import b64encode
3
from datetime import datetime
4

5
class GitHub(object):
6

7
  def __init__(self, user, passwd):
8
    self.url = 'https://api.github.com/repos/geoserver/geoserver'
9
    self.auth = 'Basic '+b64encode('%s:%s' % (user,passwd))
10

11
  def list_pulls(self, after=None):
12
    n=0
13
    while True:
14
      n += 1
15
      r = urllib2.urlopen(urllib2.Request(self.pulls_url(n)))
16
      obj = json.loads(r.read())
17
      obj = filter(
18
        lambda x: x.has_key('merged_at') and x['merged_at'] is not None, obj)
19
      if after is not None:
20
        obj = filter(lambda x: 
21
          datetime.strptime(x['merged_at'], '%Y-%m-%dT%H:%M:%SZ') > after, obj)
22

23
      for pull in obj:
24
        yield PullRequest(pull)
25

26
      if len(obj) == 0:
27
        break 
28
      
29
  def pulls_url(self, n):
30
     return '%s/pulls?state=closed&page=%d' % (self.url, n)
31

32
class PullRequest(object):
33
  def __init__(self, obj):
34
    self.obj = obj
35

36
  def url(self):
37
    return self.obj['html_url']
38

39
  def title(self):
40
    return self.obj['title']
41

42
  def author(self):
43
    if self.obj.has_key('user') and self.obj['user'] is not None:
44
      return self.obj['user']['login']
45

46
  def merged(self):
47
    if self.obj.has_key('merged_at'):
48
      return self.obj['merged_at']
49

50
if __name__ == "__main__":
51
  
52
  p = optparse.OptionParser('Usage: %prog [options] username password')
53
  p.add_option('-d', '--date', dest='date', help='Date filter (YYYY-MM-DD)')
54
  """
55
  p.add_option('-j', '--host', dest='host', default='http://jira.codehaus.org', 
56
    help='JIRA host, default is codehaus') 
57
  p.add_option('-k', '--key', dest='key', default='GEOT',
58
    help='JIRA project key, default is GEOT') 
59
  p.add_option('-u', '--user', dest='user', default=getpass.getuser(), 
60
    help='JIRA user, default is current OS user')
61
  p.add_option('-p', '--passwd', dest='passwd', 
62
    help='JIRA password')
63
  p.add_option('-v', '--verbose', dest='verbose', action='store_true',
64
    help='Verbose flag')
65
  """
66

67
  opts, args = p.parse_args()
68
  if len(args) < 2:
69
     p.error('Must specify a GitHub username and password')
70

71
  opts = vars(opts)
72
  date = datetime.strptime(
73
    opts['date'], '%Y-%m-%d') if opts['date'] is not None else None
74

75
  gh = GitHub(args[0], args[1])
76
  for pr in gh.list_pulls(date):
77
    print pr.title()
78
    print pr.author()
79
    print pr.url()
80
    print pr.merged()
81
    print ''
82

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.