89f7e9cc7e39854c535c49875835fa1b54bacaa4
hiram
  Wed Feb 19 13:43:45 2025 -0800
script to re-run a trackDb build refs #35201

diff --git src/hg/makeDb/doc/asmHubs/reRunTrackDb.sh src/hg/makeDb/doc/asmHubs/reRunTrackDb.sh
new file mode 100755
index 00000000000..1bcb4c108f7
--- /dev/null
+++ src/hg/makeDb/doc/asmHubs/reRunTrackDb.sh
@@ -0,0 +1,54 @@
+#!/bin/bash
+
+set -beEu -o pipefail
+
+set -x
+
+if [ $# -lt 1 ]; then
+  printf "usage: reRunTrackDb.sh asmId [... asmId ...]\n" 1>&2
+  printf "the asmId argument can instead be a file with a list of asmIds\n" 1>&2
+  exit 255
+fi
+
+function runOne() {
+  export asmId="${1}"
+  gcX="${asmId:0:3}"
+  d0="${asmId:4:3}"
+  d1="${asmId:7:3}"
+  d2="${asmId:10:3}"
+  tDir="/hive/data/genomes/asmHubs/allBuild/${gcX}/${d0}/${d1}/${d2}/${asmId}"
+  buildDir=`realpath ${tDir}`
+  if [ -d "${buildDir}" ]; then
+    doTdb="${buildDir}/doTrackDb.bash"
+    tdb="${buildDir}/${asmId}.trackDb.txt"
+    if [ -s "${tdb}" ]; then
+      if [ -s "${doTdb}" ]; then
+        printf "%s\t%s\n" "${asmId}" "`stat --printf=\"%Y\t%y\t%n\n\" \"${tdb}\"`" 1>&2
+        printf "%s\t%s\n" "${asmId}" "`stat --printf=\"%Y\t%y\t%n\n\" \"${doTdb}\"`" 1>&2
+        bCount=`grep -c -w track ${tdb}`
+        ${doTdb} > /dev/null
+        aCount=`grep -c -w track ${tdb}`
+        printf "%s\t%d\t%d\n" "${asmId}" "${bCount}" "${aCount}"
+      else
+        printf "ERROR: missing doTdb\n" "${doTdb}" 1>&2
+      fi
+    else
+      printf "ERROR: can not find trackDb.txt\n%s\n" "${tdb}" 1>&2
+    fi
+  else
+    printf "ERROR: can not find buildDir\n%s\n" "${tDir}" 1>&2
+  fi
+}
+
+for asmIdFile in $*
+do
+  export asmId="${asmIdFile}"
+  if [ -s "${asmIdFile}" ]; then
+     for asmId in `cat ${asmIdFile}`
+     do
+        runOne "${asmId}"
+     done
+  else
+        runOne "${asmId}"
+  fi
+done