commit:     b25e26fd9f0dc496f5a10eeaf7f921b84e2cd873
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Jan 12 15:24:39 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=b25e26fd

!meta: Do queries using packages.gentoo.org

 gentoo-data.rb | 54 +++++++++++++++++++++++++++++++-----------------------
 1 file changed, 31 insertions(+), 23 deletions(-)

diff --git a/gentoo-data.rb b/gentoo-data.rb
index b1d9827..1a165c1 100644
--- a/gentoo-data.rb
+++ b/gentoo-data.rb
@@ -34,6 +34,7 @@ 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'
+PGO_DATA_URI = 'https://packages.gentoo.org/packages/%s.json'
 
 class GentooPlugin < Plugin
   Config.register Config::StringValue.new('gentoo.scriptdir',
@@ -73,18 +74,31 @@ class GentooPlugin < Plugin
     end
   end
 
+  def pgo_get(m, atom)
+    pkg = pgo_resolve_one(m, atom)
+    return if pkg.nil?
+
+    uri = PGO_DATA_URI % [pkg['atom']]
+    res = @bot.httputil.get(uri)
+    return JSON.parse(res)
+  end
+
+  def meta_print(m, pkg)
+    # TODO: handle description?
+    maints = pkg['maintainers'].map{|x| 
x['email'].chomp('@gentoo.org')}.join(', ')
+    maints = '(none)' if maints.empty?
+    herds = pkg['herds'].join(', ')
+    herds = '(none)' if herds.empty?
+
+    m.reply "#{pkg['atom']}; herds: #{herds}; maintainers: #{maints}"
+  end
+
   def meta(m, params)
-    cp = params[:pkg]
-    cp = validate_package(m, cp)
-    return if cp.nil?
-    f = IO.popen("#{python} #{scriptdir}/metadata.py '#{cp}'")
-    r = f.readlines
-    f.close
-    if r.length > 0
-      m.reply "#{r}"
-    else
-      m.reply "Cannot find metadata for '#{cp}'"
-    end
+    atom = params[:pkg]
+    pkg = pgo_get(m, atom)
+    return if pkg.nil?
+
+    meta_print(m, pkg)
   end
 
   def validpkg(m, params)
@@ -95,18 +109,12 @@ class GentooPlugin < Plugin
   end
 
   def meta_verbose(m, params)
-    cp = params[:pkg]
-    cp = validate_package(m, cp)
-    return if cp.nil?
-    f = IO.popen("#{python} #{scriptdir}/metadata.py '#{cp}'")
-    output = f.readlines
-    f.close
-    m.reply "#{output}"
-    herds = []
-    output[0].gsub!(/(Maintainer:|Description:).*/,'')
-    mre = /Herd: +([-[:alnum:], ]+) .*/.match(output[0])
-    herds = mre[1].strip.split(/[, ]+/).map { |s| s.strip }.flatten if mre and 
mre[1]
-    herds.each { |h|
+    atom = params[:pkg]
+    pkg = pgo_get(m, atom)
+    return if pkg.nil?
+
+    meta_print(m, pkg)
+    pkg['herds'].each { |h|
       debug("meta -v calling herd for #{h}")
       p = params.clone
       p[:herd] = h

Reply via email to