X-Git-Url: https://code.th-h.de/?p=usenet%2Fnewsstats.git;a=blobdiff_plain;f=install%2Finstall.pl;h=b998280a2acd44f7111fe1ab3c2ccfb523a454a7;hp=9b6b332eb21059d6ce0ea40e76820a11c2183446;hb=59d0c5ef86294c723e38d65651f4c9cb180b2684;hpb=741336c210429f37bebfd9882b9461e824320cd0 diff --git a/install/install.pl b/install/install.pl index 9b6b332..b998280 100755 --- a/install/install.pl +++ b/install/install.pl @@ -1,152 +1,317 @@ -#! /usr/bin/perl -W -# -# install.pl -# -# This script will create database tables as necessary. -# -# It is part of the NewsStats package. -# -# Copyright (c) 2010 Thomas Hochstein -# -# It can be redistributed and/or modified under the same terms under -# which Perl itself is published. - -BEGIN { - our $VERSION = "0.01"; - use File::Basename; - # we're in .../install, so our module is in .. - push(@INC, dirname($0).'/..'); -} -use strict; - -use NewsStats qw(:DEFAULT); - -use Cwd; - -use DBI; - -################################# Main program ################################# - -### read commandline options -my %Options = &ReadOptions(''); - -### change working directory to .. (as we're in .../install) -chdir '..'; - -### read configuration -print("Reading configuration.\n"); -my %Conf = %{ReadConfig('newsstats.conf')}; - -##### -------------------------------------------------------------------------- -##### Database table definitions -##### -------------------------------------------------------------------------- - -my %DBCreate = ('DBTableRaw' => < <table_info('%', '%', '%', 'TABLE')->fetchall_hashref('TABLE_NAME')}; - -# check for tables and create them, if they don't exist yet -foreach my $Table (keys %DBCreate) { - if (defined($TablesInDB{$Conf{$Table}})) { - printf("Database table %s.%s already exists, skipping ....\n",$Conf{'DBDatabase'},$Conf{$Table}); - next; - }; - 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}); -}; - -# close handle -$DBHandle->disconnect; -print "Database table generation done.\n"; - -### output information on other necessary steps -my $Path = cwd(); -print < -TODO +#! /usr/bin/perl -W +# +# install.pl +# +# This script will create database tables as necessary. +# +# It is part of the NewsStats package. +# +# Copyright (c) 2010 Thomas Hochstein +# +# It can be redistributed and/or modified under the same terms under +# which Perl itself is published. + +BEGIN { + our $VERSION = "0.01"; + use File::Basename; + # we're in .../install, so our module is in .. + push(@INC, dirname($0).'/..'); +} +use strict; + +use NewsStats qw(:DEFAULT); + +use Cwd; + +use DBI; + +################################# Main program ################################# + +### read commandline options +my %Options = &ReadOptions('u:'); + +### change working directory to .. (as we're in .../install) +chdir dirname($0).'/..'; +my $Path = cwd(); + +### read configuration +print("Reading configuration.\n"); +my %Conf = %{ReadConfig('newsstats.conf')}; + +##### -------------------------------------------------------------------------- +##### Database table definitions +##### -------------------------------------------------------------------------- + +my %DBCreate = ('DBTableRaw' => < < +INSTALL + +my $Upgrade = <table_info('%', '%', '%', 'TABLE')->fetchall_hashref('TABLE_NAME')}; + +if (!$Options{'u'}) { + ##### installation mode + print "----------\nStarting database table generation.\n"; + # check for tables and create them, if they don't exist yet + foreach my $Table (keys %DBCreate) { + &CreateTable($Table); + }; + print "Database table generation done.\n"; + + # Display install instructions + print $Install; +} else { + ##### upgrade mode + print "----------\nStarting upgrade process.\n"; + $PackageVersion = '0.03'; + if ($Options{'u'} < $PackageVersion) { + if ($Options{'u'} < 0.02) { + # 0.01 -> 0.02 + # &DoMySQL('...;'); + # print "v0.02: Database upgrades ...\n"; + # &PrintInstructions('0.02',<<" INSTRUCTIONS"); + # INSTRUCTIONS + }; + }; + # Display general upgrade instructions + print $Upgrade; +}; + +# close handle +$DBHandle->disconnect; + +exit(0); + +################################# Subroutines ################################## + +sub CreateTable { + my $Table = shift; + if (defined($TablesInDB{$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}); + return; +}; + +sub DoMySQL { + my $SQL = shift; + my $DBQuery = $DBHandle->prepare($SQL); + $DBQuery->execute() or warn sprintf("$MySelf: E: Database error: %s\n",$DBI::errstr); + return; +}; + +sub PrintInstructions { + my ($UpVersion,$Instructions) = @_; + print "v$UpVersion: Upgrade Instructions >>>>>\n"; + my $Padding = ' ' x (length($UpVersion) + 3); + $Instructions =~ s/^ /$Padding/mg; + print $Instructions; + print "<" x (length($UpVersion) + 29) . "\n"; +}; + + +__END__ + +################################ Documentation ################################# + +=head1 NAME + +install - installation script + +=head1 SYNOPSIS + +B [B<-Vh>] + +=head1 REQUIREMENTS + +See doc/README: Perl 5.8.x itself and the following modules from CPAN: + +=over 2 + +=item - + +Config::Auto + +=item - + +DBI + +=back + +=head1 DESCRIPTION + +This script will create database tables as necessary and configured. + +=head2 Configuration + +F will read its configuration from F via +Config::Auto. + +See doc/INSTALL for an overview of possible configuration options. + +=head1 OPTIONS + +=over 3 + +=item B<-V> (version) + +Print out version and copyright information on B and exit. + +=item B<-h> (help) + +Print this man page and exit. + +=back + +=head1 FILES + +=over 4 + +=item F + +The script itself. + +=item F + +Library functions for the NewsStats package. + +=item F + +Runtime configuration file for B. + +=back + +=head1 BUGS + +Please report any bugs or feature requests to the author or use the +bug tracker at L! + +=head1 SEE ALSO + +=over 2 + +=item - + +doc/README + +=item - + +doc/INSTALL + +=back + +This script is part of the B package. + +=head1 AUTHOR + +Thomas Hochstein + +=head1 COPYRIGHT AND LICENSE + +Copyright (c) 2010 Thomas Hochstein + +This program is free software; you may redistribute it and/or modify it +under the same terms as Perl itself. + +=cut