JAL-3989 moved getdown build dirs to build/website/docroot/getdown/CHANNEL, build...
[jalview.git] / build.gradle
index 100bc59..3573ac7 100644 (file)
@@ -47,8 +47,6 @@ plugins {
   id 'com.install4j.gradle' version '9.0.6'
   id 'com.dorongold.task-tree' version '1.5' // only needed to display task dependency tree with  gradle task1 [task2 ...] taskTree
   id 'com.palantir.git-version' version '0.13.0' apply false
-//  id 'org.gradle.crypto.checksum' version '1.4.0'
-
 }
 
 repositories {
@@ -196,7 +194,8 @@ ext {
   testSourceDir = useClover ? cloverTestInstrDir : testDir
   testClassesDir = useClover ? cloverTestClassesDir : "${jalviewDir}/${test_output_dir}"
 
-  getdownWebsiteDir = string("${jalviewDir}/${getdown_website_dir}/${JAVA_VERSION}")
+  getdownChannelDir = string("${getdown_website_dir}/${propertiesChannelName}")
+  getdownAppBaseDir = string("${jalviewDir}/${getdownChannelDir}/${JAVA_VERSION}")
   getdownArchiveDir = string("${jalviewDir}/${getdown_archive_dir}")
   getdownFullArchiveDir = null
   getdownTextLines = []
@@ -208,7 +207,7 @@ ext {
   // the following values might be overridden by the CHANNEL switch
   getdownDir = string("${getdownChannelName}/${JAVA_VERSION}")
   getdownAppBase = string("${getdown_channel_base}/${getdownDir}")
-  getdownArchiveAppBase = null
+  getdownArchiveAppBase = getdown_archive_base
   getdownLauncher = string("${jalviewDir}/${getdown_lib_dir}/${getdown_launcher}")
   getdownAppDistDir = getdown_app_dir_alt
   getdownImagesDir = string("${jalviewDir}/${getdown_images_dir}")
@@ -248,7 +247,6 @@ ext {
     reportRsyncCommand = true
     install4jSuffix = ""
     install4jInstallerName = "${jalview_name} Installer"
-    getdownArchiveAppBase = getdown_archive_base
     break
 
     case "ARCHIVE":
@@ -269,7 +267,7 @@ ext {
     case "ARCHIVELOCAL":
     getdownChannelName = string("archive/${JALVIEW_VERSION}")
     getdownDir = string("${getdownChannelName}/${JAVA_VERSION}")
-    getdownAppBase = file(getdownWebsiteDir).toURI().toString()
+    getdownAppBase = file(getdownAppBaseDir).toURI().toString()
     if (!file("${ARCHIVEDIR}/${package_dir}").exists()) {
       throw new GradleException("Must provide an ARCHIVEDIR value to produce an archive distribution")
     } else {
@@ -333,7 +331,7 @@ ext {
 
     case [ "LOCAL", "JALVIEWJS" ]:
     JALVIEW_VERSION = "TEST"
-    getdownAppBase = file(getdownWebsiteDir).toURI().toString()
+    getdownAppBase = file(getdownAppBaseDir).toURI().toString()
     getdownArchiveAppBase = file("${jalviewDir}/${getdown_archive_dir}").toURI().toString()
     getdownLauncher = string("${jalviewDir}/${getdown_lib_dir}/${getdown_launcher_local}")
     install4jExtraScheme = "jalviewl"
@@ -346,11 +344,12 @@ ext {
 
   }
   JALVIEW_VERSION_UNDERSCORES = JALVIEW_VERSION.replaceAll("\\.", "_")
+  hugoDataJsonFile = file("${jalviewDir}/${hugo_build_dir}/data/installers/installers-${JALVIEW_VERSION_UNDERSCORES}.json")
   // override getdownAppBase if requested
   if (findProperty("getdown_appbase_override") != null) {
     // revert to LOCAL if empty string
     if (string(getdown_appbase_override) == "") {
-      getdownAppBase = file(getdownWebsiteDir).toURI().toString()
+      getdownAppBase = file(getdownAppBaseDir).toURI().toString()
       getdownLauncher = string("${jalviewDir}/${getdown_lib_dir}/${getdown_launcher_local}")
     } else if (string(getdown_appbase_override).startsWith("file://")) {
       getdownAppBase = string(getdown_appbase_override)
@@ -394,10 +393,10 @@ ext {
                                     .toLowerCase()
 
   getdownWrapperLink = install4jUnixApplicationFolder // e.g. "jalview_local"
-  getdownAppDir = string("${getdownWebsiteDir}/${getdownAppDistDir}")
-  //getdownJ11libDir = "${getdownWebsiteDir}/${getdown_j11lib_dir}"
-  getdownResourceDir = string("${getdownWebsiteDir}/${getdown_resource_dir}")
-  getdownInstallDir = string("${getdownWebsiteDir}/${getdown_install_dir}")
+  getdownAppDir = string("${getdownAppBaseDir}/${getdownAppDistDir}")
+  //getdownJ11libDir = "${getdownAppBaseDir}/${getdown_j11lib_dir}"
+  getdownResourceDir = string("${getdownAppBaseDir}/${getdown_resource_dir}")
+  getdownInstallDir = string("${getdownAppBaseDir}/${getdown_install_dir}")
   getdownFilesDir = string("${jalviewDir}/${getdown_files_dir}/${JAVA_VERSION}/")
   getdownFilesInstallDir = string("${getdownFilesDir}/${getdown_install_dir}")
   /* compile without modules -- using classpath libraries
@@ -1533,7 +1532,7 @@ task getdownWebsite() {
 
   doFirst {
     // clean the getdown website and files dir before creating getdown folders
-    delete getdownWebsiteDir
+    delete getdownAppBaseDir
     delete getdownFilesDir
 
     copy {
@@ -1545,7 +1544,7 @@ task getdownWebsite() {
 
     copy {
       from channelPropsFile
-      into getdownWebsiteDir
+      into getdownAppBaseDir
     }
     getdownWebsiteResourceFilenames += file(channelPropsFile).getName()
 
@@ -1623,7 +1622,7 @@ task getdownWebsite() {
       if (s.exists()) {
         copy {
           from s
-          into "${getdownWebsiteDir}/${getdown_wrapper_script_dir}"
+          into "${getdownAppBaseDir}/${getdown_wrapper_script_dir}"
         }
         getdownTextLines += "resource = ${getdown_wrapper_script_dir}/${script}"
       }
@@ -1676,18 +1675,18 @@ task getdownWebsite() {
       getdownTextLines += "jvmarg = -Dgetdownappbase=${getdownAppBase}"
     }
 
-    def getdownTxt = file("${getdownWebsiteDir}/getdown.txt")
+    def getdownTxt = file("${getdownAppBaseDir}/getdown.txt")
     getdownTxt.write(getdownTextLines.join("\n"))
 
     getdownLaunchJvl = getdown_launch_jvl_name + ( (jvlChannelName != null && jvlChannelName.length() > 0)?"-${jvlChannelName}":"" ) + ".jvl"
-    def launchJvl = file("${getdownWebsiteDir}/${getdownLaunchJvl}")
+    def launchJvl = file("${getdownAppBaseDir}/${getdownLaunchJvl}")
     launchJvl.write("appbase=${getdownAppBase}")
 
     // files going into the getdown website dir: getdown-launcher.jar
     copy {
       from getdownLauncher
       rename(file(getdownLauncher).getName(), getdown_launcher_new)
-      into getdownWebsiteDir
+      into getdownAppBaseDir
     }
 
     // files going into the getdown website dir: getdown-launcher(-local).jar
@@ -1696,7 +1695,7 @@ task getdownWebsite() {
       if (file(getdownLauncher).getName() != getdown_launcher) {
         rename(file(getdownLauncher).getName(), getdown_launcher)
       }
-      into getdownWebsiteDir
+      into getdownAppBaseDir
     }
 
     // files going into the getdown website dir: ./install dir and files
@@ -1723,8 +1722,8 @@ task getdownWebsite() {
       from getdownTxt
       from launchJvl
       from getdownLauncher
-      from "${getdownWebsiteDir}/${getdown_build_properties}"
-      from "${getdownWebsiteDir}/${channel_props}"
+      from "${getdownAppBaseDir}/${getdown_build_properties}"
+      from "${getdownAppBaseDir}/${channel_props}"
       if (file(getdownLauncher).getName() != getdown_launcher) {
         rename(file(getdownLauncher).getName(), getdown_launcher)
       }
@@ -1741,7 +1740,7 @@ task getdownWebsite() {
   if (buildDist) {
     inputs.dir("${jalviewDir}/${package_dir}")
   }
-  outputs.dir(getdownWebsiteDir)
+  outputs.dir(getdownAppBaseDir)
   outputs.dir(getdownFilesDir)
 }
 
@@ -1772,9 +1771,9 @@ task getdownDigest(type: JavaExec) {
     classpath = files(getdownLauncher)
   }
   main = "com.threerings.getdown.tools.Digester"
-  args getdownWebsiteDir
-  inputs.dir(getdownWebsiteDir)
-  outputs.file("${getdownWebsiteDir}/digest2.txt")
+  args getdownAppBaseDir
+  inputs.dir(getdownAppBaseDir)
+  outputs.file("${getdownAppBaseDir}/digest2.txt")
 }
 
 
@@ -1784,7 +1783,7 @@ task getdown() {
   dependsOn getdownDigest
   doLast {
     if (reportRsyncCommand) {
-      def fromDir = getdownWebsiteDir + (getdownWebsiteDir.endsWith('/')?'':'/')
+      def fromDir = getdownAppBaseDir + (getdownAppBaseDir.endsWith('/')?'':'/')
       def toDir = "${getdown_rsync_dest}/${getdownDir}" + (getdownDir.endsWith('/')?'':'/')
       println "LIKELY RSYNC COMMAND:"
       println "mkdir -p '$toDir'\nrsync -avh --delete '$fromDir' '$toDir'"
@@ -1816,10 +1815,6 @@ task getdownArchiveBuild() {
   def archiveImagesDir = "${jalviewDir}/${channel_properties_dir}/old/images"
 
   doFirst {
-    if (getdownArchiveAppBase == null) {
-      throw new StopExecutionException("Cannot create getdownArchive for CHANNEL=${CHANNEL}")
-    }
-
     // cleanup old "old" dir
     delete getdownArchiveDir
 
@@ -1830,7 +1825,7 @@ task getdownArchiveBuild() {
 
     // the libdir
     copy {
-      from "${getdownWebsiteDir}/${getdownAppDistDir}"
+      from "${getdownAppBaseDir}/${getdownAppDistDir}"
       into "${getdownFullArchiveDir}/${vAltDir}"
     }
 
@@ -1870,9 +1865,9 @@ task getdownArchiveBuild() {
     // files going into the getdown files dir: getdown.txt, getdown-launcher.jar, channel-launch.jvl, build_properties
     copy {
       from getdownLauncher
-      from "${getdownWebsiteDir}/${getdownLaunchJvl}"
-      from "${getdownWebsiteDir}/${getdown_launcher_new}"
-      from "${getdownWebsiteDir}/${channel_props}"
+      from "${getdownAppBaseDir}/${getdownLaunchJvl}"
+      from "${getdownAppBaseDir}/${getdown_launcher_new}"
+      from "${getdownAppBaseDir}/${channel_props}"
       if (file(getdownLauncher).getName() != getdown_launcher) {
         rename(file(getdownLauncher).getName(), getdown_launcher)
       }
@@ -1912,7 +1907,7 @@ tasks.withType(JavaCompile) {
 
 clean {
   doFirst {
-    delete getdownWebsiteDir
+    delete getdownAppBaseDir
     delete getdownFilesDir
     delete getdownArchiveDir
   }
@@ -2081,7 +2076,7 @@ task installerFiles(type: com.install4j.gradle.Install4jTask) {
     'WRAPPER_SCRIPT_BIN_DIR': getdown_wrapper_script_dir,
     'INSTALLER_NAME': install4jInstallerName,
     'INSTALL4J_UTILS_DIR': install4j_utils_dir,
-    'GETDOWN_WEBSITE_DIR': getdown_website_dir,
+    'GETDOWN_CHANNEL_DIR': getdownChannelDir,
     'GETDOWN_FILES_DIR': getdown_files_dir,
     'GETDOWN_RESOURCE_DIR': getdown_resource_dir,
     'GETDOWN_DIST_DIR': getdownAppDistDir,
@@ -2130,7 +2125,7 @@ task installerFiles(type: com.install4j.gradle.Install4jTask) {
   }
   //verbose=true
 
-  inputs.dir(getdownWebsiteDir)
+  inputs.dir(getdownAppBaseDir)
   inputs.file(install4jConfFile)
   inputs.file("${install4jDir}/${install4j_info_plist_file_associations}")
   inputs.dir(macosJavaVMDir)
@@ -2142,72 +2137,62 @@ def getDataHash(File myFile) {
   HashCode hash = Files.asByteSource(myFile).hash(Hashing.sha256())
   return myFile.exists()
   ? [
-      "filename" : myFile.getName(),
+      "file" : myFile.getName(),
       "filesize" : myFile.length(),
       "sha256" : hash.toString()
     ]
   : null
 }
 
-def writeDataJsonFile(File installersOutputTxt, File installersSha256, File hugoDataJsonFile) {
-  if (!installersOutputTxt.exists()) {
-    throw new GradleException("Required input file '${installersOutputTxt.getPath()}' doesn't exist.")
-    return null;
-  }
-  if (install4jCheckSums && (!installersSha256)) {
-    throw new GradleException("Required input file '${installersSha256.getPath()}' doesn't exist.")
-    return null;
-  }
+def writeDataJsonFile(File installersOutputTxt, File installersSha256, File dataJsonFile) {
   def hash = [
     "channel" : getdownChannelName,
     "date" : getDate("yyyy-MM-dd HH:mm:ss"),
     "git-commit" : "${gitHash} [${gitBranch}]",
     "version" : JALVIEW_VERSION
   ]
-  def idHash = [:]
-  installersOutputTxt.readLines().each { def line ->
-    if (line.startsWith("#")) {
-      return;
-    }
-    line.replaceAll("\n","")
-    def vals = line.split("\t")
-    def filename = vals[3]
-    def filesize = file(filename).length()
-    filename = filename.replaceAll(/^.*\//, "")
-    hash[vals[0]] = [ "id" : vals[0], "os" : vals[1], "name" : vals[2], "file" : filename, "filesize" : filesize ]
-    idHash."${filename}" = vals[0]
-  }
-  if (install4jCheckSums) {
-    installersSha256.readLines().each { def line ->
+  // install4j installer files
+  if (installersOutputTxt.exists()) {
+    def idHash = [:]
+    installersOutputTxt.readLines().each { def line ->
       if (line.startsWith("#")) {
         return;
       }
       line.replaceAll("\n","")
-      def vals = line.split(/\s+\*?/)
-      def filename = vals[1]
-      def innerHash = (hash.(idHash."${filename}"))."sha256" = vals[0]
+      def vals = line.split("\t")
+      def filename = vals[3]
+      def filesize = file(filename).length()
+      filename = filename.replaceAll(/^.*\//, "")
+      hash[vals[0]] = [ "id" : vals[0], "os" : vals[1], "name" : vals[2], "file" : filename, "filesize" : filesize ]
+      idHash."${filename}" = vals[0]
+    }
+    if (install4jCheckSums && installersSha256.exists()) {
+      installersSha256.readLines().each { def line ->
+        if (line.startsWith("#")) {
+          return;
+        }
+        line.replaceAll("\n","")
+        def vals = line.split(/\s+\*?/)
+        def filename = vals[1]
+        def innerHash = (hash.(idHash."${filename}"))."sha256" = vals[0]
+      }
     }
   }
 
-  // executable JAR
-  def jarHash = getDataHash(file(shadowJar.archiveFile))
-  if (jarHash != null) {
-    hash."JAR" = jarHash;
-  }
-
-  // version JVL
-  def jvlHash =getDataHash(file(getdownVersionLaunchJvl))
-  if (jvlHash != null) {
-    hash."JVL" = jvlHash;
-  }
-
-  // source TGZ
-  def tarHash = getDataHash(file(sourceDist.archiveFile))
-  if (tarHash != null) {
-    hash."SOURCE" = tarHash;
+  [
+    "JAR": shadowJar.archiveFile, // executable JAR
+    "JVL": getdownVersionLaunchJvl, // version JVL
+    "SOURCE": sourceDist.archiveFile // source TGZ
+  ].each { key, value ->
+    def file = file(value)
+    if (file.exists()) {
+      def fileHash = getDataHash(file)
+      if (fileHash != null) {
+        hash."${key}" = fileHash;
+      }
+    }
   }
-
-  return hugoDataJsonFile.write(new JsonBuilder(hash).toPrettyString())
+  return dataJsonFile.write(new JsonBuilder(hash).toPrettyString())
 }
 
 task staticMakeInstallersJsonFile {
@@ -2332,7 +2317,9 @@ task sourceDist(type: Tar) {
     exclude ("utils/InstallAnywhere")
 
     exclude (getdown_files_dir)
-    exclude (getdown_website_dir)
+    // getdown_website_dir and getdown_archive_dir moved to build/website/docroot/getdown
+    //exclude (getdown_website_dir)
+    //exclude (getdown_archive_dir)
 
     // exluding these as not using jars as modules yet
     exclude ("${j11modDir}/**/*.jar")
@@ -2361,20 +2348,29 @@ task sourceDist(type: Tar) {
   }
 }
 
-task makeDataJsonFile {
-  dependsOn installerFiles
-  dependsOn sourceDist
-  dependsOn getdownArchive
-  dependsOn shadowJar
+task dataInstallersJson {
+  group "website"
+  description "Create the installers-VERSION.json data file for installer files created"
 
   def installersOutputTxt = file("${jalviewDir}/${install4jBuildDir}/output.txt")
   def installersSha256 = file("${jalviewDir}/${install4jBuildDir}/sha256sums")
-  def hugoDataJsonFile = file("${jalviewDir}/${hugo_build_dir}/data/installers-${JALVIEW_VERSION_UNDERSCORES}.json")
 
-  inputs.file(installersOutputTxt)
-  if (install4jCheckSums) {
+  if (installersOutputTxt.exists()) {
+    inputs.file(installersOutputTxt)
+  }
+  if (install4jCheckSums && installersSha256.exists()) {
     inputs.file(installersSha256)
   }
+  [
+    shadowJar.archiveFile, // executable JAR
+    getdownVersionLaunchJvl, // version JVL
+    sourceDist.archiveFile // source TGZ
+  ].each { fileName ->
+    if (file(fileName).exists()) {
+      inputs.file(fileName)
+    }
+  }
+
   outputs.file(hugoDataJsonFile)
 
   doFirst {
@@ -2382,6 +2378,12 @@ task makeDataJsonFile {
   }
 }
 
+dataInstallersJson.mustRunAfter installers
+dataInstallersJson.mustRunAfter shadowJar
+dataInstallersJson.mustRunAfter sourceDist
+dataInstallersJson.mustRunAfter getdownArchive
+
+
 task helppages {
   dependsOn copyHelp
   dependsOn pubhtmlhelp