summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
f05ec4a)
* 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>
names - would be nice.
+ install/install.pl
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
- Add / enhance / test error handling
- General tests and optimisations
#
# 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
# which Perl itself is published.
#
# It can be redistributed and/or modified under the same terms under
# which Perl itself is published.
+use Getopt::Long qw(GetOptions);
+Getopt::Long::config ('bundling');
################################# Main program #################################
### read commandline options
################################# 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).'/..';
### change working directory to .. (as we're in .../install)
chdir dirname($0).'/..';
### read configuration
print("Reading configuration.\n");
### read configuration
print("Reading configuration.\n");
-my %Conf = %{ReadConfig('newsstats.conf')};
+my %Conf = %{ReadConfig($HomePath.'/newsstats.conf')};
##### --------------------------------------------------------------------------
##### Database table definitions
##### --------------------------------------------------------------------------
##### Database table definitions
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:
### DB init, read list of tables
print "Reading database information.\n";
my $DBHandle = InitDB(\%Conf,1);
### 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')};
##### installation mode
print "----------\nStarting database table generation.\n";
# check for tables and create them, if they don't exist yet
##### installation mode
print "----------\nStarting database table generation.\n";
# check for tables and create them, if they don't exist yet
##### upgrade mode
print "----------\nStarting upgrade process.\n";
$PackageVersion = '0.03';
##### 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";
# 0.01 -> 0.02
# &DoMySQL('...;');
# print "v0.02: Database upgrades ...\n";
sub CreateTable {
my $Table = shift;
if (defined($TablesInDB{$Conf{$Table}})) {
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});
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);
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));
+B<install> [B<-Vh> [--update I<version>]
-See doc/README: Perl 5.8.x itself and the following modules from CPAN:
-
-=over 2
-
-=item -
-
-Config::Auto
-
-=item -
-
-DBI
-
-=back
-F<install.pl> will read its configuration from F<newsstats.conf> via
+B<install> will read its configuration from F<newsstats.conf> via
-See doc/INSTALL for an overview of possible configuration options.
+See L<doc/INSTALL> for an overview of possible configuration options.
+=item B<-V>, B<--version>
-Print out version and copyright information on B<yapfaq> and exit.
+Print out version and copyright information and exit.
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>.
+
-Runtime configuration file for B<yapfaq>.
+Runtime configuration file.
=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
under the same terms as Perl itself.
This program is free software; you may redistribute it and/or modify it
under the same terms as Perl itself.