PluginDownloader: support non-master branches

This commit is contained in:
James Lu 2017-08-24 18:58:09 -07:00
parent bdbc79bfc6
commit 32ab953dd1
1 changed files with 12 additions and 11 deletions

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,14 +83,12 @@ 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._reponame,
self._username, self._path),
self._reponame, args={'ref': self._branch}
self._path, )
)
)
if plugins is None: if plugins is None:
log.error(( log.error((
'Cannot get plugins list from repository %s/%s ' 'Cannot get plugins list from repository %s/%s '
@ -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]
@ -318,7 +319,7 @@ repositories = utils.InsensitivePreservingDict({
class PluginDownloader(callbacks.Plugin): class PluginDownloader(callbacks.Plugin):
"""This plugin allows you to install unofficial plugins from """This plugin allows you to install unofficial plugins from
multiple repositories easily. Use the "repolist" command to see list of multiple repositories easily. Use the "repolist" command to see list of
available repositories and "repolist <repository>" to list plugins, available repositories and "repolist <repository>" to list plugins,
which are available in that repository. When you want to install plugin, which are available in that repository. When you want to install plugin,
just run command "install <repository> <plugin>".""" just run command "install <repository> <plugin>"."""