The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl
#
# Copyright 2008-2010 Tim Rayner
# 
# This file is part of Bio::MAGETAB.
# 
# Bio::MAGETAB is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
# 
# Bio::MAGETAB is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with Bio::MAGETAB.  If not, see <http://www.gnu.org/licenses/>.
#
# $Id: deploy_magetab_db.pl 351 2010-09-03 10:58:15Z tfrayner $

use strict;
use warnings;

use Bio::MAGETAB::Util::Persistence;
use Bio::MAGETAB;

use Getopt::Long;

# Process command-line options.
my $dsn;
GetOptions(
    "d|dsn=s" => \$dsn,
);
unless ( $dsn ) {
    print <<"USAGE";

Usage: $0 -d <DSN or SQLite database filename>

USAGE

    exit 255;
}

# Allow SQLite users to just give the database name.
unless ( $dsn =~ /\A dbi: /ixms ) {
    $dsn = "dbi:SQLite:$dsn";
}       

# Some basic sanity tests.
my ( $dbtype, $dbname ) = ( $dsn =~ /\A dbi : ([^:]+) : ([^:]+) /ixms );
unless ( $dbtype && $dbname ) {
    die(qq{Error: Unable to parse DSN "$dsn".\n});
}
if ( $dbtype eq 'SQLite' && -e $dbname ) {
    die(qq{Error: SQLite database file "$dbname" already exists.\n});
}

# Deploy the database schema.
my $db = Bio::MAGETAB::Util::Persistence->new( dbparams => [ $dsn ] );
$db->deploy();