From 1fa947994652e526566d286e1527e2b58860cc83 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sun, 27 May 2012 14:32:58 +0200 Subject: [PATCH 1/1] 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 --- doc/TODO | 1 - install/install.pl | 72 ++++++++++++++++++++++++---------------------- 2 files changed, 37 insertions(+), 36 deletions(-) diff --git a/doc/TODO b/doc/TODO index 6af50ca..7d6e794 100644 --- a/doc/TODO +++ b/doc/TODO @@ -42,7 +42,6 @@ Bug numbers refer to the Mantis issue tracker at . 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 diff --git a/install/install.pl b/install/install.pl index b998280..61e8ef1 100755 --- a/install/install.pl +++ b/install/install.pl @@ -6,7 +6,7 @@ # # It is part of the NewsStats package. # -# Copyright (c) 2010 Thomas Hochstein +# Copyright (c) 2010-2012 Thomas Hochstein # # 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 = <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 [B<-Vh>] +B [B<-Vh> [--update I] =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. =head1 DESCRIPTION @@ -245,23 +243,27 @@ This script will create database tables as necessary and configured. =head2 Configuration -F will read its configuration from F via +B will read its configuration from F via Config::Auto. -See doc/INSTALL for an overview of possible configuration options. +See L 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 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 + +Don't do a fresh install, but update from I. + =back =head1 FILES @@ -278,7 +280,7 @@ Library functions for the NewsStats package. =item F -Runtime configuration file for B. +Runtime configuration file. =back @@ -293,11 +295,11 @@ bug tracker at L! =item - -doc/README +L =item - -doc/INSTALL +L =back @@ -309,7 +311,7 @@ Thomas Hochstein =head1 COPYRIGHT AND LICENSE -Copyright (c) 2010 Thomas Hochstein +Copyright (c) 2010-2012 Thomas Hochstein This program is free software; you may redistribute it and/or modify it under the same terms as Perl itself. -- 2.20.1