]> git.cworth.org Git - sup/commitdiff
/bin/env => /usr/bin/env (thanks to Rakan El-Khalil)
authorwmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Fri, 1 Dec 2006 17:13:58 +0000 (17:13 +0000)
committerwmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Fri, 1 Dec 2006 17:13:58 +0000 (17:13 +0000)
git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@53 5c8cc53c-5e98-4d25-b20a-d8db53a31250

bin/sup
bin/sup-import

diff --git a/bin/sup b/bin/sup
index 65dbaa30e0fba7553eeae680a67565b434d65127..9c716922a20a744f385de65036e86eb985b99920 100644 (file)
--- a/bin/sup
+++ b/bin/sup
@@ -1,4 +1,4 @@
-#!/bin/env ruby
+#!/usr/bin/env ruby
 
 require 'rubygems'
 require 'ncurses'
index 05277000f69214651c4a601bf2bb2f29e4f1cd56..c1baf0485697d31cfca62ad6956790238c5eb22e 100644 (file)
@@ -1,4 +1,4 @@
-#!/bin/env ruby
+#!/usr/bin/env ruby
 
 require "sup"
 
@@ -67,6 +67,12 @@ the_usual = ARGV.delete "--the-usual"
 rebuild = ARGV.delete "--rebuild"
 force_rebuild = ARGV.delete "--force-rebuild"
 optimize = ARGV.delete "--optimize"
+start_at = # ok really need to use optparse or something now
+  if(i = ARGV.index("--start-at"))
+    raise "start-at requires a numeric argument: #{ARGV[i + 1].inspect}" unless ARGV.length > (i + 1) && ARGV[i + 1] =~ /\d/
+    ARGV.delete_at i
+    ARGV.delete_at(i).to_i # whoa!
+  end
 
 if(o = ARGV.find { |x| x =~ /^--/ })
   $stderr.puts "error: unknown option #{o}"
@@ -88,7 +94,13 @@ sources = ARGV.map do |fn|
   source
 end
 sources = (sources + index.usual_sources).uniq if the_usual
-sources.each { |s| s.reset! } if rebuild || force_rebuild
+if rebuild || force_rebuild
+  if start_at
+    sources.each { |s| s.seek_to! start_at }
+  else
+    sources.each { |s| s.reset! }
+  end
+end
 
 found = {}
 start = Time.now
@@ -140,18 +152,26 @@ end
 
 if rebuild || force_rebuild
   puts "deleting missing messages from the index..."
-  numdel = 0
+  if start_at
+    $stderr.puts "deleting currently don't work with --start-at. sorry!"
+    break
+  end
+  numdel = num = 0
   sources.each do |source|
     raise "no source id for #{source}" unless source.id
-    index.index.search_each("source_id:#{source.id}", :limit => :all) do |docid, score|
+    q = "+source_id:#{source.id}"
+    q += " +source_info: >= #{start_at}" if start_at
+    p q
+    num += index.index.search_each(q, :limit => :all) do |docid, score|
       mid = index.index[docid][:message_id]
       next if found[mid]
       puts "deleting #{mid}"
       index.index.delete docid
       numdel += 1
     end
+    p num
   end
-  puts "deleted #{numdel} messages"
+  puts "deleted #{numdel} / #{num} messages"
 end
 
 if optimize