commit: fbfaafce172be5fc7d9547ed200e6d22214792a8
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Jan 12 14:57:04 2016 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Jan 12 19:08:53 2016 +0000
URL: https://gitweb.gentoo.org/proj/rbot-gentoo.git/commit/?id=fbfaafce
!validpkg: Do queries using packages.gentoo.org
gentoo-data.rb | 30 ++++++++++++++++++++++++------
1 file changed, 24 insertions(+), 6 deletions(-)
diff --git a/gentoo-data.rb b/gentoo-data.rb
index 37b606f..b1d9827 100644
--- a/gentoo-data.rb
+++ b/gentoo-data.rb
@@ -33,6 +33,7 @@ VALID_PACKAGE_SRC = "/dev/shm/qsearch.txt"
GLSA_SRC = "#{ENV['PORTDIR']}/metadata/glsa/glsa-@[email protected]"
HERDS_SRC = 'https://api.gentoo.org/packages/herds.xml'
PROJECTS_SRC = 'https://api.gentoo.org/metastructure/projects.xml'
+PGO_RESOLVE_URI = 'https://packages.gentoo.org/packages/resolve.json?atom=%s'
class GentooPlugin < Plugin
Config.register Config::StringValue.new('gentoo.scriptdir',
@@ -54,7 +55,24 @@ class GentooPlugin < Plugin
py = '/usr/bin/python' unless py
return py
end
-
+
+ def pgo_resolve(atom)
+ uri = PGO_RESOLVE_URI % [URI.escape(atom, '\W+')]
+ res = @bot.httputil.get(uri)
+ return JSON.parse(res)
+ end
+
+ def pgo_resolve_one(m, atom)
+ pkgs = pgo_resolve(atom)['packages']
+ if pkgs.empty?
+ m.reply "No matching packages for '#{atom}'"
+ elsif pkgs.length > 1
+ m.reply "Ambiguous name '#{atom}'. Possible options: #{pkgs.map{ |x|
x['atom'] }.sort.join(' ')}"
+ else
+ return pkgs[0]
+ end
+ end
+
def meta(m, params)
cp = params[:pkg]
cp = validate_package(m, cp)
@@ -68,12 +86,12 @@ class GentooPlugin < Plugin
m.reply "Cannot find metadata for '#{cp}'"
end
end
-
+
def validpkg(m, params)
- icp = params[:pkg]
- cp = validate_package(m, icp)
- return if cp.nil?
- m.reply "#{icp} => #{cp} is valid"
+ atom = params[:pkg]
+ pkg = pgo_resolve_one(m, atom)
+ return if pkg.nil?
+ m.reply "#{atom} => #{pkg['atom']} is valid"
end
def meta_verbose(m, params)