commit:     3aeff5af03460eea82b31c493c6bfa635f80cf72
Author:     Alex Legler <alex <AT> a3li <DOT> li>
AuthorDate: Mon Feb 23 00:05:05 2015 +0000
Commit:     Alex Legler <a3li <AT> gentoo <DOT> org>
CommitDate: Mon Feb 23 00:05:05 2015 +0000
URL:        http://sources.gentoo.org/gitweb/?p=proj/ag.git;a=commit;h=3aeff5af

Implement --info

---
 ag             | 23 ++++++++++++++++++++++-
 lib/storage.rb | 18 ++++++++++++++++++
 2 files changed, 40 insertions(+), 1 deletion(-)

diff --git a/ag b/ag
index be04609..29ee0f2 100755
--- a/ag
+++ b/ag
@@ -42,6 +42,12 @@ op = OptionParser.new do |opts|
     $options.action = :do_delete
   end
 
+  opts.on('--info', 'Display message details. Needs --file, --msgid, or 
--hash') do
+    abort 'Can only select one action' if $options.action != nil
+
+    $options.action = :do_info
+  end
+
   opts.on('--reindex', 'Reindex message. Needs --file') do
     abort 'Can only select one action' if $options.action != nil
 
@@ -144,7 +150,22 @@ def do_reindex
 end
 
 def do_info
-  abort 'Come back later.'
+  id = Ag::Utils.resolve_id
+
+  begin
+    message = Ag::Storage.get($options.name, id)
+
+    raise 'No such message' unless message
+
+    require 'pp'
+    str = "Message #{id}"
+    $stderr.puts str
+    $stderr.puts '-' * str.length
+
+    pp message['_source']
+  rescue => e
+    $stderr.puts "Cannot display message: #{e}"
+  end
 end
 
 ###############################################################################

diff --git a/lib/storage.rb b/lib/storage.rb
index 37083fa..b4a518e 100644
--- a/lib/storage.rb
+++ b/lib/storage.rb
@@ -220,4 +220,22 @@ module Ag::Storage
 
     result['hits']['total']
   end
+  def get(list, id)
+    result = $es.search(
+      index: 'ml-' + list,
+      size: 1,
+      body: {
+        query: {
+          filtered: {
+            filter: {
+              term: { _id: id }
+            }
+          }
+        }
+      }
+    )
+
+    return nil if result['hits']['total'] == 0
+    result['hits']['hits'].first
+  end
 end
\ No newline at end of file

Reply via email to