mirror of
https://github.com/Mikaela/Limnoria.git
synced 2024-11-15 07:04:53 +01:00
Merge branch 'testing' of github.com:ProgVal/Limnoria into testing
This commit is contained in:
commit
96b0ae0e1e
@ -347,11 +347,17 @@ class Google(callbacks.PluginRegexp):
|
||||
urlig = self._googleUrlIG(expr)
|
||||
js = utils.web.getUrl(urlig)
|
||||
# fix bad google json
|
||||
js = js.replace('lhs:','"lhs":').replace('rhs:','"rhs":').replace('error:','"error":').replace('icc:','"icc":')
|
||||
js = js \
|
||||
.replace('lhs:','"lhs":') \
|
||||
.replace('rhs:','"rhs":') \
|
||||
.replace('error:','"error":') \
|
||||
.replace('icc:','"icc":') \
|
||||
.replace('\\', '\\\\')
|
||||
js = simplejson.loads(js)
|
||||
|
||||
if js['error'] == '':
|
||||
irc.reply("%s = %s" % (js['lhs'].encode('utf8'), js['rhs'].encode('utf8'),))
|
||||
irc.reply("%s = %s" % (js['lhs'].encode('utf8').decode('string_escape'),
|
||||
js['rhs'].encode('utf8').decode('string_escape'),))
|
||||
return
|
||||
|
||||
url = self._googleUrl(expr)
|
||||
|
@ -1,29 +1,36 @@
|
||||
# PluginDownloader plugin in Limnoria.
|
||||
# Copyright (C) 2011 Limnoria
|
||||
# Mika Suomalainen <mika.henrik.mainio@hotmail.com>, 2011.
|
||||
# Mika Suomalainen <mika.henrik.mainio@hotmail.com>, 2011, 2012.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"POT-Creation-Date: 2012-03-11 20:58+UTC\n"
|
||||
"PO-Revision-Date: 2012-03-15 08:34+0200\n"
|
||||
"POT-Creation-Date: 2012-04-29 19:20+EEST\n"
|
||||
"PO-Revision-Date: 2012-04-29 20:48+0200\n"
|
||||
"Last-Translator: Mika Suomalainen <mika.henrik.mainio@hotmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"Language-Team: Finnish <>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
|
||||
|
||||
#: plugin.py:219
|
||||
#: plugin.py:245
|
||||
msgid ""
|
||||
"Add the help for \"@plugin help PluginDownloader\" here\n"
|
||||
" This should describe *how* to use this plugin."
|
||||
"This plugin allows you to install unofficial plugins from\n"
|
||||
" multiple repositories easily. Use the \"repolist\" command to see list of\n"
|
||||
" available repositories and \"repolist <repository>\" to list plugins, \n"
|
||||
" which are available in that repository. When you want to install plugin,\n"
|
||||
" just run command \"install <repository> <plugin>\"."
|
||||
msgstr ""
|
||||
"Lisää ohjeteksti komennolle \"@plugin help PluginDownloader\" tähän.\n"
|
||||
" Tämän pitäisi kuvata *kuinka* tätä lisäosaa käytetään."
|
||||
"Tämä lisäosa sallii epävirallisten lisäosien asentamisen monista ohjelmistolähteistä\n"
|
||||
" helposti. Käytä \"repolist\" komentoa nähdäksesi listan saatavilla olevista\n"
|
||||
" ohjelmistolähteistä ja \"repolist <ohjelmistolähde>\" saadaksesi listan lisäosista,\n"
|
||||
" jotka ovat saatavilla kyseisessä ohjelmistolähteessä. Kun tahdot asentaa lisäosan,\n"
|
||||
" suorita vain komento \"install <ohjelmistolähde> <lisäosa>\"."
|
||||
|
||||
#: plugin.py:224
|
||||
#: plugin.py:253
|
||||
msgid ""
|
||||
"[<repository>]\n"
|
||||
"\n"
|
||||
@ -31,37 +38,43 @@ msgid ""
|
||||
" If <repository> is not given, returns a list of available\n"
|
||||
" repositories."
|
||||
msgstr ""
|
||||
"[<pakettivarasto>]\n"
|
||||
"[<ohjelmistolähde>]\n"
|
||||
"\n"
|
||||
" Näyttää listan lisäosista, jotka löytyvät <pakettivarastosta>.\n"
|
||||
" Jos <pakettivarasto> ei ole annettu, palauttaa listan kaikista saataville olevista \n"
|
||||
" pakettivarastoista."
|
||||
" Näyttää listan lisäosista, jotka löytyvät <ohjelmistolähteestä>. Jos\n"
|
||||
" <ohjelmistolähdettä> ei ole annettu, palauttaa listan kaikista saataville olevista\n"
|
||||
" ohjelmistolähteistä."
|
||||
|
||||
#: plugin.py:232
|
||||
#: plugin.py:243
|
||||
#: plugin.py:261
|
||||
#: plugin.py:272
|
||||
msgid ", "
|
||||
msgstr ", "
|
||||
|
||||
#: plugin.py:234
|
||||
#: plugin.py:253
|
||||
#: plugin.py:263
|
||||
#: plugin.py:282
|
||||
msgid "This repository does not exist or is not known by this bot."
|
||||
msgstr "Tämä pakettivarasto ei ole olemassakaan tai tämä botti ei tiedä siitä."
|
||||
msgstr "Tämä ohjelmistolähde ei ole olemassakaan tai tämä botti ei tiedä siitä."
|
||||
|
||||
#: plugin.py:241
|
||||
#: plugin.py:270
|
||||
msgid "No plugin found in this repository."
|
||||
msgstr "Lisäosaa ei löytynyt tästä pakettivarastosta."
|
||||
msgstr "Lisäosaa ei löytynyt tästä ohjelmistolähteestä."
|
||||
|
||||
#: plugin.py:248
|
||||
#: plugin.py:277
|
||||
msgid ""
|
||||
"<repository> <plugin>\n"
|
||||
"\n"
|
||||
" Downloads and installs the <plugin> from the <repository>."
|
||||
msgstr ""
|
||||
"<pakettivarasto> <lisäosa>\n"
|
||||
"<ohjelmistolähde> <lisäosa>\n"
|
||||
"\n"
|
||||
" Lataa ja asentaa <lisäosan> <pakettivarastosta>."
|
||||
" Lataa ja asentaa <lisäosan> <ohjelmistolähteestä>."
|
||||
|
||||
#: plugin.py:258
|
||||
#: plugin.py:287
|
||||
msgid "This plugin does not exist in this repository."
|
||||
msgstr "Tämä lisäosa ei ole tässä pakettivarastossa."
|
||||
msgstr "Tämä lisäosa ei ole tässä ohjelmistolähteessä."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Add the help for \"@plugin help PluginDownloader\" here\n"
|
||||
#~ " This should describe *how* to use this plugin."
|
||||
#~ msgstr ""
|
||||
#~ "Lisää ohjeteksti komennolle \"@plugin help PluginDownloader\" tähän.\n"
|
||||
#~ " Tämän pitäisi kuvata *kuinka* tätä lisäosaa käytetään."
|
||||
|
@ -5,7 +5,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: 2012-03-11 20:58+UTC\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,14 +15,17 @@ msgstr ""
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
|
||||
#: plugin.py:219
|
||||
#: plugin.py:260
|
||||
#, docstring
|
||||
msgid ""
|
||||
"Add the help for \"@plugin help PluginDownloader\" here\n"
|
||||
" This should describe *how* to use this plugin."
|
||||
"This plugin allows you to install unofficial plugins from\n"
|
||||
" multiple repositories easily. Use the \"repolist\" command to see list of\n"
|
||||
" available repositories and \"repolist <repository>\" to list plugins, \n"
|
||||
" which are available in that repository. When you want to install plugin,\n"
|
||||
" just run command \"install <repository> <plugin>\"."
|
||||
msgstr ""
|
||||
|
||||
#: plugin.py:224
|
||||
#: plugin.py:268
|
||||
#, docstring
|
||||
msgid ""
|
||||
"[<repository>]\n"
|
||||
@ -32,19 +35,19 @@ msgid ""
|
||||
" repositories."
|
||||
msgstr ""
|
||||
|
||||
#: plugin.py:232 plugin.py:243
|
||||
#: plugin.py:276 plugin.py:287
|
||||
msgid ", "
|
||||
msgstr ""
|
||||
|
||||
#: plugin.py:234 plugin.py:253
|
||||
#: 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:241
|
||||
#: plugin.py:285
|
||||
msgid "No plugin found in this repository."
|
||||
msgstr ""
|
||||
|
||||
#: plugin.py:248
|
||||
#: plugin.py:292
|
||||
#, docstring
|
||||
msgid ""
|
||||
"<repository> <plugin>\n"
|
||||
@ -52,7 +55,23 @@ msgid ""
|
||||
" Downloads and installs the <plugin> from the <repository>."
|
||||
msgstr ""
|
||||
|
||||
#: plugin.py:258
|
||||
#: 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:
|
||||
@ -242,8 +257,11 @@ repositories = {
|
||||
}
|
||||
|
||||
class PluginDownloader(callbacks.Plugin):
|
||||
"""Add the help for "@plugin help PluginDownloader" here
|
||||
This should describe *how* to use this 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,
|
||||
which are available in that repository. When you want to install plugin,
|
||||
just run command "install <repository> <plugin>"."""
|
||||
|
||||
@internationalizeDocstring
|
||||
def repolist(self, irc, msg, args, repository):
|
||||
@ -294,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
|
||||
|
@ -478,6 +478,7 @@ class RichReplyMethods(object):
|
||||
else:
|
||||
log.debug('Not sending capability error, '
|
||||
'supybot.reply.error.noCapability is False.')
|
||||
raise Error, 'error'
|
||||
else:
|
||||
log.warning('Denying %s for some unspecified capability '
|
||||
'(or a default).', self.msg.prefix)
|
||||
|
Loading…
Reference in New Issue
Block a user