JAL-3978 New tasks to build archive 'old' dir with appropriate getdown resources...
authorBen Soares <b.soares@dundee.ac.uk>
Fri, 18 Mar 2022 16:55:17 +0000 (16:55 +0000)
committerBen Soares <b.soares@dundee.ac.uk>
Fri, 18 Mar 2022 16:55:17 +0000 (16:55 +0000)
16 files changed:
.gitignore
build.gradle
gradle.properties
src/jalview/bin/Cache.java
src/jalview/util/ChannelProperties.java
utils/channels/default/resources/channel.props
utils/channels/develop/resources/channel.props
utils/channels/jalviewjs/resources/channel.props
utils/channels/old/images/jalview_archive_getdown_background.png [moved from utils/channels/archive/jalview_archive_getdown_background.png with 100% similarity]
utils/channels/old/images/jalview_archive_getdown_background.xcf [moved from utils/channels/archive/jalview_archive_getdown_background.xcf with 100% similarity]
utils/channels/old/images/jalview_archive_getdown_background_error.png [moved from utils/channels/archive/jalview_archive_getdown_background_error.png with 100% similarity]
utils/channels/old/images/jalview_archive_getdown_background_initialising.png [moved from utils/channels/archive/jalview_archive_getdown_background_initialising.png with 100% similarity]
utils/channels/old/images/jalview_archive_getdown_progress_bar.png [moved from utils/channels/archive/jalview_archive_getdown_progress_bar.png with 100% similarity]
utils/channels/old/images/jalview_logo.png [new file with mode: 0644]
utils/channels/release/resources/channel.props
utils/channels/test-release/resources/channel.props

index cd56818..b1e3609 100644 (file)
@@ -27,6 +27,7 @@ TESTNG
 /getdown/website
 /getdown/full_app
 /getdown/files
+/getdown/old
 /getdown/src/getdown/*/target/
 /getdown/src/getdown/core/src/main/java/com/threerings/getdown/data/Build.java
 /getdown/src/getdown/launcher/dependency-reduced-pom.xml
index cee3ed8..8bf9f78 100644 (file)
@@ -190,12 +190,17 @@ ext {
   testClassesDir = useClover ? cloverTestClassesDir : "${jalviewDir}/${test_output_dir}"
 
   getdownWebsiteDir = string("${jalviewDir}/${getdown_website_dir}/${JAVA_VERSION}")
+  getdownArchiveDir = string("${jalviewDir}/${getdown_archive_dir}")
+  getdownFullArchiveDir = null
+  getdownTextLines = []
+  getdownLaunchJvl = null
   buildDist = true
   buildProperties = null
 
   // the following values might be overridden by the CHANNEL switch
   getdownDir = string("${getdownChannelName}/${JAVA_VERSION}")
   getdownAppBase = string("${getdown_channel_base}/${getdownDir}")
+  getdownArchiveAppBase = null
   getdownLauncher = string("${jalviewDir}/${getdown_lib_dir}/${getdown_launcher}")
   getdownAppDistDir = getdown_app_dir_alt
   getdownImagesDir = string("${jalviewDir}/${getdown_images_dir}")
@@ -229,9 +234,11 @@ ext {
 
     case [ "RELEASE", "JALVIEWJS-RELEASE" ]:
     getdownAppDistDir = getdown_app_dir_release
+    getdownSetAppBaseProperty = true
     reportRsyncCommand = true
     install4jSuffix = ""
     install4jInstallerName = "${jalview_name} Installer"
+    getdownArchiveAppBase = getdown_archive_base
     break
 
     case "ARCHIVE":
@@ -279,6 +286,7 @@ ext {
 
     case "TEST-RELEASE":
     reportRsyncCommand = true
+    getdownSetAppBaseProperty = true
     // Don't ignore transpile errors for release build
     if (jalviewjs_ignore_transpile_errors.equals("true")) {
       jalviewjs_ignore_transpile_errors = "false"
@@ -316,6 +324,7 @@ ext {
     case [ "LOCAL", "JALVIEWJS" ]:
     JALVIEW_VERSION = "TEST"
     getdownAppBase = file(getdownWebsiteDir).toURI().toString()
+    getdownArchiveAppBase = file("${jalviewDir}/${getdown_archive_dir}").toURI().toString()
     getdownLauncher = string("${jalviewDir}/${getdown_lib_dir}/${getdown_launcher_local}")
     install4jExtraScheme = "jalviewl"
     break
@@ -325,6 +334,7 @@ ext {
     break
 
   }
+  JALVIEW_VERSION_UNDERSCORES = JALVIEW_VERSION.replaceAll("\\.", "_")
   // override getdownAppBase if requested
   if (findProperty("getdown_appbase_override") != null) {
     // revert to LOCAL if empty string
@@ -1496,7 +1506,6 @@ task getdownWebsite() {
   }
 
   def getdownWebsiteResourceFilenames = []
-  def getdownTextString = ""
   def getdownResourceDir = getdownResourceDir
   def getdownResourceFilenames = []
 
@@ -1518,7 +1527,7 @@ task getdownWebsite() {
     }
     getdownWebsiteResourceFilenames += file(channelPropsFile).getName()
 
-    // set some getdown_txt_ properties then go through all properties looking for getdown_txt_...
+    // set some getdownTxt_ properties then go through all properties looking for getdownTxt_...
     def props = project.properties.sort { it.key }
     if (getdownAltJavaMinVersion != null && getdownAltJavaMinVersion.length() > 0) {
       props.put("getdown_txt_java_min_version", getdownAltJavaMinVersion)
@@ -1542,14 +1551,14 @@ task getdownWebsite() {
     props.put("getdown_txt_ui.name", install4jApplicationName)
 
     // start with appbase
-    getdownTextString += "appbase = ${getdownAppBase}\n"
+    getdownTextLines += "appbase = ${getdownAppBase}"
     props.each{ prop, val ->
       if (prop.startsWith("getdown_txt_") && val != null) {
         if (prop.startsWith("getdown_txt_multi_")) {
           def key = prop.substring(18)
           val.split(",").each{ v ->
-            def line = "${key} = ${v}\n"
-            getdownTextString += line
+            def line = "${key} = ${v}"
+            getdownTextLines += line
           }
         } else {
           // file values rationalised
@@ -1569,15 +1578,15 @@ task getdownWebsite() {
             }
           }
           if (! prop.startsWith("getdown_txt_resource")) {
-            def line = prop.substring(12) + " = ${val}\n"
-            getdownTextString += line
+            def line = prop.substring(12) + " = ${val}"
+            getdownTextLines += line
           }
         }
       }
     }
 
     getdownWebsiteResourceFilenames.each{ filename ->
-      getdownTextString += "resource = ${filename}\n"
+      getdownTextLines += "resource = ${filename}"
     }
     getdownResourceFilenames.each{ filename ->
       copy {
@@ -1594,7 +1603,7 @@ task getdownWebsite() {
           from s
           into "${getdownWebsiteDir}/${getdown_wrapper_script_dir}"
         }
-        getdownTextString += "resource = ${getdown_wrapper_script_dir}/${script}\n"
+        getdownTextLines += "resource = ${getdown_wrapper_script_dir}/${script}"
       }
     }
 
@@ -1611,8 +1620,8 @@ task getdownWebsite() {
     // put jalview.jar first for CLASSPATH and .properties files reasons
     codeFiles.sort{a, b -> ( a.getName() == jalviewJar ? -1 : ( b.getName() == jalviewJar ? 1 : a <=> b ) ) }.each{f ->
       def name = f.getName()
-      def line = "code = ${getdownAppDistDir}/${name}\n"
-      getdownTextString += line
+      def line = "code = ${getdownAppDistDir}/${name}"
+      getdownTextLines += line
       copy {
         from f.getPath()
         into getdownAppDir
@@ -1625,8 +1634,8 @@ task getdownWebsite() {
     def j11libFiles = fileTree(dir: "${jalviewDir}/${j11libDir}", include: ["*.jar"]).getFiles()
     j11libFiles.sort().each{f ->
     def name = f.getName()
-    def line = "code = ${getdown_j11lib_dir}/${name}\n"
-    getdownTextString += line
+    def line = "code = ${getdown_j11lib_dir}/${name}"
+    getdownTextLines += line
     copy {
     from f.getPath()
     into getdownJ11libDir
@@ -1636,19 +1645,19 @@ task getdownWebsite() {
      */
 
     // getdown-launcher.jar should not be in main application class path so the main application can move it when updated.  Listed as a resource so it gets updated.
-    //getdownTextString += "class = " + file(getdownLauncher).getName() + "\n"
-    getdownTextString += "resource = ${getdown_launcher_new}\n"
-    getdownTextString += "class = ${main_class}\n"
+    //getdownTextLines += "class = " + file(getdownLauncher).getName()
+    getdownTextLines += "resource = ${getdown_launcher_new}"
+    getdownTextLines += "class = ${main_class}"
     // Not setting these properties in general so that getdownappbase and getdowndistdir will default to release version in jalview.bin.Cache
     if (getdownSetAppBaseProperty) {
-      getdownTextString += "jvmarg = -Dgetdowndistdir=${getdownAppDistDir}\n"
-      getdownTextString += "jvmarg = -Dgetdownappbase=${getdownAppBase}\n"
+      getdownTextLines += "jvmarg = -Dgetdowndistdir=${getdownAppDistDir}"
+      getdownTextLines += "jvmarg = -Dgetdownappbase=${getdownAppBase}"
     }
 
-    def getdown_txt = file("${getdownWebsiteDir}/getdown.txt")
-    getdown_txt.write(getdownTextString)
+    def getdownTxt = file("${getdownWebsiteDir}/getdown.txt")
+    getdownTxt.write(getdownTextLines.join("\n"))
 
-    def getdownLaunchJvl = getdown_launch_jvl_name + ( (jvlChannelName != null && jvlChannelName.length() > 0)?"-${jvlChannelName}":"" ) + ".jvl"
+    getdownLaunchJvl = getdown_launch_jvl_name + ( (jvlChannelName != null && jvlChannelName.length() > 0)?"-${jvlChannelName}":"" ) + ".jvl"
     def launchJvl = file("${getdownWebsiteDir}/${getdownLaunchJvl}")
     launchJvl.write("appbase=${getdownAppBase}")
 
@@ -1671,7 +1680,7 @@ task getdownWebsite() {
     // files going into the getdown website dir: ./install dir and files
     if (! (CHANNEL.startsWith("ARCHIVE") || CHANNEL.startsWith("DEVELOP"))) {
       copy {
-        from getdown_txt
+        from getdownTxt
         from getdownLauncher
         from "${getdownAppDir}/${getdown_build_properties}"
         if (file(getdownLauncher).getName() != getdown_launcher) {
@@ -1689,7 +1698,7 @@ task getdownWebsite() {
 
     // files going into the getdown files dir: getdown.txt, getdown-launcher.jar, channel-launch.jvl, build_properties
     copy {
-      from getdown_txt
+      from getdownTxt
       from launchJvl
       from getdownLauncher
       from "${getdownWebsiteDir}/${getdown_build_properties}"
@@ -1700,7 +1709,7 @@ task getdownWebsite() {
       into getdownFilesDir
     }
 
-    // and ./resources (not all downloaded by getdown)
+    // and ./resource (not all downloaded by getdown)
     copy {
       from getdownResourceDir
       into "${getdownFilesDir}/${getdown_resource_dir}"
@@ -1770,16 +1779,108 @@ task getdown() {
 }
 
 
-task getdownArchive() {
+task getdownArchiveBuild() {
   group = "distribution"
-  description = "Create the archive dir to go on the website"
+  description = "Put files in the archive dir to go on the website"
 
   dependsOn getdownWebsite
 
+  def v = "v${JALVIEW_VERSION_UNDERSCORES}"
+  def vDir = "${getdownArchiveDir}/${v}"
+  getdownFullArchiveDir = "${vDir}/getdown"
+  def vLaunchVersionJvl = "${vDir}/jalview-${v}.jvl"
+  def vAltDir = "alt_${v}"
+  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
+
+    def getdownArchiveTxt = file("${getdownFullArchiveDir}/getdown.txt")
+    getdownArchiveTxt.getParentFile().mkdirs()
+    def getdownArchiveTextLines = []
+    def getdownFullArchiveAppBase = "${getdownArchiveAppBase}${getdownArchiveAppBase.endsWith("/")?"":"/"}${v}/getdown/"
+
+    // the libdir
+    copy {
+      from "${getdownWebsiteDir}/${getdownAppDistDir}"
+      into "${getdownFullArchiveDir}/${vAltDir}"
+    }
+
+    getdownTextLines.each { line ->
+      line = line.replaceAll("^(?<s>appbase\\s*=\\s*).*", '${s}'+getdownFullArchiveAppBase)
+      line = line.replaceAll("^(?<s>(resource|code)\\s*=\\s*)${getdownAppDistDir}/", '${s}'+vAltDir+"/")
+      line = line.replaceAll("^(?<s>ui.background_image\\s*=\\s*).*\\.png", '${s}'+"${getdown_resource_dir}/jalview_archive_getdown_background.png")
+      line = line.replaceAll("^(?<s>ui.instant_background_image\\s*=\\s*).*\\.png", '${s}'+"${getdown_resource_dir}/jalview_archive_getdown_background_initialising.png")
+      line = line.replaceAll("^(?<s>ui.error_background\\s*=\\s*).*\\.png", '${s}'+"${getdown_resource_dir}/jalview_archive_getdown_background_error.png")
+      line = line.replaceAll("^(?<s>ui.progress_image\\s*=\\s*).*\\.png", '${s}'+"${getdown_resource_dir}/jalview_archive_getdown_progress_bar.png")
+      // remove the existing resource = resource/ or bin/ lines
+      if (! line.matches("resource\\s*=\\s*(resource|bin)/.*")) {
+        getdownArchiveTextLines += line
+      }
+    }
+
+    // the resource dir -- add these files as resource lines in getdown.txt
+    copy {
+      from "${archiveImagesDir}"
+      into "${getdownFullArchiveDir}/${getdown_resource_dir}"
+      eachFile { file ->
+        getdownArchiveTextLines += "resource = ${getdown_resource_dir}/${file.getName()}"
+      }
+    }
+
+    getdownArchiveTxt.write(getdownArchiveTextLines.join("\n"))
+
+    def vLaunchJvl = file(vLaunchVersionJvl)
+    vLaunchJvl.getParentFile().mkdirs()
+    vLaunchJvl.write("appbase=${getdownFullArchiveAppBase}\n")
+    def vLaunchJvlPath = vLaunchJvl.toPath().toAbsolutePath()
+    def jvlLinkPath = file("${vDir}/jalview.jvl").toPath().toAbsolutePath()
+    // for some reason filepath.relativize(fileInSameDirPath) gives a path to "../" which is wrong
+    //java.nio.file.Files.createSymbolicLink(jvlLinkPath, jvlLinkPath.relativize(vLaunchJvlPath));
+    java.nio.file.Files.createSymbolicLink(jvlLinkPath, java.nio.file.Paths.get(".",vLaunchJvl.getName()));
+
+    // 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}"
+      if (file(getdownLauncher).getName() != getdown_launcher) {
+        rename(file(getdownLauncher).getName(), getdown_launcher)
+      }
+      into getdownFullArchiveDir
+    }
+
+  }
+}
+
+task getdownArchiveDigest(type: JavaExec) {
+  group = "distribution"
+  description = "Digest the getdown archive folder"
+
+  dependsOn getdownArchiveBuild
+
   doFirst {
+    classpath = files(getdownLauncher)
+    args getdownFullArchiveDir
   }
+  main = "com.threerings.getdown.tools.Digester"
+  inputs.dir(getdownFullArchiveDir)
+  outputs.file("${getdownFullArchiveDir}/digest2.txt")
 }
 
+task getdownArchive() {
+  group = "distribution"
+  description = "Build the website archive dir with getdown digest"
+
+  dependsOn getdownArchiveBuild
+  dependsOn getdownArchiveDigest
+}
 
 tasks.withType(JavaCompile) {
        options.encoding = 'UTF-8'
@@ -1790,6 +1891,7 @@ clean {
   doFirst {
     delete getdownWebsiteDir
     delete getdownFilesDir
+    delete getdownArchiveDir
   }
 }
 
@@ -2023,8 +2125,7 @@ task sourceDist(type: Tar) {
   dependsOn createBuildProperties
   dependsOn convertMdFiles
 
-  def VERSION_UNDERSCORES = JALVIEW_VERSION.replaceAll("\\.", "_")
-  def outputFileName = "${project.name}_${VERSION_UNDERSCORES}.tar.gz"
+  def outputFileName = "${project.name}_${JALVIEW_VERSION_UNDERSCORES}.tar.gz"
   archiveFileName = outputFileName
   
   compression Compression.GZIP
index ae8e8ac..fb925b5 100644 (file)
@@ -60,6 +60,7 @@ jalview_name = Jalview
 
 getdown_local = false
 getdown_website_dir = getdown/website
+getdown_archive_dir = getdown/old
 getdown_resource_dir = resource
 getdown_files_dir = getdown/files
 getdown_lib_dir = getdown/lib
@@ -148,6 +149,7 @@ OSX_ALTOOLPASS =
 
 CHANNEL=LOCAL
 getdown_channel_base = https://www.jalview.org/getdown
+getdown_archive_base = https://www.jalview.org/old
 getdown_app_dir_release = release
 getdown_app_dir_alt = alt
 getdown_app_dir_java = jre
index ac8a183..22a6b69 100755 (executable)
@@ -42,7 +42,6 @@ import java.util.Locale;
 import java.util.Properties;
 import java.util.StringTokenizer;
 import java.util.TreeSet;
-import java.util.regex.Pattern;
 
 import javax.swing.LookAndFeel;
 import javax.swing.UIManager;
@@ -1154,8 +1153,11 @@ public class Cache
     {
       return;
     }
-    String line = prefix + (value != null ? value : defaultValue) + suffix;
-    sb.append(line);
+    if (prefix != null)
+      sb.append(prefix);
+    sb.append(value == null ? defaultValue : value);
+    if (suffix != null)
+      sb.append(suffix);
   }
 
   /**
@@ -1199,11 +1201,11 @@ public class Cache
     sb.append(" (");
     sb.append(lafClass);
     sb.append(")\n");
-    // Not displayed in release version ( determined by possible version number
-    // regex 9[9.]*9[.-_a9]* )
-    if (Pattern.matches("^\\d[\\d\\.]*\\d[\\.\\-\\w]*$",
-            Cache.getDefault("VERSION", "TEST")))
+    if (Console.isDebugEnabled()
+            || !"release".equals(ChannelProperties.getProperty("channel")))
     {
+      appendIfNotNull(sb, "Channel: ",
+              ChannelProperties.getProperty("channel"), "\n", null);
       appendIfNotNull(sb, "Getdown appdir: ",
               System.getProperty("getdownappdir"), "\n", null);
       appendIfNotNull(sb, "Getdown appbase: ",
index 50d6fc6..4832588 100644 (file)
@@ -77,6 +77,7 @@ public class ChannelProperties
     defaultProps.put("default_appbase",
             "https://www.jalview.org/getdown/release/1.8");
     defaultProps.put("preferences.filename", ".jalview_properties");
+    defaultProps.put("channel", "none");
 
     // load channel_properties
     Properties tryChannelProps = new Properties();
index 15b162f..2b2672a 100644 (file)
@@ -17,3 +17,4 @@ uod_banner.30=/images/UoD_banner-30.png
 uod_banner.32=/images/UoD_banner-32.png
 default_appbase=https://www.jalview.org/getdown/release/1.8
 preferences.filename=.jalview_nonrelease_properties
+channel=default
index 8af68fa..a3d2350 100644 (file)
@@ -17,3 +17,4 @@ uod_banner.30=/images/UoD_banner-30.png
 uod_banner.32=/images/UoD_banner-32.png
 default_appbase=https://www.jalview.org/getdown/develop/11
 preferences.filename=.jalview_develop_properties
+channel=develop
index 8195dc8..af989f5 100644 (file)
@@ -17,3 +17,4 @@ uod_banner.30=/images/UoD_banner-30.png
 uod_banner.32=/images/UoD_banner-32.png
 default_appbase=https://www.jalview.org/getdown/release/1.8
 preferences.filename=.jalview_properties
+channel=jalviewjs
diff --git a/utils/channels/old/images/jalview_logo.png b/utils/channels/old/images/jalview_logo.png
new file mode 100644 (file)
index 0000000..74bafbe
Binary files /dev/null and b/utils/channels/old/images/jalview_logo.png differ
index abdfd3f..4866099 100644 (file)
@@ -17,3 +17,4 @@ uod_banner.30=/images/UoD_banner-30.png
 uod_banner.32=/images/UoD_banner-32.png
 default_appbase=https://www.jalview.org/getdown/release/1.8
 preferences.filename=.jalview_properties
+channel=release
index e337bf8..bd538dc 100644 (file)
@@ -17,3 +17,4 @@ uod_banner.30=/images/UoD_banner-30.png
 uod_banner.32=/images/UoD_banner-32.png
 default_appbase=https://www.jalview.org/getdown/test-release/1.8
 preferences.filename=.jalview_test_properties
+channel=test-release