5cbd092e2deb2869385fc3203282ac6c91337048
chmalee
  Tue Apr 20 10:27:40 2021 -0700
Allow different messages for each side of a relationship in the relatedTracks section of hgc/hgTrackUi. Enforce two lines per relationship in relatedTracks.ra in order to allow this, refs #25721

diff --git src/hg/makeDb/trackDb/buildRelatedTracks src/hg/makeDb/trackDb/buildRelatedTracks
index c6140a8..f626184 100755
--- src/hg/makeDb/trackDb/buildRelatedTracks
+++ src/hg/makeDb/trackDb/buildRelatedTracks
@@ -1,31 +1,37 @@
 #!/bin/bash
 # Build the relatedTracks table for each assembly
 set -beEu -o pipefail
 
 function usage() {
     printf "Usage: %s relatedTrack_name db1 db2 ...\n" "`basename $0`"
     printf "Build the relatedTrack tables for each assembly listed in relatedTracks.ra\n"
     printf "The first argument must be the name of the table to build, followed by all\nthe"
     printf "assemblies to update (similar to trackDb update process)\n"
 }
 
 if [ $# -lt 2 ] ; then
     echo "wrong # args" >&2
     usage >&2
     exit 1
 fi
 
 tbl="$1"; shift;
 
 for db in $*; do
     set +e
     grep -wq "^$db" relatedTracks.ra &> /dev/null
     if [ $? -eq 0 ]
     then
         set -e
+        # enfore two lines per relationship:
+        uniqTables=$(comm -3 <(grep -w "^$db" relatedTracks.ra | cut -d' ' -f2 | sort) <(grep -w "^$db" relatedTracks.ra | cut -d' ' -f3 | sort) | wc -l)
+        if [ $uniqTables -gt 0 ]; then
+            printf "ERROR: mismatched primary and secondary related tracks for '%s'\n" "$db"
+            exit 255
+        fi
         grep -w "^$db" relatedTracks.ra | cut -d' ' -f2- \
             | sed -e 's/ /\t/' -e 's/ /\t/' | sort -k1 -k2 \
             | hgLoadSqlTab "$db" "$tbl" ~/kent/src/hg/lib/relatedTrack.sql stdin
         printf "done building relatedTrack table for %s\n" "$db"
     fi
 done