The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w

use strict;
use Getopt::Long;
use Pod::Usage;
use DBIx::Migration;

my $debug = 0;
my $help  = 0;
my ( $username, $password );

GetOptions(
    'debug'      => \$debug,
    'help|?'     => \$help,
    'password=s' => \$password,
    'username=s' => \$username
);
pod2usage(1) if ( $help || !$ARGV[0] );

unless ( $ARGV[1] ) {
    my $m = DBIx::Migration->new(
        {
            debug    => $debug,
            dsn      => $ARGV[0],
            password => $password,
            username => $username
        }
    );
    my $version = $m->version;
    if ( defined $version ) { print "Database is at version $version\n" }
    else { print "Database is not yet under DBIx::Migration management\n" }
    exit;
}

pod2usage(1) if !$ARGV[1];

my $m = DBIx::Migration->new(
    {
        debug    => $debug,
        dsn      => $ARGV[0],
        dir      => $ARGV[1],
        password => $password,
        username => $username
    }
);
$m->migrate( $ARGV[2] );

1;
__END__

=head1 NAME

dbix-migration - Seamless DB up- and downgrades

=head1 SYNOPSIS

dbix-migration.pl [options] dsn [directory version]

 Options:
   -debug       enable debug messages
   -help        display this help and exits
   -password    database password
   -username    database username

  Examples:
    dbix-migration.pl dbi:SQLite:/some/dir/myapp.db
    dbix-migration.pl dbi:SQLite:/some/dir/myapp.db/some/dir
    dbix-migration.pl dbi:SQLite:/some/dir/myapp.db/some/dir 23

=head1 DESCRIPTION

Seamless DB up- and downgrades.

=head1 SEE ALSO

L<DBIx::Migration>

=head1 AUTHOR

Sebastian Riedel, C<sri@oook.de>

=head1 COPYRIGHT

Copyright 2004-2005 Sebastian Riedel. All rights reserved.

This library is free software, you can redistribute it and/or modify it under
the same terms as Perl itself.

=cut