src/utils/qa/findLevel 1.4

1.4 2010/03/11 00:10:36 rhead
Do db check with hgsql instead of tdbQuery, as unrelated errors there will mess with the db check. Also give an error if nothing tdbQuery only gives errors.
Index: src/utils/qa/findLevel
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/utils/qa/findLevel,v
retrieving revision 1.3
retrieving revision 1.4
diff -b -B -U 1000000 -r1.3 -r1.4
--- src/utils/qa/findLevel	9 Mar 2010 02:51:39 -0000	1.3
+++ src/utils/qa/findLevel	11 Mar 2010 00:10:36 -0000	1.4
@@ -1,112 +1,120 @@
 #!/bin/bash
 # quit if something within the script fails
 set -beEu -o pipefail
 source `which qaConfig.bash`
 
 ################################
 #  
 #  09-26-2007
 #  Ann Zweig
 #
 #  findLevel
 #  find out which level in the trackDb directory
 #  a track is on, and which level the corresponding
 #  .html file is on.
 #
 #  02-25-2010
 #  Brooke Rhead
 #  Changed to a bash script to simplify dealing with stderr
 #  and stdout.
 #
 ################################
 
 db=""
 tableName=""
 currDir=""
+error=""
 
 # get arguments or print usage
 if [ $# -ne 2 ] 
 then
   echo -e "
   searches trackDb hierarchy for your table and corresponding .html file
   also returns the value of the priority and visibility entries
   and the .ra file location for each\n
     usage:  database tableName\n" >&2
   exit 1
 else
   db="$1"
   tableName="$2"
 fi
 
 # check for kent source dir at $USER root
 if ! [ -d ~/kent/src/hg/makeDb/trackDb/ ]
 then
   echo -e "\n  ERROR: `basename $0` presumes you have the kent source
   source tree in your home dir, in a dir called \"kent\"\n" >&2
   exit 1
 fi
 
 # make sure this is a valid database name
-if ! tdbQuery "select db from $db limit 1" | grep -q $db
+if ! hgsql -Ne "show databases" | grep -qw $db
 then
-  echo -e "\n ERROR: Invalid database name.  Try again.\n" >&2
+  echo -e "\nERROR: database $db not found.  Try running on hgwdev?\n" >&2
   exit 1
 fi
 
 echo
 
 ###########################################
 # find the level of the associated .html file
 # start at the assembly level
 cd ~/kent/src/hg/makeDb/trackDb/*/$db
 currDir=""
 
 if [ -e $tableName.html ]
 then # the .html file is found at the assembly level
   currDir=`pwd -P`
 else
   cd ..
   if [ -e $tableName.html ]
   then # the .html file is found at the organism level
     currDir=`pwd -P`
   else
     cd ..
     if [ -e $tableName.html ]
     then # the .html file is found at the top level
       currDir=`pwd -P`
     fi
   fi
 fi
 
 if [ "$currDir" == "" ]
 then
   echo -e " * the $tableName.html file does not exist at any level\n"
 else
   echo -e " * html file: $currDir/$tableName.html\n"
 fi
 
 ###########################################
 # find the trackDb.ra entry (using tdbQuery)
 
 echo " * trackDb:"
 all=`tdbQuery "select track,priority,visibility,release,filePos from \
-     $db where track='$tableName'" 2> /dev/null`
+     $db where track='$tableName'" 2> /dev/null` || error=yes
 
 strict=`tdbQuery -strict "select track,priority,visibility,release,filePos from \
-        $db where track='$tableName'" 2> /dev/null`
+        $db where track='$tableName'" 2> /dev/null` || error=yes
 
 alpha=`tdbQuery -alpha "select track,priority,visibility,release,filePos from \
-       $db where track='$tableName'" 2> /dev/null`
+       $db where track='$tableName'" 2> /dev/null` || error=yes
 
 # always print "all"; only print strict or alpha if they differ from all
 echo -e "$all\n"
 if [ "$all" != "$strict" ]
 then
   echo -e "$strict\n"
 fi
 if [ "$alpha" != "$all" ] && [ "$alpha" != "$strict" ] 
 then
   echo -e "$alpha\n"
 fi
 
+# if tdbQuery is only giving errors, $all will be empty and nothing printed
+if [ "$error" = "yes" ]
+then
+  echo -e "\nERROR: tdbQuery returned only errors\n" >&2
+  exit 1
+fi
+
 exit 0