src/hg/makeDb/trackDb/checkMetaDb 1.1
1.1 2010/06/03 23:19:45 braney
utilities to check to see if metaDb needs to be rebuilt, and do so if necessary
Index: src/hg/makeDb/trackDb/checkMetaDb
===================================================================
RCS file: src/hg/makeDb/trackDb/checkMetaDb
diff -N src/hg/makeDb/trackDb/checkMetaDb
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/hg/makeDb/trackDb/checkMetaDb 3 Jun 2010 23:19:45 -0000 1.1
@@ -0,0 +1,58 @@
+#!/bin/bash -e
+usage='checkMetaDb directory metaDb db0 ...'
+
+UNAME_N=`uname -n`
+UNAME_N=${UNAME_N/.cse.ucsc.edu/}
+
+if [ $# -lt 3 ] ; then
+ echo "wrong # args: $usage" >&2
+ exit 1
+fi
+
+directory="$1"; shift
+metaDb="$1"; shift
+dbs="$@"
+
+# check if a database exists, print note and return non-zero if it doesn't
+dbExists() {
+ local db="$1"
+ if [ -n "$local" ] ; then
+ local dbChk=$(hgsqlLocal -Ne 'show databases like "'$db'"')
+ else
+ local dbChk=$(hgsql -Ne 'show databases like "'$db'"')
+ fi
+ if [ -z "$dbChk" ] ; then
+ echo "Note: database $db does not exist, skipping"
+ return 1
+ else
+ return 0
+ fi
+}
+
+# chck metaDb for a database
+checkMetaDb() {
+ local db="$1"
+ local dbpath=$(ls -1 -d */$db)
+ local org=$(echo $dbpath | sed -e 's/\/.*//')
+ local metaDir=$dbpath/metaDb/$directory
+
+ if test \! -d $metaDir
+ then
+ return;
+ fi
+
+ touch $metaDir/metaDb
+ echo hgsqlTableDate $db $metaDb $metaDir/metaDb
+ hgsqlTableDate $db $metaDb $metaDir/metaDb || rm $metaDir/metaDb
+
+ # makefile will call makeMetaDb if file list is newer than table
+ (cd $metaDir; make DB=$db TABLE=$metaDb)
+}
+
+# load for all specified databases
+for db in $dbs ; do
+ if dbExists $db ; then
+ checkMetaDb $db
+ fi
+done
+