Merge branch 'Jalview-JS/develop' into Jalview-JS/develop_with_gradle_build
[jalview.git] / build.gradle
index d45afa4..2682208 100644 (file)
@@ -22,17 +22,21 @@ plugins {
 // local build environment properties
 def localProps = "${jalviewDir}/local.properties"
 if (file(localProps).exists()) {
-  def p = new Properties()
-  def localPropsFIS = new FileInputStream(localProps)
-  p.load(localPropsFIS)
-  localPropsFIS.close()
-  p.each {
-    key, val -> 
-      def over = getProperty(key) != null
-      setProperty(key, val)
-      if (over) {
-        println("Overriding property '${key}' with local.properties value '${val}'")
-      }
+  try {
+    def p = new Properties()
+    def localPropsFIS = new FileInputStream(localProps)
+    p.load(localPropsFIS)
+    localPropsFIS.close()
+    p.each {
+      key, val -> 
+        def over = getProperty(key) != null
+        setProperty(key, val)
+        if (over) {
+          println("Overriding property '${key}' with local.properties value '${val}'")
+        }
+    }
+  } catch (Exception e) {
+    System.out.println("Exception reading local.properties")
   }
 }
 
@@ -441,6 +445,9 @@ eclipse {
     }
 
   } // jdt
+  
+  synchronizationTasks "eclipseSynchronizationTask"
+  autoBuildTasks "eclipseAutoBuildTask"
 
 }
 
@@ -1267,12 +1274,14 @@ task helppages  {
 
 def jalviewjsBuildDir
 def jalviewjsSiteDir
-def jalviewjsTransferSiteDir
+def jalviewjsTransferSiteJSDir
+def jalviewjsTransferSiteLibDir
 task jalviewjsSitePath {
   def relativeBuildDir = file(jalviewDirAbsolutePath).toPath().relativize(buildDir.toPath())
   jalviewjsBuildDir = "${relativeBuildDir}/jalviewjs"
   jalviewjsSiteDir = "${jalviewjsBuildDir}/${jalviewjs_site_dir}"
-  jalviewjsTransferSiteDir = "${jalviewjsBuildDir}/tmp/site"
+  jalviewjsTransferSiteJSDir = "${jalviewjsBuildDir}/tmp/${jalviewjs_site_dir}_js"
+  jalviewjsTransferSiteLibDir = "${jalviewjsBuildDir}/tmp/${jalviewjs_site_dir}_lib"
 }
 
 def eclipseWorkspace
@@ -1451,7 +1460,8 @@ y
 jalviewjsEclipseCopyDropins.finalizedBy jalviewjsCleanEclipse
 */
 
-task jalviewjsUnzipFiles {
+def jalviewjsTransferSiteUnzipDir
+task jalviewjsTransferUnzipLib {
   dependsOn jalviewjsSitePath
 
   def zipFiles = fileTree(dir: "${jalviewDir}/${jalviewjs_libjs_dir}", include: "*.zip")
@@ -1461,17 +1471,21 @@ task jalviewjsUnzipFiles {
     zipFiles.each { file_zip -> 
       copy {
         from zipTree(file_zip)
-        into "${jalviewDir}/${jalviewjsSiteDir}"
+        into "${jalviewDir}/${jalviewjsTransferSiteLibDir}"
       }
     }
   }
 
   inputs.files zipFiles
-  outputs.dir "${jalviewDir}/${jalviewjsSiteDir}"
+  outputs.dir "${jalviewDir}/${jalviewjsTransferSiteLibDir}"
 }
 
 task jalviewjsCreateJ2sSettings(type: WriteProperties) {
+  group "JalviewJS"
+  description "Create the .j2s file from the j2s.* properties"
+
   dependsOn jalviewjsSitePath
+
   outputFile ("${jalviewDir}/${jalviewjs_j2s_settings}")
   def j2s_props = project.properties.findAll { it.key.startsWith("j2s.") }.sort { it.key }
   def siteDirProperty = "j2s.site.directory"
@@ -1480,14 +1494,14 @@ task jalviewjsCreateJ2sSettings(type: WriteProperties) {
     if (val != null) {
       if (prop == siteDirProperty) {
         if (!(val.startsWith('/') || val.startsWith("file://") )) {
-          val = "${jalviewDir}/${jalviewjsTransferSiteDir}/${val}"
+          val = "${jalviewDir}/${jalviewjsTransferSiteJSDir}/${val}"
         }
         setSiteDir = true
       }
       property(prop,val)
     }
     if (!setSiteDir) { // default site location, don't override specifically set property
-      property(siteDirProperty,"${jalviewDir}/${jalviewjsTransferSiteDir}")
+      property(siteDirProperty,"${jalviewDir}/${jalviewjsTransferSiteJSDir}")
     }
   }
   inputs.properties(j2s_props)
@@ -1500,7 +1514,27 @@ task jalviewjsEclipseSetup {
   dependsOn jalviewjsCreateJ2sSettings
 }
 
-task jalviewjsCopyResources (type: Sync) {
+task jalviewjsSyncLib (type: Sync) {
+  dependsOn jalviewjsSitePath
+  dependsOn jalviewjsTransferUnzipLib
+  def inputFiles = fileTree(dir: "${jalviewDir}/${jalviewjsTransferSiteLibDir}")
+  def outputDir = "${jalviewDir}/${jalviewjsSiteDir}"
+
+  from inputFiles
+  into outputDir
+  def outputFiles = []
+  rename { filename ->
+    outputFiles += "${outputDir}/${filename}"
+    null
+  }
+  preserve {
+    include "**"
+  }
+  outputs.files outputFiles
+  inputs.files inputFiles
+}
+
+task jalviewjsSyncResources (type: Sync) {
   dependsOn jalviewjsSitePath
   def inputFiles = fileTree(dir: "${jalviewDir}/${resourceDir}")
   def outputDir = "${jalviewDir}/${jalviewjsSiteDir}/${jalviewjs_j2s_subdir}"
@@ -1519,7 +1553,7 @@ task jalviewjsCopyResources (type: Sync) {
   inputs.files inputFiles
 }
 
-task jalviewjsCopySiteResources (type: Sync) {
+task jalviewjsSyncSiteResources (type: Sync) {
   dependsOn jalviewjsSitePath
   def inputFiles = fileTree(dir: "${jalviewDir}/${jalviewjs_site_resource_dir}")
   def outputDir = "${jalviewDir}/${jalviewjsSiteDir}"
@@ -1620,27 +1654,40 @@ DEBUG: ${eclipseDebug}
   }
 
   inputs.dir("${jalviewDir}/${sourceDir}")
-  outputs.dir("${jalviewDir}/${jalviewjsTransferSiteDir}")
-  outputs.upToDateWhen( { file("${jalviewDir}/${jalviewjsTransferSiteDir}${jalviewjs_server_resource}").exists() } )
+  outputs.dir("${jalviewDir}/${jalviewjsTransferSiteJSDir}")
+  outputs.upToDateWhen( { file("${jalviewDir}/${jalviewjsTransferSiteJSDir}${jalviewjs_server_resource}").exists() } )
 }
 
 task jalviewjsCopyTransferSite(type: Copy) {
   dependsOn jalviewjsTranspile
-  from "${jalviewDir}/${jalviewjsTransferSiteDir}"
+  from "${jalviewDir}/${jalviewjsTransferSiteJSDir}"
   into "${jalviewDir}/${jalviewjsSiteDir}"
 }
 
-jalviewjsUnzipFiles.mustRunAfter jalviewjsCopyTransferSite
-jalviewjsCopyResources.mustRunAfter jalviewjsCopyTransferSite
-jalviewjsCopySiteResources.mustRunAfter jalviewjsCopyTransferSite
+// this Sync version is used by buildship to keep the website automatically up to date when a file changes
+task jalviewjsSyncTransferSite(type: Sync) {
+  from "${jalviewDir}/${jalviewjsTransferSiteJSDir}"
+  include "**/*.*"
+  into "${jalviewDir}/${jalviewjsSiteDir}"
+  preserve {
+    include "**"
+  }
+}
+
+jalviewjsSyncLib.mustRunAfter jalviewjsCopyTransferSite
+jalviewjsSyncResources.mustRunAfter jalviewjsCopyTransferSite
+jalviewjsSyncSiteResources.mustRunAfter jalviewjsCopyTransferSite
+
+jalviewjsSyncLib.mustRunAfter jalviewjsSyncTransferSite
+jalviewjsSyncResources.mustRunAfter jalviewjsSyncTransferSite
+jalviewjsSyncSiteResources.mustRunAfter jalviewjsSyncTransferSite
 
 task jalviewjsPrepareSite {
   group "JalviewJS"
   description "Prepares the website folder including unzipping files and copying resources"
-  dependsOn jalviewjsSitePath
-  dependsOn jalviewjsUnzipFiles
-  dependsOn jalviewjsCopyResources
-  dependsOn jalviewjsCopySiteResources
+  dependsOn jalviewjsSyncLib
+  dependsOn jalviewjsSyncResources
+  dependsOn jalviewjsSyncSiteResources
 }
 
 task jalviewjsBuildSite {
@@ -1652,7 +1699,7 @@ task jalviewjsBuildSite {
 
 task cleanJalviewjsSite {
   doFirst {
-    delete "${jalviewDir}/${jalviewjsTransferSiteDir}"
+    delete "${jalviewDir}/${jalviewjsTransferSiteJSDir}"
     delete "${jalviewDir}/${jalviewjsSiteDir}"
   }
 }
@@ -1678,9 +1725,10 @@ task jalviewjsSiteTar(type: Tar) {
 
 task jalviewjsServer {
   group "JalviewJS"
-  description "Starts a webserver on localhost to test the website"
+  def filename = "jalviewjsTest.html"
+  description "Starts a webserver on localhost to test the website. See ${filename} to access local site on most recently used port."
   dependsOn jalviewjsSitePath
-  def htmlFile = "${jalviewDirAbsolutePath}/jalviewjsTest.html"
+  def htmlFile = "${jalviewDirAbsolutePath}/${filename}"
   doLast {
 
     SimpleHttpFileServerFactory factory = new SimpleHttpFileServerFactory()
@@ -1739,33 +1787,44 @@ task jalviewjs {
 }
 
 
-task jalviewjsIDECopyTransferSite(type: Copy) {
-  from "${jalviewDir}/${jalviewjsTransferSiteDir}"
+task jalviewjsIDE_CopyTransferSite(type: Copy) {
+  from "${jalviewDir}/${jalviewjsTransferSiteJSDir}"
   into "${jalviewDir}/${jalviewjsSiteDir}"
 }
 
-task jalviewjsIDEj2s {
-  group "JalviewJS in Eclipse"
+task jalviewjsIDE_j2s {
+  group "00 JalviewJS in Eclipse"
   description "Creates the .j2s file"
   dependsOn jalviewjsCreateJ2sSettings
 }
 
-task jalviewjsIDEBuildSite {
-  group "JalviewJS in Eclipse"
-  description "Copies the Eclipse transpiled site and unzips supporting zipfiles"
-  dependsOn jalviewjsIDECopyTransferSite
+task jalviewjsIDE_AssembleSite {
+  group "00 JalviewJS in Eclipse"
+  description "Assembles the Eclipse transpiled site and unzips supporting zipfiles"
+  dependsOn jalviewjsIDE_CopyTransferSite
   dependsOn jalviewjsPrepareSite
 }
 
-task jalviewjsIDESiteClean {
-  group "JalviewJS in Eclipse"
+task jalviewjsIDE_SiteClean {
+  group "00 JalviewJS in Eclipse"
   description "Deletes the Eclipse transpiled site"
   dependsOn cleanJalviewjsSite
 }
 
-task jalviewjsIDEServer {
-  group "JalviewJS in Eclipse"
+task jalviewjsIDE_Server {
+  group "00 JalviewJS in Eclipse"
   description "Starts a webserver on localhost to test the website"
   dependsOn jalviewjsServer
 }
 
+// buildship runs this at import
+task eclipseSynchronizationTask {
+  dependsOn eclipseSetup
+  dependsOn jalviewjsIDE_j2s
+}
+
+// buildship runs this at build time
+task eclipseAutoBuildTask {
+  dependsOn jalviewjsSyncTransferSite
+  dependsOn jalviewjsPrepareSite
+}