Adapt install.pl to new coding style.

* Switch to Getopt::Long, change coding style;
  limit line length.

* Replace 'die' and 'warn' by calls to &Bleat().

* Completely changed options due to new
  GetOpt::Long processing.

* Adapt to changes in NewsStats.pm

* Redo documentation.

* Update TODO.

Signed-off-by: Thomas Hochstein <thh@inter.net>
This commit is contained in:
Thomas Hochstein 2012-05-27 14:32:58 +02:00
parent f05ec4aeaa
commit 1fa9479946
2 changed files with 37 additions and 36 deletions

View file

@ -42,7 +42,6 @@ Bug numbers refer to the Mantis issue tracker at <http://bugs.th-h.de/>.
names - would be nice. names - would be nice.
+ install/install.pl + install/install.pl
- Complete rewrite (like groupstats.pl, include changes in NewsStats.pm)
- Add / enhance / test error handling - Add / enhance / test error handling
- General tests and optimisations - General tests and optimisations

View file

@ -6,7 +6,7 @@
# #
# It is part of the NewsStats package. # It is part of the NewsStats package.
# #
# Copyright (c) 2010 Thomas Hochstein <thh@inter.net> # Copyright (c) 2010-2012 Thomas Hochstein <thh@inter.net>
# #
# It can be redistributed and/or modified under the same terms under # It can be redistributed and/or modified under the same terms under
# which Perl itself is published. # which Perl itself is published.
@ -24,11 +24,16 @@ use NewsStats qw(:DEFAULT);
use Cwd; use Cwd;
use DBI; use DBI;
use Getopt::Long qw(GetOptions);
Getopt::Long::config ('bundling');
################################# Main program ################################# ################################# Main program #################################
### read commandline options ### read commandline options
my %Options = &ReadOptions('u:'); my ($OptUpdate);
GetOptions ('u|update=s' => \$OptUpdate,
'h|help' => \&ShowPOD,
'V|version' => \&ShowVersion) or exit 1;
### change working directory to .. (as we're in .../install) ### change working directory to .. (as we're in .../install)
chdir dirname($0).'/..'; chdir dirname($0).'/..';
@ -36,7 +41,7 @@ my $Path = cwd();
### read configuration ### read configuration
print("Reading configuration.\n"); print("Reading configuration.\n");
my %Conf = %{ReadConfig('newsstats.conf')}; my %Conf = %{ReadConfig($HomePath.'/newsstats.conf')};
##### -------------------------------------------------------------------------- ##### --------------------------------------------------------------------------
##### Database table definitions ##### Database table definitions
@ -131,7 +136,7 @@ INSTALL
my $Upgrade = <<UPGRADE; my $Upgrade = <<UPGRADE;
---------- ----------
Your installation was upgraded from $Options{'u'} to $PackageVersion. Your installation was upgraded from $OptUpdate to $PackageVersion.
Don't forget to restart your INN feed so that it can pick up the new version: Don't forget to restart your INN feed so that it can pick up the new version:
@ -145,9 +150,10 @@ UPGRADE
### DB init, read list of tables ### DB init, read list of tables
print "Reading database information.\n"; print "Reading database information.\n";
my $DBHandle = InitDB(\%Conf,1); my $DBHandle = InitDB(\%Conf,1);
my %TablesInDB = %{$DBHandle->table_info('%', '%', '%', 'TABLE')->fetchall_hashref('TABLE_NAME')}; my %TablesInDB =
%{$DBHandle->table_info('%', '%', '%', 'TABLE')->fetchall_hashref('TABLE_NAME')};
if (!$Options{'u'}) { if (!$OptUpdate) {
##### installation mode ##### installation mode
print "----------\nStarting database table generation.\n"; print "----------\nStarting database table generation.\n";
# check for tables and create them, if they don't exist yet # check for tables and create them, if they don't exist yet
@ -162,8 +168,8 @@ if (!$Options{'u'}) {
##### upgrade mode ##### upgrade mode
print "----------\nStarting upgrade process.\n"; print "----------\nStarting upgrade process.\n";
$PackageVersion = '0.03'; $PackageVersion = '0.03';
if ($Options{'u'} < $PackageVersion) { if ($OptUpdate < $PackageVersion) {
if ($Options{'u'} < 0.02) { if ($OptUpdate < 0.02) {
# 0.01 -> 0.02 # 0.01 -> 0.02
# &DoMySQL('...;'); # &DoMySQL('...;');
# print "v0.02: Database upgrades ...\n"; # print "v0.02: Database upgrades ...\n";
@ -185,19 +191,23 @@ exit(0);
sub CreateTable { sub CreateTable {
my $Table = shift; my $Table = shift;
if (defined($TablesInDB{$Conf{$Table}})) { if (defined($TablesInDB{$Conf{$Table}})) {
printf("Database table %s.%s already exists, skipping ....\n",$Conf{'DBDatabase'},$Conf{$Table}); printf("Database table %s.%s already exists, skipping ....\n",
$Conf{'DBDatabase'},$Conf{$Table});
return; return;
}; };
my $DBQuery = $DBHandle->prepare($DBCreate{$Table}); my $DBQuery = $DBHandle->prepare($DBCreate{$Table});
$DBQuery->execute() or die sprintf("$MySelf: E: Can't create table %s in database %s: %s%\n",$Table,$Conf{'DBDatabase'},$DBI::errstr); $DBQuery->execute() or
printf("Database table %s.%s created succesfully.\n",$Conf{'DBDatabase'},$Conf{$Table}); &Bleat(2, sprintf("Can't create table %s in database %s: %s%\n",$Table,
$Conf{'DBDatabase'},$DBI::errstr));
printf("Database table %s.%s created succesfully.\n",
$Conf{'DBDatabase'},$Conf{$Table});
return; return;
}; };
sub DoMySQL { sub DoMySQL {
my $SQL = shift; my $SQL = shift;
my $DBQuery = $DBHandle->prepare($SQL); my $DBQuery = $DBHandle->prepare($SQL);
$DBQuery->execute() or warn sprintf("$MySelf: E: Database error: %s\n",$DBI::errstr); $DBQuery->execute() or &Bleat(1, sprintf("Database error: %s\n",$DBI::errstr));
return; return;
}; };
@ -221,23 +231,11 @@ install - installation script
=head1 SYNOPSIS =head1 SYNOPSIS
B<install> [B<-Vh>] B<install> [B<-Vh> [--update I<version>]
=head1 REQUIREMENTS =head1 REQUIREMENTS
See doc/README: Perl 5.8.x itself and the following modules from CPAN: See L<doc/README>.
=over 2
=item -
Config::Auto
=item -
DBI
=back
=head1 DESCRIPTION =head1 DESCRIPTION
@ -245,23 +243,27 @@ This script will create database tables as necessary and configured.
=head2 Configuration =head2 Configuration
F<install.pl> will read its configuration from F<newsstats.conf> via B<install> will read its configuration from F<newsstats.conf> via
Config::Auto. Config::Auto.
See doc/INSTALL for an overview of possible configuration options. See L<doc/INSTALL> for an overview of possible configuration options.
=head1 OPTIONS =head1 OPTIONS
=over 3 =over 3
=item B<-V> (version) =item B<-V>, B<--version>
Print out version and copyright information on B<yapfaq> and exit. Print out version and copyright information and exit.
=item B<-h> (help) =item B<-h>, B<--help>
Print this man page and exit. Print this man page and exit.
=item B<-u>, B<--update> I<version>
Don't do a fresh install, but update from I<version>.
=back =back
=head1 FILES =head1 FILES
@ -278,7 +280,7 @@ Library functions for the NewsStats package.
=item F<newsstats.conf> =item F<newsstats.conf>
Runtime configuration file for B<yapfaq>. Runtime configuration file.
=back =back
@ -293,11 +295,11 @@ bug tracker at L<http://bugs.th-h.de/>!
=item - =item -
doc/README L<doc/README>
=item - =item -
doc/INSTALL L<doc/INSTALL>
=back =back
@ -309,7 +311,7 @@ Thomas Hochstein <thh@inter.net>
=head1 COPYRIGHT AND LICENSE =head1 COPYRIGHT AND LICENSE
Copyright (c) 2010 Thomas Hochstein <thh@inter.net> Copyright (c) 2010-2012 Thomas Hochstein <thh@inter.net>
This program is free software; you may redistribute it and/or modify it This program is free software; you may redistribute it and/or modify it
under the same terms as Perl itself. under the same terms as Perl itself.