From f887806c5989fc3e5c86107d6ff945a6fc63b05c Mon Sep 17 00:00:00 2001 From: Brian Cully Date: Tue, 20 Oct 2015 10:51:11 -0400 Subject: Various changes. * Use `env' to find perl binary. * Change flag --dumpconfig to command. * Add `dump' command to output table in tab-delimited format. * Update documentation. --- bin/spamcat | 65 +++++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 42 insertions(+), 23 deletions(-) (limited to 'bin/spamcat') diff --git a/bin/spamcat b/bin/spamcat index 2986382..fd37f76 100755 --- a/bin/spamcat +++ b/bin/spamcat @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl =head1 NAME @@ -6,27 +6,33 @@ spamcat - Filter spam by number of messages sent. =head1 SYNOPSIS -spamcat [options] +spamcat [--help] [-c config-file] [dumpconfig|dump] + +=head1 DESCRIPTION + +B allows you to have disposable email addresses. + +=head1 OPTIONS =over 8 -=item B<--help> +=item --help Print a brief help message and exit. -=item B<-c> C +=item -c C Load configuration from C -=item B<--dumpconfig> +=item dumpconfig Dump the current configuration. -=back +=item dump -=head1 DESCRIPTION +Dumps the spamcat database in tab-delimited format. -B allows you to have disposable email addresses. +=back =head1 AUTHOR @@ -47,26 +53,39 @@ use warnings; my $DEFAULT_CONFIGFILE = '/usr/local/etc/spamcat.conf'; -my ($help, $configfile, $dumpconfig); +my ($help, $configfile); GetOptions('help|h' => \$help, - 'c=s' => \$configfile, - 'dumpconfig' => \$dumpconfig) || pod2usage(2); + 'c=s' => \$configfile) || pod2usage(2); pod2usage(1) if $help; $configfile = $configfile || $DEFAULT_CONFIGFILE; my %conf = SpamCat::Conf::read($configfile); -if ($dumpconfig) { - foreach my $k (keys %conf) { - my $v = $conf{$k}; - if ($k eq 'domains') { - $v = join ', ', @{$v}; +my $sch = SpamCat->new(%conf) || + die "Couldn't start spamcat: $!\n"; +if ($#ARGV >= 0) { + my $cmd = shift @ARGV; + if ($cmd eq 'dump') { + my @keys = qw(sender count created modified); + print join("\t", @keys) . "\n"; + foreach my $row (@{$sch->get_table}) { + my @vals; + foreach my $k (@keys) { + push @vals, $row->{$k}; + } + print join("\t", @vals) . "\n"; + } + } elsif ($cmd eq 'dumpconfig') { + foreach my $k (keys %conf) { + my $v = $conf{$k}; + if ($k eq 'domains') { + $v = join ', ', @{$v}; + } + print uc($k) . " = " . $v . "\n"; + } + } else { + pod2usage(1); } - print uc($k) . " = " . $v . "\n"; - } - exit; +} else { + $sch->deliver; } - -my $sch = SpamCat->new(%conf) || - die "Couldn't start spamcat: $!\n"; -$sch->deliver; -- cgit v1.2.3