mirror of
https://github.com/Mikaela/Limnoria.git
synced 2024-12-23 11:12:47 +01:00
PluginDownloader: Add @info command.
This commit is contained in:
parent
99660aa4b0
commit
9cba1e4d08
@ -5,7 +5,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: 2012-04-29 19:20+EEST\n"
|
||||
"POT-Creation-Date: 2012-04-29 17:55+UTC\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -15,7 +15,7 @@ msgstr ""
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
|
||||
#: plugin.py:245
|
||||
#: plugin.py:260
|
||||
#, docstring
|
||||
msgid ""
|
||||
"This plugin allows you to install unofficial plugins from\n"
|
||||
@ -25,7 +25,7 @@ msgid ""
|
||||
" just run command \"install <repository> <plugin>\"."
|
||||
msgstr ""
|
||||
|
||||
#: plugin.py:253
|
||||
#: plugin.py:268
|
||||
#, docstring
|
||||
msgid ""
|
||||
"[<repository>]\n"
|
||||
@ -35,19 +35,19 @@ msgid ""
|
||||
" repositories."
|
||||
msgstr ""
|
||||
|
||||
#: plugin.py:261 plugin.py:272
|
||||
#: plugin.py:276 plugin.py:287
|
||||
msgid ", "
|
||||
msgstr ""
|
||||
|
||||
#: plugin.py:263 plugin.py:282
|
||||
#: plugin.py:278 plugin.py:297 plugin.py:322
|
||||
msgid "This repository does not exist or is not known by this bot."
|
||||
msgstr ""
|
||||
|
||||
#: plugin.py:270
|
||||
#: plugin.py:285
|
||||
msgid "No plugin found in this repository."
|
||||
msgstr ""
|
||||
|
||||
#: plugin.py:277
|
||||
#: plugin.py:292
|
||||
#, docstring
|
||||
msgid ""
|
||||
"<repository> <plugin>\n"
|
||||
@ -55,7 +55,23 @@ msgid ""
|
||||
" Downloads and installs the <plugin> from the <repository>."
|
||||
msgstr ""
|
||||
|
||||
#: plugin.py:287
|
||||
#: plugin.py:302 plugin.py:327
|
||||
msgid "This plugin does not exist in this repository."
|
||||
msgstr ""
|
||||
|
||||
#: plugin.py:317
|
||||
#, docstring
|
||||
msgid ""
|
||||
"<repository> <plugin>\n"
|
||||
"\n"
|
||||
" Displays informations on the <plugin> in the <repository>."
|
||||
msgstr ""
|
||||
|
||||
#: plugin.py:331
|
||||
msgid "No README found for this plugin"
|
||||
msgstr ""
|
||||
|
||||
#: plugin.py:334
|
||||
msgid "This plugin has no description."
|
||||
msgstr ""
|
||||
|
||||
|
@ -130,19 +130,24 @@ class GithubRepository(GitRepository):
|
||||
# Remember we pop(0)ed the path
|
||||
return None
|
||||
|
||||
def _download(self, plugin):
|
||||
try:
|
||||
fileObject = urllib2.urlopen(self._downloadUrl)
|
||||
fileObject2 = StringIO()
|
||||
fileObject2.write(fileObject.read())
|
||||
fileObject.close()
|
||||
fileObject2.seek(0)
|
||||
return tarfile.open(fileobj=fileObject2, mode='r:gz')
|
||||
finally:
|
||||
del fileObject
|
||||
def install(self, plugin):
|
||||
archive = self._download(plugin)
|
||||
prefix = archive.getnames()[0]
|
||||
dirname = ''.join((self._path, plugin))
|
||||
directories = conf.supybot.directories.plugins()
|
||||
directory = self._getWritableDirectoryFromList(directories)
|
||||
assert directory is not None
|
||||
dirname = ''.join((self._path, plugin))
|
||||
|
||||
fileObject = urllib2.urlopen(self._downloadUrl)
|
||||
fileObject2 = StringIO()
|
||||
fileObject2.write(fileObject.read())
|
||||
fileObject.close()
|
||||
fileObject2.seek(0)
|
||||
archive = tarfile.open(fileobj=fileObject2, mode='r:gz')
|
||||
prefix = archive.getnames()[0]
|
||||
try:
|
||||
assert archive.getmember(prefix + dirname).isdir()
|
||||
|
||||
@ -161,8 +166,18 @@ class GithubRepository(GitRepository):
|
||||
open(newFileName, 'a').write(extractedFile.read())
|
||||
finally:
|
||||
archive.close()
|
||||
fileObject2.close()
|
||||
del archive, fileObject, fileObject2
|
||||
del archive
|
||||
|
||||
def getInfo(self, plugin):
|
||||
archive = self._download(plugin)
|
||||
prefix = archive.getnames()[0]
|
||||
dirname = ''.join((self._path, plugin))
|
||||
print repr(prefix + dirname + '/README.txt')
|
||||
for file in archive.getmembers():
|
||||
print repr(file)
|
||||
if file.name == prefix + dirname + '/README.txt':
|
||||
extractedFile = archive.extractfile(file)
|
||||
return extractedFile.read()
|
||||
|
||||
def _getWritableDirectoryFromList(self, directories):
|
||||
for directory in directories:
|
||||
@ -297,6 +312,33 @@ class PluginDownloader(callbacks.Plugin):
|
||||
|
||||
install = wrap(install, ['owner', 'something', 'something'])
|
||||
|
||||
@internationalizeDocstring
|
||||
def info(self, irc, msg, args, repository, plugin):
|
||||
"""<repository> <plugin>
|
||||
|
||||
Displays informations on the <plugin> in the <repository>."""
|
||||
global repositories
|
||||
if repository not in repositories:
|
||||
irc.error(_(
|
||||
'This repository does not exist or is not known by '
|
||||
'this bot.'
|
||||
))
|
||||
elif plugin not in repositories[repository].getPluginList():
|
||||
irc.error(_('This plugin does not exist in this repository.'))
|
||||
else:
|
||||
info = repositories[repository].getInfo(plugin)
|
||||
if info is None:
|
||||
irc.error(_('No README found for this plugin'))
|
||||
else:
|
||||
if info.startswith('Insert a description of your plugin here'):
|
||||
irc.error(_('This plugin has no description.'))
|
||||
else:
|
||||
info = info.split('\n\n')[0]
|
||||
for line in info.split('\n'):
|
||||
if line != '':
|
||||
irc.reply(line)
|
||||
info = wrap(info, ['something', optional('something')])
|
||||
|
||||
|
||||
PluginDownloader = internationalizeDocstring(PluginDownloader)
|
||||
Class = PluginDownloader
|
||||
|
Loading…
Reference in New Issue
Block a user