commit:     3fe02ff3df0f83234e0d4b05ce1d268e2cadc235
Author:     Alex Legler <alex <AT> a3li <DOT> li>
AuthorDate: Sat Feb 21 22:37:18 2015 +0000
Commit:     Alex Legler <a3li <AT> gentoo <DOT> org>
CommitDate: Sat Feb 21 22:37:18 2015 +0000
URL:        http://sources.gentoo.org/gitweb/?p=proj/ag.git;a=commit;h=3fe02ff3

Show more filenames when rendering fails

---
 ag             |  4 ++--
 lib/storage.rb | 14 +++++++-------
 lib/utils.rb   | 10 +++++++---
 3 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/ag b/ag
index 4b857e3..be04609 100755
--- a/ag
+++ b/ag
@@ -109,7 +109,7 @@ def do_full
     mail = maildir_message.data
 
     begin
-      Ag::Storage.store($options.name, mail)
+      Ag::Storage.store($options.name, mail, maildir_message.filename)
     rescue => e
       $stderr.puts "Cannot save message #{mail.message_id}: #{e.message}"
       next
@@ -124,7 +124,7 @@ def do_incremental
     mail = maildir_message.data
 
     begin
-      Ag::Storage.store($options.name, mail)
+      Ag::Storage.store($options.name, mail, maildir_message.filename)
       maildir_message.process unless $options.readonly
     rescue => e
       $stderr.puts "Cannot save message #{mail.message_id} (file 
#{maildir_message.filename}): #{e.message}"

diff --git a/lib/storage.rb b/lib/storage.rb
index da9e8ad..fdf70b6 100644
--- a/lib/storage.rb
+++ b/lib/storage.rb
@@ -73,17 +73,17 @@ module Ag::Storage
     sleep 1
   end
 
-  def get_content(message)
-    content = "Cannot parse MIME/contents."
+  def get_content(message, filename)
+    content = 'Cannot parse MIME/contents.'
     begin
       raw_content = Ag::Rendering::HTMLizer.HTMLize(message)
-      content = Ag::Utils.fix_encoding(raw_content || '').strip
+      content = Ag::Utils.fix_encoding(raw_content || '', true).strip
 
       if content == ''
-        $stderr.puts "#{message.message_id}: Content empty"
+        $stderr.puts "#{message.message_id}: Content empty?"
       end
-    rescue
-      $stderr.puts "#{message.message_id}: Invalid encoding"
+    rescue => e
+      $stderr.puts "Cannot render message #{message.message_id} (file: 
#{filename}): #{e}"
     end
 
     content
@@ -111,7 +111,7 @@ module Ag::Storage
     result['hits']['hits'].first['_id']
   end
 
-  def store(list, message)
+  def store(list, message, filename)
     content = get_content(message)
 
     identifier = message['X-Archives-Hash'].value

diff --git a/lib/utils.rb b/lib/utils.rb
index 109a6a5..3714614 100644
--- a/lib/utils.rb
+++ b/lib/utils.rb
@@ -3,12 +3,16 @@ require 'charlock_holmes'
 module Ag
   module Utils
     module_function
-    def fix_encoding(str)
+    def fix_encoding(str, fail_hard = false)
       detection = CharlockHolmes::EncodingDetector.detect(str)
       CharlockHolmes::Converter.convert(str, detection[:encoding], 'UTF-8')
     rescue => e
-      $stderr.puts e.message if $options.debug
-      'Encoding could not be reliably detected. Message contents not 
available.'
+      if fail_hard
+        raise e
+      else
+        $stderr.puts e.message if $options.debug
+        'Encoding could not be reliably detected. Contents not available.'
+      end
     end
   end
 end
\ No newline at end of file

Reply via email to