PluginDownloader: support non-master branches

This commit is contained in:
James Lu 2017-08-24 18:58:09 -07:00
parent bdbc79bfc6
commit 32ab953dd1

View File

@ -57,19 +57,21 @@ class GitRepository(VersionnedRepository):
pass pass
class GithubRepository(GitRepository): class GithubRepository(GitRepository):
def __init__(self, username, reponame, path='/'): def __init__(self, username, reponame, path='/', branch='master'):
self._username = username self._username = username
self._reponame = reponame self._reponame = reponame
self._branch = branch
if not path.startswith('/'): if not path.startswith('/'):
path = '/' + path path = '/' + path
if not path.endswith('/'): if not path.endswith('/'):
path += '/' path += '/'
self._path = path self._path = path
self._downloadUrl = 'https://github.com/%s/%s/tarball/master' % \ self._downloadUrl = 'https://github.com/%s/%s/tarball/%s' % \
( (
self._username, self._username,
self._reponame, self._reponame,
self._branch
) )
@ -81,13 +83,11 @@ class GithubRepository(GitRepository):
return json.loads(utils.web.getUrl(url).decode('utf8')) return json.loads(utils.web.getUrl(url).decode('utf8'))
def getPluginList(self): def getPluginList(self):
plugins = self._query( plugins = self._query('repos',
'repos', '%s/%s/contents%s' % (self._username,
'%s/%s/contents%s' % (
self._username,
self._reponame, self._reponame,
self._path, self._path),
) args={'ref': self._branch}
) )
if plugins is None: if plugins is None:
log.error(( log.error((
@ -111,6 +111,7 @@ class GithubRepository(GitRepository):
response.close() response.close()
fileObject.seek(0) fileObject.seek(0)
return tarfile.open(fileobj=fileObject, mode='r:gz') return tarfile.open(fileobj=fileObject, mode='r:gz')
def install(self, plugin): def install(self, plugin):
archive = self._download(plugin) archive = self._download(plugin)
prefix = archive.getnames()[0] prefix = archive.getnames()[0]