From 32ab953dd10fd32dbc3dc7074c407da69b9caa0d Mon Sep 17 00:00:00 2001 From: James Lu Date: Thu, 24 Aug 2017 18:58:09 -0700 Subject: [PATCH] PluginDownloader: support non-master branches --- plugins/PluginDownloader/plugin.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/plugins/PluginDownloader/plugin.py b/plugins/PluginDownloader/plugin.py index bb203cf51..a48ea0caf 100644 --- a/plugins/PluginDownloader/plugin.py +++ b/plugins/PluginDownloader/plugin.py @@ -57,19 +57,21 @@ class GitRepository(VersionnedRepository): pass class GithubRepository(GitRepository): - def __init__(self, username, reponame, path='/'): + def __init__(self, username, reponame, path='/', branch='master'): self._username = username self._reponame = reponame + self._branch = branch if not path.startswith('/'): path = '/' + path if not path.endswith('/'): 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._reponame, + self._branch ) @@ -81,14 +83,12 @@ class GithubRepository(GitRepository): return json.loads(utils.web.getUrl(url).decode('utf8')) def getPluginList(self): - plugins = self._query( - 'repos', - '%s/%s/contents%s' % ( - self._username, - self._reponame, - self._path, - ) - ) + plugins = self._query('repos', + '%s/%s/contents%s' % (self._username, + self._reponame, + self._path), + args={'ref': self._branch} + ) if plugins is None: log.error(( 'Cannot get plugins list from repository %s/%s ' @@ -111,6 +111,7 @@ class GithubRepository(GitRepository): response.close() fileObject.seek(0) return tarfile.open(fileobj=fileObject, mode='r:gz') + def install(self, plugin): archive = self._download(plugin) prefix = archive.getnames()[0] @@ -318,7 +319,7 @@ repositories = utils.InsensitivePreservingDict({ class PluginDownloader(callbacks.Plugin): """This plugin allows you to install unofficial plugins from multiple repositories easily. Use the "repolist" command to see list of - available repositories and "repolist " to list plugins, + available repositories and "repolist " to list plugins, which are available in that repository. When you want to install plugin, just run command "install "."""