From 6c252b62bef579207ca417939076a9896d8a791b Mon Sep 17 00:00:00 2001 From: Eric Wong <e@80x24.org> Date: Tue, 1 Sep 2020 01:15:03 +0000 Subject: [PATCH] mda+learn: add --help / -h support "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. --- Documentation/public-inbox-learn.pod | 2 +- Documentation/public-inbox-mda.pod | 2 +- script/public-inbox-learn | 23 ++++++++++++++++++----- script/public-inbox-mda | 18 ++++++++++++++---- 4 files changed, 34 insertions(+), 11 deletions(-) diff --git a/Documentation/public-inbox-learn.pod b/Documentation/public-inbox-learn.pod index cd9bf278..94c96fd5 100644 --- a/Documentation/public-inbox-learn.pod +++ b/Documentation/public-inbox-learn.pod @@ -4,7 +4,7 @@ public-inbox-learn - spam trainer and remover for public-inbox =head1 SYNOPSIS -B<public-inbox-learn> <spam|ham|rm> E<lt>MESSAGE + public-inbox-learn <spam|ham|rm> </path/to/RFC2822_message =head1 DESCRIPTION diff --git a/Documentation/public-inbox-mda.pod b/Documentation/public-inbox-mda.pod index 99c9053d..a5e353e5 100644 --- a/Documentation/public-inbox-mda.pod +++ b/Documentation/public-inbox-mda.pod @@ -4,7 +4,7 @@ public-inbox-mda - mail delivery agent for public-inbox =head1 SYNOPSIS -B<public-inbox-mda> E<lt>MESSAGE + public-inbox-mda </path/to/RFC2822_message =head1 DESCRIPTION diff --git a/script/public-inbox-learn b/script/public-inbox-learn index 5cd08d49..fb2d86ec 100755 --- a/script/public-inbox-learn +++ b/script/public-inbox-learn @@ -4,9 +4,22 @@ # # 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 strict; -use warnings; use PublicInbox::Config; use PublicInbox::InboxWritable; use PublicInbox::Eml; @@ -14,11 +27,11 @@ use PublicInbox::Address; 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/) { - 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'; diff --git a/script/public-inbox-mda b/script/public-inbox-mda index 02ca3431..3ed5abb6 100755 --- a/script/public-inbox-mda +++ b/script/public-inbox-mda @@ -3,11 +3,21 @@ # 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 strict; -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; -- 2.51.0