#!/bin/bash

set -e
. ${POPHOME:-@POPHOME@}/lib/pop_conf_sh
tmp="/tmp/$$"
trap 'rm -f $tmp' 0
usage() {
cat >&2 <<END
Usage: $(basename $0)  -- zeigt Unterschiede zwischen der Beschreibung in
		der "POP-Datenbank"-Datei und einer tatsächlichen Datenbank an
    -f POP-Datenbank  Datei zur Tabellenbeschreibung
    -d DATENBANK      zu updatende Datenbank (siehe /etc/pop.conf)
    -x                führe tatsächlich Änderungen aus (sonst: nur ausgeben)
    -q / -v           weniger / mehr Debug-Ausgabe
    Tabelle...        synchronsiert nur diese Tabellen
END
    exit 1
}

T="$(getopt "hd:f:qvx:" "$@")" || usage
eval set -- "$T"
cfg=""
db=""
quiet=

if test $? != 0 ; then usage; fi
for i
do
    case "$i" in
    -h)
        usage ;;
    -d)
        shift; test -z "$db" || usage; db="$1"; shift ;;
    -f)
        shift; test -z "$cfg" || usage; cfg="-f $1"; shift ;;
	-x)
		shift; update="-X" ;;
	-q)
		shift; quiet="-q" ;;
	-v)
		shift; quiet="-v" ;;
    --)
        shift; break ;;
    esac
done

test -z "$db" && db="DeFaUlT"

type -p sql_diff >/dev/null 2>&1 || PATH="$POPHOME/bin:$POPHOME/obj:$PATH"
set +e
sql_diff $update $quiet -d $db -S <(dbbuild $cfg -gkKn $*) -i -npmai $*
dbbuild -vnd -D $db

exit $?

cat >/dev/null <<___ # to keep "dash -n" happy

=head1 Name

dbdiff -- spuckt die Unterschiede zwischen der Struktur einer Datenbank
und der POPCONFIG-Datei aus, mit dem Ziel, Erstere zu updaten.

=head1 Zusammenfassung

	dbdiff [-f POPCONFIG] [-d DATENBANK] [Tabelle ...]

=head1 Beschreibung

Mittels "dbbuild" wird eine SQL-Beschreibung der Datenbank(tabellen)
generiert. Diese wird mit der Beschreibung aus der Datenbank verglichen.
Im Falle einer Nichtübereinstimmung werden SQL-Befehle generiert, die
die Datenbank auf den Stand der POPCONFIG-Beschreibung bringen.

=head2 Optionen

=over 4

=item C<-h>

Kurzhilfe.


=item C<-f POPCONFIG> ...

Verwendet die angegebene Datei.

Default: $POPHOME/POP-Datenbank .


=item C<-d DATENBANK> ...

Verwendet die benannte Datenbank. Die möglichen Datenbanken stehen in der
/etc/pop.conf (verwendet wird $DATAHOST_BLA etc. bei "-d BLA").

Default: Standard ($DATAHOST etc).


=item C<Tabelle> ...

Berücksichtige nur diese Tabelle.

Default: Alle Tabellen; es werden CREATE/DROP TABLE-Statements generiert.


=back

=head1 ToDo

MySQL trifft bei "unvollständigen" Angaben in den CREATE-Statements ein
paar Annahmen, von denen dieses Tool noch keine Ahnung hat.

=cut

___
