mirror of
https://github.com/QSCTech/zjunet.git
synced 2026-01-22 11:44:48 +08:00
Add legacy standalone python support in changelog.py
This commit is contained in:
parent
fc48eff092
commit
fce9e2a69d
@ -1,18 +1,43 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import json
|
import json
|
||||||
import urllib3
|
|
||||||
import base64
|
import base64
|
||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
def get_time(s):
|
reload(sys)
|
||||||
if 'fromisoformat' in dir(datetime.datetime):
|
sys.setdefaultencoding('utf8')
|
||||||
return datetime.datetime.fromisoformat(s.replace('Z', '+00:00'))
|
|
||||||
else:
|
try:
|
||||||
return __import__('dateutil.parser').parser.parse(s)
|
import urllib3
|
||||||
|
http = urllib3.PoolManager()
|
||||||
|
def makereq(url, headers):
|
||||||
|
return http.request('GET', url, headers=headers)
|
||||||
|
except ImportError:
|
||||||
|
import urllib2 as request
|
||||||
|
class MyResponse:
|
||||||
|
def __init__(self, status, data):
|
||||||
|
self.status = status
|
||||||
|
self.data = data
|
||||||
|
def makereq(url, headers):
|
||||||
|
f = request.urlopen(request.Request(url, headers=headers))
|
||||||
|
return MyResponse(f.getcode(), f.read().decode('utf-8'))
|
||||||
|
|
||||||
|
|
||||||
|
if 'fromisoformat' in dir(datetime.datetime):
|
||||||
|
def get_time(s):
|
||||||
|
return datetime.datetime.fromisoformat(s.replace('Z', '+00:00'))
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
from dateutil.parser import parser
|
||||||
|
def get_time(s):
|
||||||
|
return parser().parse(s)
|
||||||
|
except ImportError:
|
||||||
|
def get_time(s):
|
||||||
|
return datetime.datetime.strptime(s, "%Y-%m-%dT%H:%M:%SZ")
|
||||||
|
|
||||||
http = urllib3.PoolManager()
|
|
||||||
|
|
||||||
GITHUB_AUTH = None
|
GITHUB_AUTH = None
|
||||||
tok = os.getenv('GITHUB_TOKEN')
|
tok = os.getenv('GITHUB_TOKEN')
|
||||||
@ -30,7 +55,7 @@ def get(url):
|
|||||||
}
|
}
|
||||||
if GITHUB_AUTH is not None:
|
if GITHUB_AUTH is not None:
|
||||||
headers['Authorization'] = GITHUB_AUTH
|
headers['Authorization'] = GITHUB_AUTH
|
||||||
r = http.request('GET', url, headers=headers)
|
r = makereq(url, headers=headers)
|
||||||
assert r.status // 100 == 2, 'HTTP Status {} != 2xx while requesting {}'.format(r.status, url)
|
assert r.status // 100 == 2, 'HTTP Status {} != 2xx while requesting {}'.format(r.status, url)
|
||||||
if r.status != 200:
|
if r.status != 200:
|
||||||
print('WARNING: HTTP {} while requesting {}'.format(r.status, url))
|
print('WARNING: HTTP {} while requesting {}'.format(r.status, url))
|
||||||
@ -43,18 +68,18 @@ author_cache = {}
|
|||||||
def get_author(name):
|
def get_author(name):
|
||||||
if name in author_cache:
|
if name in author_cache:
|
||||||
return author_cache[name]
|
return author_cache[name]
|
||||||
print('Reading data for {}'.format(name), end=' : ', flush=True, file=sys.stderr)
|
print('Reading data for {}'.format(name), end=' : ', file=sys.stderr)
|
||||||
data = api_get('users/{}'.format(name))
|
data = api_get('users/{}'.format(name))
|
||||||
data = {
|
data = {
|
||||||
'name': data['name'],
|
'name': data['name'],
|
||||||
'email': data['email'],
|
'email': data['email'],
|
||||||
}
|
}
|
||||||
author_cache[name] = data
|
author_cache[name] = data
|
||||||
print('{} <{}>'.format(data['name'], data['email']), flush=True, file=sys.stderr)
|
print('{} <{}>'.format(data['name'], data['email']), file=sys.stderr)
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def get_changelog(owner, name):
|
def get_changelog(owner, name):
|
||||||
print('Reading releases of {1} in {0}'.format(owner, name), flush=True, file=sys.stderr)
|
print('Reading releases of {1} in {0}'.format(owner, name), file=sys.stderr)
|
||||||
releases = api_get('repos/{}/{}/releases'.format(owner, name))
|
releases = api_get('repos/{}/{}/releases'.format(owner, name))
|
||||||
releases = filter(lambda v: not v['draft'] and not v['prerelease'], releases)
|
releases = filter(lambda v: not v['draft'] and not v['prerelease'], releases)
|
||||||
|
|
||||||
@ -89,13 +114,13 @@ class ChangeLog:
|
|||||||
rel += item['changes'] + '\n'
|
rel += item['changes'] + '\n'
|
||||||
return rel
|
return rel
|
||||||
|
|
||||||
available_formats = dir(ChangeLog)
|
available_formats = list(filter(lambda v: v[0] != '_', dir(ChangeLog)))
|
||||||
|
|
||||||
if len(sys.argv) != 2:
|
if len(sys.argv) != 2:
|
||||||
print('Usage: {} <format>\nAvailable formats: {}'.format(sys.argv[0], ','.join(ChangeLog)))
|
print('Usage: {} <format>\nAvailable formats: {}'.format(sys.argv[0], ','.join(available_formats)))
|
||||||
else:
|
else:
|
||||||
changelog = get_changelog('QSCTech', 'zjunet')
|
changelog = get_changelog('QSCTech', 'zjunet')
|
||||||
if hasattr(changelog, sys.argv[1]):
|
if hasattr(changelog, sys.argv[1]):
|
||||||
print(getattr(changelog, sys.argv[1])())
|
print(getattr(changelog, sys.argv[1])())
|
||||||
else:
|
else:
|
||||||
print('Invalid format {}\nAvailable formats: {}'.format())
|
print('Invalid format {}\nAvailable formats: {}'.format(','.join(available_formats)))
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user