Ticket #36: openguides-setup-db

File openguides-setup-db, 1.3 KB (added by Dominic Hargreaves, 13 years ago)

OpenGuides setup script

Line 
1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6use OpenGuides::Config;
7
8my $config_file = shift or die "Must specify config file on command line!";
9
10if ( ! -r $config_file ) {
11    die "Config file specified is not readable: $!";
12}
13
14my $config = OpenGuides::Config->new( file => $config_file);
15
16# Initialise the database if necessary.
17my $dbname = $config->dbname;
18my $dbuser = $config->dbuser;
19my $dbpass = $config->dbpass;
20my $dbhost = $config->dbhost;
21my $dbtype = $config->dbtype;
22
23my %cgi_wiki_exts = ( postgres => "Pg",
24                      mysql    => "MySQL",
25                      sqlite   => "SQLite" );
26
27my %dbd_exts = ( postgres => "Pg",
28                 mysql => "mysql",
29                 sqlite => "SQLite" );
30
31my $cgi_wiki_module = "CGI::Wiki::Setup::" . $cgi_wiki_exts{$dbtype};
32my $dbd_module = "DBD::" . $dbd_exts{$dbtype};
33
34eval "require $dbd_module";
35
36if ($@) {
37    print "The DBD module is probably not installed;\n";
38    print "we won't set up the database now.\n";
39    exit 0;
40}
41
42eval "require $cgi_wiki_module";
43
44if ($@) {
45    print "The DBD module is probably not installed;\n";
46    print "we won't set up the database now.\n";
47    exit 0;
48}
49   
50print "Checking database schema...\n";
51{
52    no strict 'refs';
53    &{$cgi_wiki_module . "::setup"}( $dbname, $dbuser, $dbpass, $dbhost );
54}