JAL-3210 some tidying
[jalview.git] / build.gradle
index c42b7bd..c7d2311 100644 (file)
@@ -167,7 +167,6 @@ ext {
   gitHash = ""
   gitBranch = ""
 
-  jalviewjsServer = ""
 }
 
 def JAVA_INTEGER_VERSION
@@ -305,7 +304,7 @@ configurations {
 
 eclipse {
   project {
-    name = "Jalview with gradle build"
+    name = eclipse_project_name
 
     natures 'org.eclipse.jdt.core.javanature',
     'org.eclipse.jdt.groovy.core.groovyNature',
@@ -389,11 +388,7 @@ eclipse {
             // don't duplicate
           } else {
             def lib = new Library(fileReference(itPath))
-            /* this doesn't work... yet.  Adding test=true attribute using withXml below
-            def attrs = new Node(null, 'attributes')
-            attrs.appendNode('attribute', ["name":"test","value":"true"])
-            lib.appendNode(attrs)
-            /**/
+            lib.entryAttributes["test"] = "true"
             cp.entries += lib
             alreadyAddedLibPath.put(itPath, true)
           }
@@ -401,38 +396,6 @@ eclipse {
 
       } // whenMerged
 
-      // withXml changes ignored by buildship, these add the "test=true" attribute
-      withXml {
-        def node = it.asNode()
-
-        def srcTestAttributes
-        node.children().each{ cpe ->
-          def attributes = cpe.attributes()
-          if (attributes.get("kind") == "src" && attributes.get("path") == "test") {
-            srcTestAttributes = cpe.find { a -> a.name() == "attributes" }
-            return
-          }
-        }
-        def addTestAttribute = true
-        srcTestAttributes.each{a ->
-          if (a.name() == "attribute" && a.attributes().getAt("name") == "test") {
-            addTestAttribute = false
-          }
-        }
-        if (addTestAttribute) {
-          srcTestAttributes.append(new Node(null, "attribute", [name:"test", value:"true"]))
-        }
-
-        node.children().each{ cpe ->
-          def attributes = cpe.attributes()
-          if (attributes.get("kind") == "lib" && attributes.get("path").startsWith("utils/")) {
-            cpe.appendNode('attributes')
-            .appendNode('attribute', [name:"test", value:"true"])
-          }
-        }
-      } // withXML
-
-
     } // file
 
     containers 'org.eclipse.buildship.core.gradleclasspathcontainer'
@@ -1266,11 +1229,11 @@ def jalviewjsBuildDir
 def jalviewjsSiteDir
 def jalviewjsTransferSiteDir
 task jalviewjsSitePath {
+  def relativeBuildDir = file(jalviewDirAbsolutePath).toPath().relativize(buildDir.toPath())
+  jalviewjsBuildDir = "${relativeBuildDir}/jalviewjs"
   if (jalviewjs_site_dir.startsWith("/")) {
     jalviewjsSiteDir = jalviewjs_site_dir
   } else {
-    def relativeBuildDir = file(jalviewDirAbsolutePath).toPath().relativize(buildDir.toPath())
-    jalviewjsBuildDir = "${relativeBuildDir}/jalviewjs"
     jalviewjsSiteDir = jalviewjsBuildDir + "/" + jalviewjs_site_dir
   }
   jalviewjsTransferSiteDir = jalviewjsBuildDir + "/tmp/site"
@@ -1279,7 +1242,7 @@ task jalviewjsSitePath {
 def eclipseWorkspace
 task jalviewjsSetEclipseWorkspace {
   def propKey = "jalviewjs_eclipse_workspace"
-  def propsFile = "${jalviewjsBuildDir}/${jalviewjs_eclipse_workspace_location_file}"
+  def propsFileName = "${jalviewjsBuildDir}/${jalviewjs_eclipse_workspace_location_file}"
   def props = new Properties()
   def eclipseWsDir
   def propVal = null
@@ -1287,17 +1250,23 @@ task jalviewjsSetEclipseWorkspace {
     propVal = project.getProperty(propKey)
     eclipseWsDir = propVal
   }
-  if ((eclipseWsDir == null || !file(eclipseWsDir).exists()) && file(propsFile).exists()) {
-    def ins = new FileInputStream(propsFile)
+  if (( eclipseWsDir == null || !file(eclipseWsDir).exists() ) && file(propsFileName).exists()) {
+    def ins = new FileInputStream("${jalviewDirAbsolutePath}/${propsFileName}")
     props.load(ins)
     ins.close()
-    eclipseWsDir = props.getProperty(propKey)
+    if (props.getProperty(propKey, null) != null) {
+      eclipseWsDir = props.getProperty(propKey)
+    }
   }
+
   if (eclipseWsDir == null || !file(eclipseWsDir).exists()) {
     def tempDir = File.createTempDir()
     eclipseWsDir = tempDir.getAbsolutePath()
     props.setProperty(propKey, eclipseWsDir)
-    def outs = new FileOutputStream(propsFile)
+    def propsFile = file(propsFileName)
+    propsFile.parentFile.mkdirs()
+    propsFile.createNewFile() // doesn't affect existing file
+    def outs = new FileOutputStream(propsFile, false)
     props.store(outs, null)
     outs.close()
   }
@@ -1307,7 +1276,7 @@ task jalviewjsSetEclipseWorkspace {
   println("ECLIPSE WORKSPACE: "+eclipseWorkspace.getPath())
 
   inputs.property(propKey, propVal)
-  outputs.file(propsFile)
+  outputs.file(propsFileName)
 }
 
 
@@ -1347,10 +1316,16 @@ task jalviewjsEclipsePaths {
     eclipseBinary = eclipseRoot+"/Contents/MacOS/eclipse"
     eclipseProduct = eclipseRoot+"/Contents/Eclipse/.eclipseproduct"
   } else if (OperatingSystem.current().isWindows()) { // check these paths!!
+    if (file(eclipseRoot+"/eclipse").isDirectory() && file(eclipseRoot+"/eclipse/.eclipseproduct").exists()) {
+      eclipseRoot += "/eclipse"
+    }
     eclipseDropinsDir = eclipseRoot+"/dropins"
     eclipseBinary = eclipseRoot+"/eclipse"
     eclipseProduct = eclipseRoot+"/.eclipseproduct"
   } else { // linux or unix
+    if (file(eclipseRoot+"/eclipse").isDirectory() && file(eclipseRoot+"/eclipse/.eclipseproduct").exists()) {
+      eclipseRoot += "/eclipse"
+    }
     eclipseDropinsDir = eclipseRoot+"/dropins"
     eclipseBinary = eclipseRoot+"/eclipse"
     eclipseProduct = eclipseRoot+"/.eclipseproduct"
@@ -1454,11 +1429,13 @@ task jalviewjsCopySiteResources (type: Copy) {
   inputs.files inputFiles
 }
 
-task cleanJalviewjs {
+task jalviewjsTotalClean {
+  group "JalviewJS"
+  description "Delete everything to do with JalviewJS build"
   //delete jalviewjsBuildDir
-  //delete jalviewDir+"/"+eclipse_bin_dir
-  //delete file(eclipseWorkspace.getAbsolutePath()+"/.metadata")
-  //delete jalviewDir+"/"+jalviewjs_j2s_settings
+  delete jalviewDir+"/"+eclipse_bin_dir
+  delete file(eclipseWorkspace.getAbsolutePath()+"/.metadata")
+  delete jalviewDir+"/"+jalviewjs_j2s_settings
 }
 
 task jalviewjsProjectImport(type: Exec) {
@@ -1490,30 +1467,40 @@ task jalviewjsTranspile(type: Exec) {
     stdout = new ByteArrayOutputStream()
     stderr = new ByteArrayOutputStream()
 
+    def logOutFileName = "${jalviewDirAbsolutePath}/${jalviewjsBuildDir}/${jalviewjs_j2s_stdout}"
+    def logOutFile = file(logOutFileName)
+    logOutFile.createNewFile()
+    def logOutFOS = new FileOutputStream(logOutFile, false)
+    //def logErrFileName = "${jalviewjsBuildDir}/${jalviewjs_j2s_stderr}"
+    //def logErrFile = file(logFileName)
+    //logErrFile.createNewFile()
+    //def logErrFOS = new FileErrputStream(logErrFile, false)
+    // combine stdout and stderr
+    def logErrFOS = logOutFOS
     if (jalviewjs_j2s_to_console.equals("true")) {
       standardOutput = new org.apache.tools.ant.util.TeeOutputStream(
         new org.apache.tools.ant.util.TeeOutputStream(
-          new FileOutputStream("${jalviewjsBuildDir}/${jalviewjs_j2s_stdout}"),
+          logOutFOS,
           stdout),
         standardOutput)
       errorOutput = new org.apache.tools.ant.util.TeeOutputStream(
         new org.apache.tools.ant.util.TeeOutputStream(
-          new FileOutputStream("${jalviewjsBuildDir}/${jalviewjs_j2s_stderr}"),
+          logErrFOS,
           stderr),
         errorOutput)
     } else {
       standardOutput = new org.apache.tools.ant.util.TeeOutputStream(
-        new FileOutputStream("${jalviewjsBuildDir}/${jalviewjs_j2s_stdout}"),
+        logOutFOS,
         stdout)
       errorOutput = new org.apache.tools.ant.util.TeeOutputStream(
-        new FileOutputStream("${jalviewjsBuildDir}/${jalviewjs_j2s_stderr}"),
+        logErrFOS,
         stderr)
     }
   }
   doLast {
     if (stdout.toString().contains("Error processing ")) {
       // j2s did not complete transpile
-      throw new GradleException("Error during transpilation:\n${stderr}\nSee eclipse transpile log files '${jalviewjsBuildDir}/${jalviewjs_j2s_stdout}' and '${jalviewjsBuildDir}/${jalviewjs_j2s_stderr}'\n")
+      throw new GradleException("Error during transpilation:\n${stderr}\nSee eclipse transpile log file '${jalviewjsBuildDir}/${jalviewjs_j2s_stdout}'")
     }
   }
 
@@ -1549,6 +1536,11 @@ task jalviewjsBuildSite {
   dependsOn jalviewjsPrepareSite
 }
 
+task jalviewjsSiteClean {
+  //delete jalviewjsTransferSiteDir
+  //delete jalviewjsSiteDir
+}
+
 task jalviewjsSiteTar(type: Tar) {
   group "JalviewJS"
   description "Creates a tar.gz file for the website"
@@ -1572,20 +1564,29 @@ task jalviewjsServer {
   group "JalviewJS"
   description "Starts a webserver on localhost to test the website"
   dependsOn jalviewjsSitePath
+  def htmlFile = "${jalviewDirAbsolutePath}/jalviewjsTest.html"
   doLast {
 
     SimpleHttpFileServerFactory factory = new SimpleHttpFileServerFactory()
     def port = Integer.valueOf(jalviewjs_server_port)
     def start = port
     def running = false
+    def url
     while(port < start+1000 && !running) {
       try {
         def doc_root = new File(jalviewDirAbsolutePath +"/"+ jalviewjsSiteDir)
-        jalviewjsServer = factory.start(doc_root, port)
+        def jalviewjsServer = factory.start(doc_root, port)
         running = true
+        url = jalviewjsServer.getResourceUrl(jalviewjs_server_resource)
         println("SERVER STARTED with document root ${doc_root}.")
-        println("Go to "+jalviewjsServer.getResourceUrl(jalviewjs_server_resource)+" . Run  gradle --stop  to stop (kills all gradle daemons).")
-        println("For debug: "+jalviewjsServer.getResourceUrl(jalviewjs_server_resource)+"?j2sdebug")
+        println("Go to "+url+" . Run  gradle --stop  to stop (kills all gradle daemons).")
+        println("For debug: "+url+"?j2sdebug")
+
+        file(htmlFile).text = """
+        <p><a href="${url}">Jalview JS Test. &lt;${url}&gt;</a></p>
+        <p><a href="${url}?j2sdebug">Jalview JS Test with debug. &lt;${url}?j2sdebug&lt;</a></p>
+        """
+
       } catch (Exception e) {
         port++;
       }
@@ -1593,6 +1594,7 @@ task jalviewjsServer {
 
   }
 
+  outputs.file(htmlFile)
 }
 
 task jalviewjs {
@@ -1602,3 +1604,33 @@ task jalviewjs {
 }
 
 
+task jalviewjsIDECopyTransferSite(type: Copy) {
+  from jalviewjsTransferSiteDir
+  into jalviewjsSiteDir
+}
+
+task jalviewjsIDEj2s {
+  group "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
+  dependsOn jalviewjsPrepareSite
+}
+
+task jalviewjsIDESiteClean {
+  group "JalviewJS in Eclipse"
+  description "Deletes the Eclipse transpiled site"
+  dependsOn jalviewjsSiteClean
+}
+
+task jalviewjsIDEServer {
+  group "JalviewJS in Eclipse"
+  description "Starts a webserver on localhost to test the website"
+  dependsOn jalviewjsServer
+}
+