X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=bin%2Fsup-sync-back;h=05b9e8c0f5a27dd5781e537e99420bc340a76c76;hb=ee375737de02cda87bdcba3a585a8d38d9223e2d;hp=4f1387e7f1e62d9ec13c03833d0670c9e87e4531;hpb=01316aff4da1e7ff74dc3fac4578251b80807528;p=sup diff --git a/bin/sup-sync-back b/bin/sup-sync-back old mode 100644 new mode 100755 index 4f1387e..05b9e8c --- a/bin/sup-sync-back +++ b/bin/sup-sync-back @@ -4,6 +4,7 @@ require 'rubygems' require 'uri' require 'tempfile' require 'trollop' +require 'enumerator' require "sup" ## save a message 'm' to an open file pointer 'fp' @@ -14,6 +15,10 @@ def die msg $stderr.puts "Error: #{msg}" exit(-1) end +def has_any_from_source_with_label? index, source, label + query = { :source_id => source.id, :label => label, :limit => 1 } + not Enumerable::Enumerator.new(index, :each_docid, query).map.empty? +end opts = Trollop::options do version "sup-sync-back (sup #{Redwood::VERSION})" @@ -96,7 +101,7 @@ EOS sources.each do |source| $stderr.puts "Scanning #{source}..." - unless ((opts[:drop_deleted] || opts[:move_deleted]) && index.has_any_from_source_with_label?(source, :deleted)) || ((opts[:drop_spam] || opts[:move_spam]) && index.has_any_from_source_with_label?(source, :spam)) + unless ((opts[:drop_deleted] || opts[:move_deleted]) && has_any_from_source_with_label?(index, source, :deleted)) || ((opts[:drop_spam] || opts[:move_spam]) && has_any_from_source_with_label?(index, source, :spam)) $stderr.puts "Nothing to do from this source; skipping" next end @@ -105,11 +110,11 @@ EOS num_dropped = num_moved = num_scanned = 0 out_fp = Tempfile.new "sup-sync-back-#{source.id}" - Redwood::PollManager.add_messages_from source do |m, offset, entry| + Redwood::PollManager.add_messages_from source do |m_old, m, offset| num_scanned += 1 - if entry - labels = entry[:label].symbolistize.to_boolean_h + if m_old + labels = m_old.labels if labels.member? :deleted if opts[:drop_deleted]