debian/littlebird-tc-sql.postinst
changeset 11 24417d8949b5
parent 7 c34f5210c656
child 14 1267d8034336
--- a/debian/littlebird-tc-sql.postinst	Wed Aug 31 17:20:19 2011 +0200
+++ b/debian/littlebird-tc-sql.postinst	Thu Sep 01 12:23:59 2011 +0200
@@ -1,4 +1,5 @@
 #!/bin/sh
+echo "$0: $@" >&2
 # postinst script for littlebird
 #
 # see: dh_installdeb(1)
@@ -17,41 +18,52 @@
 # for details, see http://www.debian.org/doc/debian-policy/ or
 # the debian-policy package
 
+_mysql() { mysql -h"$host" -u"$adminuser" -p"$adminpass" "$@"; }
+
 
 case "$1" in
     configure)
-	db_get littlebird-tc/db/adminuser && adminuser="$RET" || true
-	db_get littlebird-tc/db/adminpass && adminpass="$RET" || true
-	db_get littlebird-tc/db/user && user="$RET" || true
-	db_get littlebird-tc/db/pass && pass="$RET" || true
-	db_get littlebird-tc/db/host && host="$RET" || true
-	db_get littlebird-tc/db/name && name="$RET" || true
 
-#	cat <<EOF
-#$@
-#adminuser/pass: $adminuser/$adminpass
-#user/pass: $user/$pass
-#db@host: $name@$host
-#EOF
-	# only init the db if there is no previous version
-	if test -z "$2" && test -n "$adminpass"; then
+	# only if we have admin access to the database
+	db_get littlebird-tc/db/have-admin || true
+	if test "$RET" = "true"; then
+		db_get littlebird-tc/db/adminuser && adminuser="$RET" || true
+		db_get littlebird-tc/db/adminpass && adminpass="$RET" || true
+		db_get littlebird-tc/db/host && host="$RET" || true
+		db_get littlebird-tc/db/name && name="$RET" || true
+
+		# check admin access
+		_mysql -e "" mysql || {
+		    echo "Access to mysql database failed!" >&2
+		    exit 1
+		}
 
-	    if test "$host" = "localhost"; then client="localhost"
-	    else client="%"
-	    fi
+		if _mysql -e "" "$name" 2>/dev/null; then
+		    db_subst littlebird-tc/db/exists name "$name" || true
+		    db_input medium littlebird-tc/db/exists || true
+		    db_go || true
+		else
+		    # ok, setup the database
+
+		    db_get littlebird-tc/db/user && user="$RET" || true
+		    db_get littlebird-tc/db/pass && pass="$RET" || true
+		    if test "$host" = "localhost"; then client="localhost"
+		    else client="%"
+		    fi
 
-	    mysql -h"$host" -u"$adminuser" -p"$adminpass" <<EOF
-		CREATE DATABASE IF NOT EXISTS $name;
-		GRANT ALL ON $name.* TO '$user'@'$client' IDENTIFIED BY '$pass';
-		FLUSH PRIVILEGES;
+		    # create or update the user
+
+		    _mysql <<EOF
+		    CREATE DATABASE $name;
+		    GRANT ALL ON $name.* TO '$user'@'$client' IDENTIFIED BY '$pass';
+		    FLUSH PRIVILEGES;
 EOF
-	    (	set -e
-		cd /usr/share/littlebird/tc-sql
-		./install_test_iteration_2011-06.sh \
-		    "$host" "$name" \
-		    "$adminuser" "$adminpass" \
-		    "$user" "$pass"
-	    )
+	    
+		    /usr/share/littlebird/tc-sql/install_test_iteration_2011-06.sh \
+			--host "$host" --db "$name" \
+			--adminuser "$adminuser" --adminpass "$adminpass" \
+			--user "$user" --pass "$pass"
+		fi
 	fi
     ;;