Merge branch 'installation' into next
authorThomas Hochstein <thh@inter.net>
Mon, 2 Sep 2013 10:19:11 +0000 (12:19 +0200)
committerThomas Hochstein <thh@inter.net>
Mon, 2 Sep 2013 10:19:11 +0000 (12:19 +0200)
* installation:
  Fix config path detection for install.pl.
  Add some TODO entries.
  Add database creation to installer.
  Handle undefined previous version when installing.

doc/TODO
install/install.pl

index 6f1a61b..36b6b50 100644 (file)
--- a/doc/TODO
+++ b/doc/TODO
@@ -12,6 +12,10 @@ Bug numbers refer to the Mantis issue tracker at <http://bugs.th-h.de/>.
   - Add a test suite
     There is currently no kind of test suite or regression tests. Something like
     that is badly needed.
+  - separate directories (bin, config, ...)
+  - make NewsStats installable in accordance with LFS and customary procedures,
+    i.e. scripts to /usr/local/news/bin or /usr/lib/news/bin, configuration
+    to /usr/local/news/etc or /etc/news and so on
 
 * Additional features
   - Add hierarchy information (GroupInfo - Bugs #19 #20 #21 #22 #23 #24 #25 #26)
@@ -42,6 +46,8 @@ Bug numbers refer to the Mantis issue tracker at <http://bugs.th-h.de/>.
       names - would be nice.
 
   + install/install.pl
+    - Check installer & fix bugs to get a working version ... finally
+    - Read current version from a file dropped and updated by installer
     - Add / enhance / test error handling
     - General tests and optimisations
 
index 61e8ef1..4069bf5 100755 (executable)
@@ -36,17 +36,21 @@ GetOptions ('u|update=s' => \$OptUpdate,
             'V|version'  => \&ShowVersion) or exit 1;
 
 ### change working directory to .. (as we're in .../install)
-chdir dirname($0).'/..';
+chdir dirname($FullPath).'/..';
 my $Path = cwd();
 
 ### read configuration
 print("Reading configuration.\n");
-my %Conf = %{ReadConfig($HomePath.'/newsstats.conf')};
+my %Conf = %{ReadConfig($Path.'/newsstats.conf')};
 
 ##### --------------------------------------------------------------------------
 ##### Database table definitions
 ##### --------------------------------------------------------------------------
 
+my $DBCreate = <<SQLDB;
+CREATE DATABASE IF NOT EXISTS `$Conf{'DBDatabase'}` DEFAULT CHARSET=utf8;
+SQLDB
+
 my %DBCreate = ('DBTableRaw'  => <<RAW, 'DBTableGrps' => <<GRPS);
 -- 
 -- Table structure for table DBTableRaw
@@ -134,7 +138,9 @@ Enjoy!
 -thh <thh\@inter.net>
 INSTALL
 
-my $Upgrade = <<UPGRADE;
+my $Upgrade ='';
+if ($OptUpdate) {
+ $Upgrade = <<UPGRADE;
 ----------
 Your installation was upgraded from $OptUpdate to $PackageVersion.
 
@@ -144,9 +150,27 @@ Don't forget to restart your INN feed so that it can pick up the new version:
 
 (or whatever you called your feed).
 UPGRADE
+}
 
 ##### --------------------------- End of definitions ---------------------------
 
+### create DB, if necessary
+if (!$OptUpdate) {
+  print "----------\nStarting database creation.\n";
+  # create database
+  # we can't use InitDB() as that will use a table name of
+  # the table that doesn't exist yet ...
+  my $DBHandle = DBI->connect(sprintf('DBI:%s:host=%s',$Conf{'DBDriver'},
+                                      $Conf{'DBHost'}), $Conf{'DBUser'},
+                                      $Conf{'DBPw'}, { PrintError => 0 });
+  my $DBQuery = $DBHandle->prepare($DBCreate);
+  $DBQuery->execute() or &Bleat(2, sprintf("Can't create database %s: %s%\n",
+                                           $Conf{'DBDatabase'}, $DBI::errstr));
+  
+  printf("Database table %s created succesfully.\n",$Conf{'DBDatabase'});
+  $DBHandle->disconnect;
+};
+
 ### DB init, read list of tables
 print "Reading database information.\n";
 my $DBHandle = InitDB(\%Conf,1);
@@ -155,7 +179,6 @@ my %TablesInDB =
 
 if (!$OptUpdate) {
   ##### 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);
This page took 0.014227 seconds and 4 git commands to generate.