"use Getopt::Long" doesn't seem too slow on a hot page cache,
and it's probably used frequently enough to be in cache.
We'll also start reducing the amount of markup in the .pod and
favoring verbatim text in documentation for readability in
source form, since the bold text seems excessive.
-B<public-inbox-learn> <spam|ham|rm> E<lt>MESSAGE
+ public-inbox-learn <spam|ham|rm> </path/to/RFC2822_message
-B<public-inbox-mda> E<lt>MESSAGE
+ public-inbox-mda </path/to/RFC2822_message
#
# Used for training spam (via SpamAssassin) and removing messages from a
# public-inbox
#
# Used for training spam (via SpamAssassin) and removing messages from a
# public-inbox
-my $usage = "$0 <spam|ham|rm> </path/to/message";
+my $help = <<EOF;
+usage: public-inbox-learn [OPTIONS] [spam|ham|rm] </path/to/RFC2822_message
+
+required action argument:
+
+ spam unindex the message and train as spam
+ rm remove the message without training as spam
+ ham index the message (based on To:/Cc: headers) and train as ham
+
+options:
+
+ --all scan all inboxes on `rm'
+
+See public-inbox-learn(1) man page for full documentation.
+EOF
use PublicInbox::Config;
use PublicInbox::InboxWritable;
use PublicInbox::Eml;
use PublicInbox::Config;
use PublicInbox::InboxWritable;
use PublicInbox::Eml;
use PublicInbox::Spamcheck::Spamc;
use Getopt::Long qw(:config gnu_getopt no_ignore_case auto_abbrev);
my %opt = (all => 0);
use PublicInbox::Spamcheck::Spamc;
use Getopt::Long qw(:config gnu_getopt no_ignore_case auto_abbrev);
my %opt = (all => 0);
-GetOptions(\%opt, 'all') or die "bad command-line args\n";
+GetOptions(\%opt, qw(all help|h)) or die $help;
-my $train = shift or die "usage: $usage\n";
+my $train = shift or die $help;
if ($train !~ /\A(?:ham|spam|rm)\z/) {
if ($train !~ /\A(?:ham|spam|rm)\z/) {
- die "`$train' not recognized.\nusage: $usage\n";
+ die "`$train' not recognized.\n$help";
}
die "--all only works with `rm'\n" if $opt{all} && $train ne 'rm';
}
die "--all only works with `rm'\n" if $opt{all} && $train ne 'rm';
# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
#
# Mail delivery agent for public-inbox, run from your MTA upon mail delivery
# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
#
# Mail delivery agent for public-inbox, run from your MTA upon mail delivery
+my $help = <<EOF;
+usage: public-inbox-mda [OPTIONS] </path/to/RFC2822_message
+
+options:
+
+ --no-precheck skip internal checks for spam messages
+
+See public-inbox-mda(1) man page for full documentation.
+EOF
-use warnings;
-my $usage = 'public-inbox-mda [OPTIONS] < rfc2822_message';
-my $precheck = grep(/\A--no-precheck\z/, @ARGV) ? 0 : 1;
-my ($ems, $emm);
+use Getopt::Long qw(:config gnu_getopt no_ignore_case auto_abbrev);
+my ($ems, $emm, $show_help);
+my $precheck = 1;
+GetOptions('precheck!' => \$precheck, 'help|h' => \$show_help) or
+ do { print STDERR $help; exit 1 };
my $do_exit = sub {
my ($code) = shift;
my $do_exit = sub {
my ($code) = shift;