about summary refs log tree commit homepage
path: root/script/public-inbox-learn
diff options
context:
space:
mode:
Diffstat (limited to 'script/public-inbox-learn')
-rwxr-xr-xscript/public-inbox-learn29
1 files changed, 16 insertions, 13 deletions
diff --git a/script/public-inbox-learn b/script/public-inbox-learn
index 396ab489..38c83243 100755
--- a/script/public-inbox-learn
+++ b/script/public-inbox-learn
@@ -10,32 +10,35 @@ use warnings;
 use PublicInbox::Config;
 use PublicInbox::Git;
 use PublicInbox::Import;
-use Email::MIME;
+use PublicInbox::MIME;
 use Email::MIME::ContentType;
 $Email::MIME::ContentType::STRICT_PARAMS = 0; # user input is imperfect
 use PublicInbox::Address;
 use PublicInbox::Spamcheck::Spamc;
 my $train = shift or die "usage: $usage\n";
-if ($train !~ /\A(?:ham|spam)\z/) {
+if ($train !~ /\A(?:ham|spam|rm)\z/) {
         die "`$train' not recognized.\nusage: $usage\n";
 }
 
 my $spamc = PublicInbox::Spamcheck::Spamc->new;
 my $pi_config = PublicInbox::Config->new;
 my $err;
-my $mime = Email::MIME->new(eval {
+my $mime = PublicInbox::MIME->new(eval {
         local $/;
         my $data = scalar <STDIN>;
         $data =~ s/\A[\r\n]*From [^\r\n]*\r?\n//s;
-        eval {
-                if ($train eq 'ham') {
-                        $spamc->hamlearn(\$data);
-                } else {
-                        $spamc->spamlearn(\$data);
-                }
-                die "spamc failed with: $?\n" if $?;
-        };
-        $err = $@;
+
+        if ($train ne 'rm') {
+                eval {
+                        if ($train eq 'ham') {
+                                $spamc->hamlearn(\$data);
+                        } elsif ($train eq 'spam') {
+                                $spamc->spamlearn(\$data);
+                        }
+                        die "spamc failed with: $?\n" if $?;
+                };
+                $err = $@;
+        }
         $data
 });
 
@@ -61,7 +64,7 @@ foreach my $recipient (keys %dests) {
         my $email = $ENV{GIT_COMMITTER_EMAIL} || $recipient;
         my $im = PublicInbox::Import->new($git, $name, $email);
 
-        if ($train eq "spam") {
+        if ($train eq "spam" || $train eq "rm") {
                 # This needs to be idempotent, as my inotify trainer
                 # may train for each cross-posted message, and this
                 # script already learns for every list in