#!/usr/bin/perl

use Sys::Hostname;

my $rpsfile = 'FILE:///app/tools/rps/sql/create/RPS_CLIENT_DB.sql';
my $bpfile  = 'FILE:///app/tools/bookpub/sql/create/bookpub.sql';
my $file;

my @dbNames = _getAllDatabaseNames();

foreach my $dbName (@dbNames) {
    $file = $dbName =~ /^BP/ ? $bpfile : $rpsfile;
    print "/app/tools/dbadmin/bin/diff_dbs.pl $file $dbName > $dbName\n";
    `/app/tools/dbadmin/bin/diff_dbs.pl $file $dbName > $dbName`;
}

sub _getAllDatabaseNames {

    # First, query mysql to get the list of dbs.
    #

    my $dbsRaw;
    my $hostname = ( split( /\./, hostname() ) )[0];
    if ( 'rpsweb01' eq $hostname ) {
        $dbsRaw = `/usr/bin/mysqlshow -udbuser -predStripe -hrpsdb01`;
    } elsif ( 'rpsweb02' eq $hostname ) {
        $dbsRaw = `/usr/bin/mysqlshow -udbuser -predStripe -hrpsdb02`;
    } elsif ( 'rpsweb03' eq $hostname ) {
        $dbsRaw = `/usr/bin/mysqlshow -udbuser -predStripe -hrpsdb03`;
    } elsif ( 'bpweb01' eq $hostname ) {
        $dbsRaw = `/usr/bin/mysqlshow -udbuser -predStripe -hrpsdb04`;
    } else {
        $dbsRaw = `/usr/bin/mysqlshow -uroot`;
    }

    # Doesn't seem to be a way to get a simple list - so we have to parse the
    # names out from all the extra display frosting this command returns.
    #

    my @dbNames;
    my @lines = split( "\n", $dbsRaw );

    for ( my $i = 0 ; $i < ( scalar @lines ) - 1 ; $i++ ) {

        # First three lines are crap.
        #
        next if $i < 3;

        if ( $lines[$i] =~ m/\| (\S*) (.*)\|/ ) {
            my $name = $1;
            push @dbNames, $name if ( $name =~ /^(C|BP)_/ );
        }
    }

    return @dbNames;
}

