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.