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.
+ install/install.pl
- Complete rewrite (like groupstats.pl, include changes in NewsStats.pm)
- Add / enhance / test error handling
- General tests and optimisations

View file

@ -6,7 +6,7 @@
#
# 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
# which Perl itself is published.
@ -24,11 +24,16 @@ use NewsStats qw(:DEFAULT);
use Cwd;
use DBI;
use Getopt::Long qw(GetOptions);
Getopt::Long::config ('bundling');
################################# Main program #################################
### 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)
chdir dirname($0).'/..';
@ -36,7 +41,7 @@ my $Path = cwd();
### read configuration
print("Reading configuration.\n");
my %Conf = %{ReadConfig('newsstats.conf')};
my %Conf = %{ReadConfig($HomePath.'/newsstats.conf')};
##### --------------------------------------------------------------------------
##### Database table definitions
@ -131,7 +136,7 @@ INSTALL
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:
@ -145,9 +150,10 @@ UPGRADE
### DB init, read list of tables
print "Reading database information.\n";
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
print "----------\nStarting database table generation.\n";
# check for tables and create them, if they don't exist yet
@ -162,8 +168,8 @@ if (!$Options{'u'}) {
##### upgrade mode
print "----------\nStarting upgrade process.\n";
$PackageVersion = '0.03';
if ($Options{'u'} < $PackageVersion) {
if ($Options{'u'} < 0.02) {
if ($OptUpdate < $PackageVersion) {
if ($OptUpdate < 0.02) {
# 0.01 -> 0.02
# &DoMySQL('...;');
# print "v0.02: Database upgrades ...\n";
@ -185,19 +191,23 @@ exit(0);
sub CreateTable {
my $Table = shift;
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;
};
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);
printf("Database table %s.%s created succesfully.\n",$Conf{'DBDatabase'},$Conf{$Table});
$DBQuery->execute() or
&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;
};
sub DoMySQL {
my $SQL = shift;
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;
};
@ -221,23 +231,11 @@ install - installation script
=head1 SYNOPSIS
B<install> [B<-Vh>]
B<install> [B<-Vh> [--update I<version>]
=head1 REQUIREMENTS
See doc/README: Perl 5.8.x itself and the following modules from CPAN:
=over 2
=item -
Config::Auto
=item -
DBI
=back
See L<doc/README>.
=head1 DESCRIPTION
@ -245,23 +243,27 @@ This script will create database tables as necessary and configured.
=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.
See doc/INSTALL for an overview of possible configuration options.
See L<doc/INSTALL> for an overview of possible configuration options.
=head1 OPTIONS
=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.
=item B<-u>, B<--update> I<version>
Don't do a fresh install, but update from I<version>.
=back
=head1 FILES
@ -278,7 +280,7 @@ Library functions for the NewsStats package.
=item F<newsstats.conf>
Runtime configuration file for B<yapfaq>.
Runtime configuration file.
=back
@ -293,11 +295,11 @@ bug tracker at L<http://bugs.th-h.de/>!
=item -
doc/README
L<doc/README>
=item -
doc/INSTALL
L<doc/INSTALL>
=back
@ -309,7 +311,7 @@ Thomas Hochstein <thh@inter.net>
=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
under the same terms as Perl itself.