JAL-3594 New way for build.gradle to override properties with channel based propertie...
[jalview.git] / build.gradle
index f9d2974..bdc50d0 100644 (file)
@@ -57,24 +57,12 @@ def string(Object o) {
   return o == null ? "" : o.toString()
 }
 
-
-ext {
-  jalviewDirAbsolutePath = file(jalviewDir).getAbsolutePath()
-  jalviewDirRelativePath = jalviewDir
-
-  // local build environment properties
-  // can be "projectDir/local.properties"
-  def localProps = "${projectDir}/local.properties"
-  def propsFile = null;
-  if (file(localProps).exists()) {
-    propsFile = localProps
-  }
-  // or "../projectDir_local.properties"
-  def dirLocalProps = projectDir.getParent() + "/" + projectDir.getName() + "_local.properties"
-  if (file(dirLocalProps).exists()) {
-    propsFile = dirLocalProps
+def overrideProperties(def propsFileName) {
+  if (propsFileName == null) {
+    return
   }
-  if (propsFile != null) {
+  def propsFile = file(propsFileName)
+  if (propsFile != null && propsFile.exists()) {
     try {
       def p = new Properties()
       def localPropsFIS = new FileInputStream(propsFile)
@@ -82,18 +70,40 @@ ext {
       localPropsFIS.close()
       p.each {
         key, val -> 
-          def oldval = findProperty(key)
-          setProperty(key, val)
-          if (oldval != null) {
+          def oldval
+          if (project.hasProperty(key)) {
+            oldval = project.findProperty(key)
+            project.setProperty(key, val)
             println("Overriding property '${key}' ('${oldval}') with ${file(propsFile).getName()} value '${val}'")
           } else {
-            println("Setting unknown property '${key}' with ${file(propsFile).getName()}s value '${val}'")
+            ext.setProperty(key, val)
+            println("Setting ext property '${key}' with ${file(propsFile).getName()}s value '${val}'")
           }
+          //true
       }
     } catch (Exception e) {
-      System.out.println("Exception reading local.properties")
+      println("Exception reading local.properties")
+      e.printStackTrace()
     }
   }
+}
+
+ext {
+  jalviewDirAbsolutePath = file(jalviewDir).getAbsolutePath()
+  jalviewDirRelativePath = jalviewDir
+
+  getdownChannelName = CHANNEL.toLowerCase()
+  // default to "release". Currently only has different cosmetics for "develop", "release"
+  propertiesChannelName = getdownChannelName == "develop" ? getdownChannelName : "release"
+  // Import channel_properties
+  channelDir = string("${jalviewDir}/${channel_properties_dir}/${propertiesChannelName}")
+  channelGradleProperties = string("${channelDir}/channel_gradle.properties")
+  overrideProperties(channelGradleProperties)
+  // local build environment properties
+  // can be "projectDir/local.properties"
+  overrideProperties("${projectDir}/local.properties")
+  // or "../projectDir_local.properties"
+  overrideProperties(projectDir.getParent() + "/" + projectDir.getName() + "_local.properties")
 
   ////  
   // Import releaseProps from the RELEASE file
@@ -172,19 +182,14 @@ ext {
 
   getdownWebsiteDir = string("${jalviewDir}/${getdown_website_dir}/${JAVA_VERSION}")
   buildDist = true
+  buildProperties = null
 
   // the following values might be overridden by the CHANNEL switch
-  channelPropertiesFile = string("${channel_properties_dir}/release_properties")
-  getdownChannelName = CHANNEL.toLowerCase()
   getdownDir = string("${getdownChannelName}/${JAVA_VERSION}")
   getdownAppBase = string("${getdown_channel_base}/${getdownDir}")
   getdownLauncher = string("${jalviewDir}/${getdown_lib_dir}/${getdown_launcher}")
   getdownAppDistDir = getdown_app_dir_alt
-  buildProperties = string("${resourceDir}/${build_properties_file}")
-  getdownImagesDir = getdown_images_dir
-  getdownBgColour = "FFFFFF"
-  getdownFgColour = "000000"
-  getdownLightFgColour = "000066"
+  getdownImagesDir = string("${jalviewDir}/${getdown_images_dir}")
   reportRsyncCommand = false
   jvlChannelName = CHANNEL.toLowerCase()
   install4jSuffix = CHANNEL.substring(0, 1).toUpperCase() + CHANNEL.substring(1).toLowerCase(); // BUILD -> Build
@@ -193,9 +198,9 @@ ext {
   install4jInstallerName = "${jalview_name} Non-Release Installer"
   install4jExecutableName = jalview_name.replaceAll("[^\\w]+", "_").toLowerCase()
   install4jExtraScheme = "jalviewx"
-  install4jMacIconsFile = string("${install4j_utils_dir}/${install4j_mac_icons_file}")
-  install4jWindowsIconsFile = string("${install4j_utils_dir}/${install4j_windows_icons_file}")
-  install4jPngIconFile = string("${install4j_utils_dir}/${install4j_png_icon_file}")
+  install4jMacIconsFile = string("${install4j_images_dir}/${install4j_mac_icons_file}")
+  install4jWindowsIconsFile = string("${install4j_images_dir}/${install4j_windows_icons_file}")
+  install4jPngIconFile = string("${install4j_images_dir}/${install4j_png_icon_file}")
   switch (CHANNEL) {
 
     case "BUILD":
@@ -258,19 +263,11 @@ ext {
     // DEVELOP-RELEASE is usually associated with a Jalview release series so set the version
     JALVIEW_VERSION=JALVIEW_VERSION+"-develop"
     
-    channelPropertiesFile = string("${channel_properties_dir}/develop_properties")
-    getdownImagesDir = "${getdown_images_dir}/develop"
-    getdownBgColour = "000000"
-    getdownFgColour = "FFFFFF"
-    getdownLightFgColour = "CCCCFF"
     install4jSuffix = "Develop"
     install4jDSStore = "DS_Store-DEVELOP"
     install4jDMGBackgroundImage = "jalview_dmg_background-DEVELOP.png"
     install4jExtraScheme = "jalviewd"
     install4jInstallerName = "${jalview_name} Develop Installer"
-    install4jMacIconsFile = string("${install4j_utils_dir}/develop/${install4j_mac_icons_file}")
-    install4jWindowsIconsFile = string("${install4j_utils_dir}/develop/${install4j_windows_icons_file}")
-    install4jPngIconFile = string("${install4j_utils_dir}/develop/${install4j_png_icon_file}")
     break
 
     case "TEST-RELEASE":
@@ -327,7 +324,13 @@ ext {
   }
   // override getdownAppBase if requested
   if (findProperty("getdown_appbase_override") != null) {
-    getdownAppBase = string(getProperty("getdown_appbase_override"))
+    // revert to LOCAL if empty string
+    if (string(getdown_appbase_override) == "") {
+      getdownAppBase = file(getdownWebsiteDir).toURI().toString()
+      getdownLauncher = string("${jalviewDir}/${getdown_lib_dir}/${getdown_launcher_local}")
+    } else {
+      getdownAppBase = string(getdown_appbase_override)
+    }
     println("Overriding getdown appbase with '${getdownAppBase}'")
   }
   // sanitise file name for jalview launcher file for this channel
@@ -458,7 +461,9 @@ ext {
   helpBuildDir = string("${resourceBuildDir}/help_build")
   docBuildDir = string("${resourceBuildDir}/doc_build")
 
-  buildProperties = string("${resourcesBuildDir}/${build_properties_file}")
+  if (buildProperties == null) {
+    buildProperties = string("${resourcesBuildDir}/${build_properties_file}")
+  }
   buildingHTML = string("${jalviewDir}/${doc_dir}/building.html")
   helpParentDir = string("${jalviewDir}/${help_parent_dir}")
   helpSourceDir = string("${helpParentDir}/${help_dir}")
@@ -1186,6 +1191,9 @@ task copyHelp(type: Copy) {
 
 
 task copyResources(type: Copy) {
+  group = "build"
+  description = "Copy (and make text substitutions in) the resources dir to the build area"
+
   def inputDir = resourceDir
   def outputDir = resourcesBuildDir
   from(inputDir) {
@@ -1213,11 +1221,19 @@ task copyResources(type: Copy) {
   inputs.dir(inputDir)
   outputs.dir(outputDir)
 }
-task copyChannelProperties(type: Copy) {
-  def propsFile = file(channelPropertiesFile)
-  rename(propsFile.getName(), "channel_properties")
-  from channelPropertiesFile
-  into resourceDir
+
+task copyChannelResources(type: Copy) {
+  dependsOn copyResources
+  group = "build"
+  description = "Copy the channel resources dir to the build resources area"
+
+  def inputDir = "${channelDir}/${resource_dir}"
+  def outputDir = resourcesBuildDir
+  from inputDir
+  into outputDir
+
+  inputs.dir(inputDir)
+  outputs.dir(outputDir)
 }
 
 task createBuildProperties(type: WriteProperties) {
@@ -1262,6 +1278,7 @@ task prepare {
   dependsOn copyDocs
   dependsOn copyHelp
   dependsOn createBuildProperties
+  dependsOn copyChannelResources
   dependsOn convertMdFiles
   dependsOn buildIndices
 }
@@ -1487,9 +1504,6 @@ task getdownWebsite() {
       props.put("getdown_txt_ui.progress_image", "${getdownImagesDir}/${getdown_progress_image}")
       props.put("getdown_txt_ui.icon", "${getdownImagesDir}/${getdown_icon}")
       props.put("getdown_txt_ui.mac_dock_icon", "${getdownImagesDir}/${getdown_mac_dock_icon}")
-      props.put("getdown_txt_ui.background", getdownBgColour)
-      props.put("getdown_txt_ui.progress_text", getdownFgColour)
-      props.put("getdown_txt_ui.status_text", getdownLightFgColour)
     }
 
     props.put("getdown_txt_title", jalview_name)