Skip to content

Commit

Permalink
PluginDownloader: support non-master branches
Browse files Browse the repository at this point in the history
  • Loading branch information
jlu5 committed Aug 25, 2017
1 parent bdbc79b commit 32ab953
Showing 1 changed file with 12 additions and 11 deletions.
23 changes: 12 additions & 11 deletions plugins/PluginDownloader/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
)


Expand All @@ -81,14 +83,12 @@ def _query(self, type_, uri_end, args={}):
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 '
Expand All @@ -111,6 +111,7 @@ def _download(self, plugin):
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]
Expand Down Expand Up @@ -318,7 +319,7 @@ def _getWritableDirectoryFromList(self, directories):
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 <repository>" to list plugins,
available repositories and "repolist <repository>" to list plugins,
which are available in that repository. When you want to install plugin,
just run command "install <repository> <plugin>"."""

Expand Down

0 comments on commit 32ab953

Please sign in to comment.