bin/sup-recover-sources in sup-0.8.1 vs bin/sup-recover-sources in sup-0.9
- old
+ new
@@ -46,17 +46,18 @@
exit
end
end.parse(ARGV)
require "sup"
+Redwood::start
puts "loading index..."
-index = Redwood::Index.new
+index = Redwood::Index.init
index.load
puts "loaded index of #{index.size} messages"
ARGV.each do |fn|
- next if index.source_for fn
+ next if Redwood::SourceManager.source_for fn
## TODO: merge this code with the same snippet in import
source =
case fn
when %r!^imaps?://!
@@ -67,28 +68,26 @@
Redwood::IMAP.new(fn, username, password, nil, !$opts[:unusual], $opts[:archive])
else
Redwood::MBox::Loader.new(fn, nil, !$opts[:unusual], $opts[:archive])
end
- source_ids = {}
+ source_ids = Hash.new 0
count = 0
source.each do |offset, labels|
m = Redwood::Message.new :source => source, :source_info => offset
- docid, entry = index.load_entry_for_id m.id
- next unless entry
- #puts "# #{source} #{offset} #{entry[:source_id]}"
-
- source_ids[entry[:source_id]] = (source_ids[entry[:source_id]] || 0) + 1
+ m.load_from_source!
+ source_id = Redwood::SourceManager.source_for_id m.id
+ next unless source_id
+ source_ids[source_id] += 1
count += 1
break if count == $opts[:scan_num]
end
if source_ids.size == 1
id = source_ids.keys.first.to_i
puts "assigned #{source} to #{source_ids.keys.first}"
source.id = id
- source.seek_to! source.total
- index.add_source source
+ Redwood::SourceManager.add_source source
else
puts ">> unable to determine #{source}: #{source_ids.inspect}"
end
end