05eb41c63af8ccd369f76b022d3cf1faab5543c2
braney
  Thu May 26 16:25:07 2022 -0700
changes to support curated hubs

diff --git src/hg/makeDb/hgTrackDb/hgTrackDb.c src/hg/makeDb/hgTrackDb/hgTrackDb.c
index 043ffce..88afad5 100644
--- src/hg/makeDb/hgTrackDb/hgTrackDb.c
+++ src/hg/makeDb/hgTrackDb/hgTrackDb.c
@@ -43,50 +43,53 @@
   "               - the table name in the CREATE statement is replaced by the\n"
   "               - table name specified on this command line.\n"
   "  hgRoot - a directory name to prepend to org to locate the hierarchy:\n"
   "           hgRoot/trackDb.ra - top level trackDb.ra file processed first\n"
   "           hgRoot/org/trackDb.ra - second level file processed second\n"
   "           hgRoot/org/database/trackDb.ra - third level file processed last\n"
   "         - for no directory hierarchy use .\n"
   "  -strict - only include tables that exist (and complain about missing html files).\n"
   "  -raName=trackDb.ra - Specify a file name to use other than trackDb.ra\n"
   "   for the ra files.\n"
   "  -release=alpha|beta|public - Include trackDb entries with this release tag only.\n"
   "  -settings - for trackDb scanning, output table name, type line,\n"
   "            -  and settings hash to stderr while loading everything.\n"
   "  -gbdbList - list of files to confirm existance of bigDataUrl files\n"
   "  -addVersion - add cartVersion pseudo-table\n"
+  "  -noHtmlCheck - don't check for HTML even if strict is set\n"
   );
 }
 
 static struct optionSpec optionSpecs[] = {
     {"raName", OPTION_STRING},
     {"strict", OPTION_BOOLEAN},
     {"release", OPTION_STRING},
     {"settings", OPTION_BOOLEAN},
     {"gbdbList", OPTION_STRING},
     {"addVersion", OPTION_BOOLEAN},
+    {"noHtmlCheck", OPTION_BOOLEAN},
     {NULL,      0}
 };
 
 static char *raName = "trackDb.ra";
 
 static char *release = "alpha";
 
 static char *gbdbList = NULL;
 static struct hash *gbdbHash = NULL;
 static boolean addVersion = FALSE;
+static boolean noHtmlCheck = FALSE;
 
 // release tags
 #define RELEASE_ALPHA  (1 << 0)
 #define RELEASE_BETA   (1 << 1)
 #define RELEASE_PUBLIC (1 << 2)
 
 unsigned releaseBit = RELEASE_ALPHA;
 
 static bool showSettings = FALSE;
 
 static boolean hasNonAsciiChars(char *text)
 /* Check if text has any non-printing or non-ascii characters */
 {
 char *c;
 for (c = text; *c != '\0'; c++)
@@ -895,31 +898,31 @@
     if (*end == ';') *end = 0;
     sqlSafef(query, sizeof(query), create, NULL);
     sqlRemakeTable(conn, trackDbName, query);
 
     /* Load in regular fields. */
     sqlSafef(query, sizeof(query), "load data local infile '%s' into table %s", tab, trackDbName);
     verbose(2, "sending mysql \"%s\"\n", query);
     sqlUpdate(conn, query);
     verbose(2, "done tab file load");
 
     /* Load in html and settings fields. */
     for (td = tdbList; td != NULL; td = td->next)
 	{
         if (isEmpty(td->html))
 	    {
-	    if (strict && !trackDbLocalSetting(td, "parent") && !trackDbLocalSetting(td, "superTrack") &&
+	    if (strict && !noHtmlCheck && !trackDbLocalSetting(td, "parent") && !trackDbLocalSetting(td, "superTrack") &&
 	        !sameString(td->track,"cytoBandIdeo"))
 		{
 		fprintf(stderr, "Warning: html missing for %s %s %s '%s'\n",org, database, td->track, td->shortLabel);
 		}
 	    }
 	else
 	    {
 	    updateBigTextField(conn,  trackDbName, "tableName", td->track, "html", td->html);
 	    }
 	if (td->settingsHash != NULL)
 	    {
 	    char *settings = settingsFromHash(td->settingsHash, database);
 	    updateBigTextField(conn, trackDbName, "tableName", td->track,
 	        "settings", settings);
 	    if (showSettings)
@@ -977,22 +980,23 @@
 
 int main(int argc, char *argv[])
 /* Process command line. */
 {
 optionInit(&argc, argv, optionSpecs);
 if (argc != 6)
     usage();
 raName = optionVal("raName", raName);
 showSettings = optionExists("settings");
 if (strchr(raName, '/') != NULL)
     errAbort("-raName value should be a file name without directories");
 release = optionVal("release", release);
 releaseBit = getReleaseBit(release);
 gbdbList = optionVal("gbdbList", gbdbList);
 addVersion = optionExists("addVersion");
+noHtmlCheck = optionExists("noHtmlCheck");
 
 if (gbdbList)
     gbdbHash = hashLines(gbdbList);
 
 hgTrackDb(argv[1], argv[2], argv[3], argv[4], argv[5], optionExists("strict"));
 return 0;
 }