From 48d900b6f513303872a89d1f0566d02d6e40d2f4 Mon Sep 17 00:00:00 2001 From: James Lu Date: Mon, 29 Jun 2015 15:23:46 -0700 Subject: [PATCH] PkgInfo: more consistency in pluralization and "View more at" URLs --- PkgInfo/plugin.py | 31 +++++++++++++++++++------------ PkgInfo/test.py | 6 +++--- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/PkgInfo/plugin.py b/PkgInfo/plugin.py index 8a2cf42..e516d62 100644 --- a/PkgInfo/plugin.py +++ b/PkgInfo/plugin.py @@ -97,7 +97,7 @@ class MadisonParser(): class PkgInfo(callbacks.Plugin): """Fetches package information from the repositories of - Debian, Arch Linux, Linux Mint, Fedora, CentOS, and Ubuntu.""" + Arch Linux, CentOS, Debian, Fedora, FreeBSD, Linux Mint, and Ubuntu.""" threaded = True def __init__(self, irc): @@ -108,7 +108,7 @@ class PkgInfo(callbacks.Plugin): # This site is very, VERY slow, but it still works.. 'debian-archive': 'http://archive.debian.net/'} self.unknowndist = _("Unknown distribution. This command only supports " - "package lookup for Debian and Ubuntu. For " + "package lookup for Debian and Ubuntu. For a list of" "commands for other distros' packages, use " "'list PkgInfo'.") @@ -240,7 +240,7 @@ class PkgInfo(callbacks.Plugin): irc.error("No results found.", Raise=True) try: url = "{}search?keywords={}".format(self.addrs[distro], pkg) - d += format(" View more at: %u", url) + d += format("; View more at: %u", url) except KeyError: pass irc.reply(d) @@ -254,11 +254,12 @@ class PkgInfo(callbacks.Plugin): If --exact is given, will output only exact matches. """ pkg = pkg.lower() - baseurl = 'https://www.archlinux.org/packages/search/json/?' if 'exact' in dict(opts): - url = baseurl + urlencode({'name': pkg}) + encoded = urlencode({'name': pkg}) else: - url = baseurl + urlencode({'q': pkg}) + encoded = urlencode({'q': pkg}) + url = 'https://www.archlinux.org/packages/search/json/?' + encoded + friendly_url = 'https://www.archlinux.org/packages/?' + encoded self.log.debug("PkgInfo: using url %s for 'archlinux' command", url) fd = utils.web.getUrl(url) data = json.loads(fd.decode("utf-8")) @@ -275,8 +276,9 @@ class PkgInfo(callbacks.Plugin): count = len(results) items = [format("%s \x02[%s]\x02", s, ', '.join(archs[s])) for s in results] - irc.reply(format('Found %n: %L', (len(results), 'result'), - list(results))) + irc.reply(format('Found %n: %L; View more at %u', (len(results), + 'result'), + list(results), friendly_url)) else: irc.error("No results found.", Raise=True) archlinux = wrap(archlinux, ['somethingWithoutSpaces', getopts({'exact': ''})]) @@ -308,7 +310,9 @@ class PkgInfo(callbacks.Plugin): s += "{name} - {desc} \x02({version} {verbose})\x02, " \ .format(name=x['Name'], desc=x['Description'], version=x['Version'], verbose=verboseInfo) - irc.reply(s[:-2]) # cut off the ", " at the end + friendly_url = 'https://aur.archlinux.org/packages/?' + \ + urlencode({'K': pkg}) + irc.reply(s + format('View more at: %u', friendly_url)) else: irc.error("No results found.", Raise=True) archaur = wrap(archaur, ['somethingWithoutSpaces']) @@ -429,7 +433,10 @@ class PkgInfo(callbacks.Plugin): return s results = ['%s: %s' % (ircutils.bold(pkg['name']), formatdesc(pkg['description'])) for pkg in data["packages"]] - irc.reply('; '.join(results)) + friendly_url = 'https://apps.fedoraproject.org/packages/s/%s' % query + s = format('Found %n: %s; View more at %u', (len(results), 'result'), '; '.join(results), + friendly_url) + irc.reply(s) @wrap(['positiveInt', 'somethingWithoutSpaces', 'somethingWithoutSpaces', getopts({'arch': 'somethingWithoutSpaces'})]) @@ -481,7 +488,7 @@ class PkgInfo(callbacks.Plugin): if query in package.lower(): res.append(package) if res: - irc.reply(format('Available RPMs: %L', res)) + irc.reply(format('Found %n: %L; View more at: %u', (len(res), 'result'), res, url)) else: irc.error('No results found.') @@ -508,7 +515,7 @@ class PkgInfo(callbacks.Plugin): if res: # Output results in the form "pkg1: description; pkg2: description; ..." s = ["%s: %s" % (ircutils.bold(pkg), desc) for pkg, desc in res.items()] - s = format('Found %i results: %s; View more at %u', len(res), '; '.join(s), url) + s = format('Found %n: %s; View more at %u', (len(res), 'result'), '; '.join(s), url) irc.reply(s) else: irc.error('No results found.') diff --git a/PkgInfo/test.py b/PkgInfo/test.py index a024eb9..7bb080b 100644 --- a/PkgInfo/test.py +++ b/PkgInfo/test.py @@ -59,10 +59,10 @@ class PkgInfoTestCase(PluginTestCase): '.*?yaourt.*?') def testMintPkg(self): - self.assertNotError('linuxmint rebecca cinnamon') + self.assertRegexp('linuxmint rebecca cinnamon', 'session') def testPkgsearch(self): - self.assertNotError('pkgsearch debian python') + self.assertRegexp('pkgsearch debian python', 'python') def testFedora(self): self.assertRegexp('fedora 22 bash*', 'bash') @@ -79,7 +79,7 @@ class PkgInfoTestCase(PluginTestCase): self.assertNotRegexp('centos 7 extras "a"', 'Parent Directory') def testFreeBSD(self): - self.assertRegexp('freebsd lxterminal --exact', 'Found 1 result.*?LXDE') + self.assertRegexp('freebsd lxterminal --exact', 'Found 1 result:.*?LXDE') self.assertNotError('freebsd bash') self.assertError('freebsd asdfasjkfalewrghaekglae') # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: