From f2ddfd8a923d3276c00daf243a0abf1cbdd8b35b Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Mon, 1 Nov 2010 13:22:15 +0100 Subject: [PATCH] groupstats.pl: Add '-a' option. Add '-a' switch to make groupstats.pl consider its whole database without any time limits ignoring -m and -p. Change documentation accodingly. First implementation. Handling needs improvement! Fixes #14. Signed-off-by: Thomas Hochstein --- groupstats.pl | 38 ++++++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/groupstats.pl b/groupstats.pl index dbe7730..e21aeb7 100755 --- a/groupstats.pl +++ b/groupstats.pl @@ -26,7 +26,7 @@ use DBI; ################################# Main program ################################# ### read commandline options -my %Options = &ReadOptions('m:p:n:o:t:l:b:iscqdg:'); +my %Options = &ReadOptions('m:p:an:o:t:l:b:iscqdg:'); ### read configuration my %Conf = %{ReadConfig('newsstats.conf')}; @@ -71,10 +71,25 @@ if ($Options{'l'}) { warn ("$MySelf: W: Output type forced to '-o pretty' due to usage of '-l'.\n"); }; +### init database +my $DBHandle = InitDB(\%Conf,1); + ### get time period -my ($StartMonth,$EndMonth) = &GetTimePeriod($Options{'m'},$Options{'p'}); +my ($StartMonth,$EndMonth); +# if '-a' is set, set start/end month from database +# FIXME - it doesn't make that much sense to get first/last month from database to query it +# with a time period that equals no time period ... +if ($Options{'a'}) { + undef($Options{'m'}); + undef($Options{'p'}); + my $DBQuery = $DBHandle->prepare(sprintf("SELECT MIN(month),MAX(month) FROM %s.%s",$Conf{'DBDatabase'},$Conf{'DBTableGrps'})); + $DBQuery->execute or die sprintf("$MySelf: E: Can't get MIN/MAX month from %s.%s: %s\n",$Conf{'DBDatabase'},$Conf{'DBTableGrps'},$DBI::errstr); + ($StartMonth,$EndMonth) = $DBQuery->fetchrow_array; +} else { + ($StartMonth,$EndMonth) = &GetTimePeriod($Options{'m'},$Options{'p'}); +}; # if time period is more than one month: set output type to '-o pretty' or '-o dumpgroup' -if ($Options{'o'} eq 'dump' and $Options{'p'}) { +if ($Options{'o'} eq 'dump' and ($Options{'p'} or $Options{'a'})) { if (defined($Options{'n'}) and $Options{'n'} !~ /:|\*/) { warn ("$MySelf: W: You cannot combine time periods (-p) with '-o dump', changing output type to '-o dumpgroup'.\n"); $Options{'o'} = 'dumpgroup'; @@ -84,9 +99,6 @@ if ($Options{'o'} eq 'dump' and $Options{'p'}) { } }; -### init database -my $DBHandle = InitDB(\%Conf,1); - ### create report # get list of newsgroups (-n) my ($QueryGroupList,$QueryThreshold,@GroupList,@Params); @@ -224,7 +236,7 @@ groupstats - create reports on newsgroup usage =head1 SYNOPSIS -B [B<-Vhiscqd>] [B<-m> I] [B<-p> I] [B<-n> I] [B<-t> I] [B<-l> I] [B<-b> I] [B<-o> I] [B<-g> I] +B [B<-Vhiscqd>] [B<-m> I | B<-p> I | B<-a>] [B<-n> I] [B<-t> I] [B<-l> I] [B<-b> I] [B<-o> I] [B<-g> I] =head1 REQUIREMENTS @@ -282,7 +294,7 @@ below). Captions can be added by setting the B<-c> switch. =head2 Configuration -F will read its configuration from F +B will read its configuration from F which should be present in the same directory via Config::Auto. See doc/INSTALL for an overview of possible configuration options. @@ -304,12 +316,18 @@ Print this man page and exit. =item B<-m> I (month) Set processing period to a month in YYYY-MM format. Ignored if B<-p> -is set. +or B<-a> is set. =item B<-p> I (period) Set processing period to a time period between two month, each in -YYYY-MM format, separated by a colon. Overrides B<-m>. +YYYY-MM format, separated by a colon. Overrides B<-m>. Ignored if +B<-a> is set. + +=item B<-a> (all) + +Set no processing period (process whole database). Overrides B<-m> +and B<-p>. =item B<-n> I (newsgroups) -- 2.20.1