JAL-3210 merge. j2sclasslist_jmol seems to be removed
[jalview.git] / build.gradle
index 5dd64df..ae93e40 100644 (file)
@@ -88,8 +88,6 @@ ext {
   }
   */
 
-  mainClassName = string(launcherClass)
-
   cloverInstrDir = file("${buildDir}/${cloverSourcesInstrDir}")
   classes = string("${jalviewDir}/${classesDir}")
   if (clover.equals("true")) {
@@ -295,6 +293,7 @@ ext {
   jalviewjsTransferSiteCoreDir = string("${jalviewjsBuildDir}/tmp/${jalviewjs_site_dir}_core")
   jalviewjsJalviewCoreHtmlFile = string("")
   jalviewjsJalviewCoreName = string(jalviewjs_core_name)
+  jalviewjsCoreClasslists = []
   jalviewjsJalviewTemplateName = string(jalviewjs_name)
 
   eclipseWorkspace = null
@@ -509,7 +508,7 @@ eclipse {
 
   if (IN_ECLIPSE) {
     // Don't want these to be activated if in headless build
-    synchronizationTasks "eclipseSynchronizationTask"
+    //synchronizationTasks "eclipseConfiguration"
     autoBuildTasks "eclipseAutoBuildTask"
   }
 }
@@ -1298,13 +1297,6 @@ task installers(type: com.install4j.gradle.Install4jTask) {
 }
 
 
-clean {
-  doFirst {
-    delete install4jConfFile
-  }
-}
-
-
 task sourceDist (type: Tar) {
   
   def VERSION_UNDERSCORES = JALVIEW_VERSION.replaceAll("\\.", "_")
@@ -1446,6 +1438,9 @@ task jalviewjsSetEclipseWorkspace {
       props.store(bytes, null)
       def propertiesString = bytes.toString()
       propsFile.text = propertiesString
+      print("NEW ")
+    } else {
+      print("EXISTING ")
     }
 
     println("ECLIPSE WORKSPACE: "+eclipseWorkspace.getPath())
@@ -1822,14 +1817,14 @@ DEBUG: ${eclipseDebug}
 }
 
 
-def jalviewjsCallCore(FileCollection list, String prefixFile, String suffixFile, String jsfile, String zjsfile, File logOutFile, Boolean logOutConsole) {
+def jalviewjsCallCore(String name, FileCollection list, String prefixFile, String suffixFile, String jsfile, String zjsfile, File logOutFile, Boolean logOutConsole) {
 
   def stdout = new ByteArrayOutputStream()
   def stderr = new ByteArrayOutputStream()
 
   def coreFile = file(jsfile)
   def msg = ""
-  msg = "Generating ${jsfile}"
+  msg = "Creating core for ${name}...\nGenerating ${jsfile}"
   println(msg)
   logOutFile.createNewFile()
   logOutFile.append(msg+"\n")
@@ -1843,8 +1838,7 @@ def jalviewjsCallCore(FileCollection list, String prefixFile, String suffixFile,
     f ->
     if (f.exists()) {
       def t = f.text
-      t.replaceAll("Clazz\\.","Clazz_")
-      t.replaceAll("Class__","Clazz._")
+      t.replaceAll("Clazz\\.([^_])","Clazz_${1}")
       coreFile.append( t )
     } else {
       msg = "...file '"+f.getPath()+"' does not exist, skipping"
@@ -1901,6 +1895,8 @@ task jalviewjsBuildAllCores {
   dependsOn jalviewjsTransferUnzipSwingJs
 
   def j2sDir = "${jalviewDir}/${jalviewjsTransferSiteJsDir}/${jalviewjs_j2s_subdir}"
+  def swingJ2sDir = "${jalviewDir}/${jalviewjsTransferSiteSwingJsDir}/${jalviewjs_j2s_subdir}"
+  def libJ2sDir = "${jalviewDir}/${jalviewjsTransferSiteLibDir}/${jalviewjs_j2s_subdir}"
   def jsDir = "${jalviewDir}/${jalviewjsTransferSiteSwingJsDir}/${jalviewjs_js_subdir}"
   def outputDir = "${jalviewDir}/${jalviewjsTransferSiteCoreDir}/${jalviewjs_j2s_subdir}/core"
   def prefixFile = "${jsDir}/core/coretop2.js"
@@ -1921,10 +1917,10 @@ task jalviewjsBuildAllCores {
   }
 
   // _jmol and _jalview cores. Add any other peculiar classlist.txt files here
-  classlistFiles += [ 'file': file("${jalviewDir}/${jalviewjs_classlist_jmol}"), 'name': "_jvjmol" ]
+  //classlistFiles += [ 'file': file("${jalviewDir}/${jalviewjs_classlist_jmol}"), 'name': "_jvjmol" ]
   classlistFiles += [ 'file': file("${jalviewDir}/${jalviewjs_classlist_jalview}"), 'name': jalviewjsJalviewCoreName ]
 
-  def classlists = []
+  jalviewjsCoreClasslists = []
 
   classlistFiles.each {
     hash ->
@@ -1949,10 +1945,11 @@ task jalviewjsBuildAllCores {
     def jsfile = "${outputDir}/core${name}.js"
     def zjsfile = "${outputDir}/core${name}.z.js"
 
-    classlists += [
-    'jsfile': jsfile,
-    'zjsfile': zjsfile,
-    'list': list
+    jalviewjsCoreClasslists += [
+      'jsfile': jsfile,
+      'zjsfile': zjsfile,
+      'list': list,
+      'name': name
     ]
 
     inputs.file(file)
@@ -1962,74 +1959,99 @@ task jalviewjsBuildAllCores {
   }
   
   // _stevesoft core. add any cores without a classlist here (and the inputs and outputs)
+  def stevesoftClasslistName = "_stevesoft"
   def stevesoftClasslist = [
-    'jsfile': "${outputDir}/core_stevesoft.js",
-    'zjsfile': "${outputDir}/core_stevesoft.z.js",
-    'list': fileTree(dir: j2sDir, include: "com/stevesoft/pat/**/*.js")
+    'jsfile': "${outputDir}/core${stevesoftClasslistName}.js",
+    'zjsfile': "${outputDir}/core${stevesoftClasslistName}.z.js",
+    'list': fileTree(dir: j2sDir, include: "com/stevesoft/pat/**/*.js"),
+    'name': stevesoftClasslistName
   ]
-  classlists += stevesoftClasslist
+  jalviewjsCoreClasslists += stevesoftClasslist
   inputs.files(stevesoftClasslist['list'])
   outputs.file(stevesoftClasslist['jsfile'])
   outputs.file(stevesoftClasslist['zjsfile'])
 
+  // _all core
+  def allClasslistName = "_all"
+  def allJsFiles = fileTree(dir: j2sDir, include: "**/*.js")
+  //allJsFiles += fileTree(dir: libJ2sDir, include: "**/*.js")
+  //allJsFiles += fileTree(dir: swingJ2sDir, include: "**/*.js")
+  def allClasslist = [
+    'jsfile': "${outputDir}/core${allClasslistName}.js",
+    'zjsfile': "${outputDir}/core${allClasslistName}.z.js",
+    'list': allJsFiles,
+    'name': allClasslistName
+  ]
+  jalviewjsCoreClasslists += allClasslist
+  inputs.files(allClasslist['list'])
+  outputs.file(allClasslist['jsfile'])
+  outputs.file(allClasslist['zjsfile'])
+
   doFirst {
     def logOutFile = file("${jalviewDirAbsolutePath}/${jalviewjsBuildDir}/${jalviewjs_j2s_closure_stdout}")
     logOutFile.getParentFile().mkdirs()
     logOutFile.createNewFile()
     logOutFile.write(getDate("yyyy-MM-dd HH:mm:ss")+" jalviewjsBuildAllCores\n----\n")
 
-    classlists.each {
-      jalviewjsCallCore(it.list, prefixFile, suffixFile, it.jsfile, it.zjsfile, logOutFile, jalviewjs_j2s_to_console.equals("true"))
+    jalviewjsCoreClasslists.each {
+      jalviewjsCallCore(it.name, it.list, prefixFile, suffixFile, it.jsfile, it.zjsfile, logOutFile, jalviewjs_j2s_to_console.equals("true"))
     }
   }
 
 }
 
 
-task jalviewjsPublishCoreTemplate(type: Sync) {
-  dependsOn jalviewjsBuildAllCores
+def jalviewjsPublishCoreTemplate(String coreName, String templateName, File inputFile, String outputFile) {
+  copy {
+    from inputFile
+    into file(outputFile).getParentFile()
+    rename { filename ->
+      if (filename.equals(inputFile.getName())) {
+        return file(outputFile).getName()
+      }
+      return null
+    }
+    filter(ReplaceTokens,
+      beginToken: '_',
+      endToken: '_',
+      tokens: [
+        'MAIN': '"'+mainClass+'"',
+        'CODE': "null",
+        'NAME': jalviewjsJalviewTemplateName+" [core ${coreName}]",
+        'COREKEY': jalviewjs_core_key,
+        'CORENAME': coreName
+      ]
+    )
+  }
+}
 
-  def inputFile = file("${jalviewDir}/${j2s_template_html}")
+
+task jalviewjsPublishCoreTemplates {
+  dependsOn jalviewjsBuildAllCores
+  def inputFileName = "${jalviewDir}/${j2s_coretemplate_html}"
+  def inputFile = file(inputFileName)
   def outputDir = "${jalviewDir}/${jalviewjsTransferSiteCoreDir}"
 
-  from inputFile
-  into outputDir
   def outputFiles = []
-  jalviewjsJalviewCoreHtmlFile = "${jalviewjsJalviewTemplateName}_${jalviewjsJalviewCoreName}.html"
-  rename { filename ->
-    outputFiles += "${outputDir}/${filename}"
-    if (filename.equals(inputFile.getName())) {
-      return jalviewjsJalviewCoreHtmlFile 
+  jalviewjsCoreClasslists.each { cl ->
+    def outputFile = "${outputDir}/${jalviewjsJalviewTemplateName}_${cl.name}.html"
+    cl['outputfile'] = outputFile
+    outputFiles += outputFile
+  }
+
+  doFirst {
+    jalviewjsCoreClasslists.each { cl ->
+      jalviewjsPublishCoreTemplate(cl.name, jalviewjsJalviewTemplateName, inputFile, cl.outputfile)
     }
-    return null
-  }
-  filter(ReplaceTokens,
-    beginToken: '_',
-    endToken: '_',
-    tokens: [
-      'MAIN': '"'+mainClassName+'"',
-      'CODE': "null",
-      'NAME': jalviewjsJalviewTemplateName
-    ]
-  )
-  filter(ReplaceTokens,
-    beginToken: '',
-    endToken: '',
-    tokens: [
-      'NONE': jalviewjsJalviewCoreName
-    ]
-  )
-  preserve {
-    include "**"
   }
-  outputs.files outputFiles
-  inputs.files inputFile
+  inputs.file(inputFile)
+  outputs.files(outputFiles)
 }
 
 
 task jalviewjsSyncCore (type: Sync) {
   dependsOn jalviewjsBuildAllCores
-  dependsOn jalviewjsPublishCoreTemplate
+  dependsOn jalviewjsPublishCoreTemplates
   def inputFiles = fileTree(dir: "${jalviewDir}/${jalviewjsTransferSiteCoreDir}")
   def outputDir = "${jalviewDir}/${jalviewjsSiteDir}"
 
@@ -2140,30 +2162,34 @@ task jalviewjsServer {
     def start = port
     def running = false
     def url
-    def urlcore
+    def jalviewjsServer
     while(port < start+1000 && !running) {
       try {
         def doc_root = new File("${jalviewDirAbsolutePath}/${jalviewjsSiteDir}")
-        def jalviewjsServer = factory.start(doc_root, port)
+        jalviewjsServer = factory.start(doc_root, port)
         running = true
         url = jalviewjsServer.getResourceUrl(jalviewjs_server_resource)
-        urlcore = jalviewjsServer.getResourceUrl(jalviewjsJalviewCoreHtmlFile)
         println("SERVER STARTED with document root ${doc_root}.")
         println("Go to "+url+" . Run  gradle --stop  to stop (kills all gradle daemons).")
         println("For debug: "+url+"?j2sdebug")
-        println("For core: "+urlcore)
-
-        file(htmlFile).text = """
-        <p><a href="${url}">JalviewJS Test. &lt;${url}&gt;</a></p>
-        <p><a href="${url}?j2sdebug">JalviewJS Test with debug. &lt;${url}?j2sdebug&lt;</a></p>
-        <p><a href="${urlcore}">${jalviewjsJalviewTemplateName} Core Test. &lt;${urlcore}&gt;</a></p>
-        """
-
+        println("For verbose: "+url+"?j2sverbose")
       } catch (Exception e) {
         port++;
       }
     }
+    def htmlText = """
+      <p><a href="${url}">JalviewJS Test. &lt;${url}&gt;</a></p>
+      <p><a href="${url}?j2sdebug">JalviewJS Test with debug. &lt;${url}?j2sdebug&lt;</a></p>
+      """
+    jalviewjsCoreClasslists.each { cl ->
+      def urlcore = jalviewjsServer.getResourceUrl(file(cl.outputfile).getName())
+      htmlText += """
+      <p><a href="${urlcore}">${jalviewjsJalviewTemplateName} [core ${cl.name}]. &lt;${urlcore}&gt;</a></p>
+      """
+      println("For core ${cl.name}: "+urlcore)
+    }
 
+    file(htmlFile).text = htmlText
   }
 
   outputs.file(htmlFile)
@@ -2191,12 +2217,6 @@ task cleanJalviewjsAll {
 
 
 
-task jalviewjsIDE_CopyTransferSiteJs(type: Copy) {
-  from "${jalviewDir}/${jalviewjsTransferSiteJsDir}"
-  into "${jalviewDir}/${jalviewjsSiteDir}"
-}
-
-
 task jalviewjsIDE_j2sFile {
   group "00 JalviewJS in Eclipse"
   description "Creates the .j2s file"
@@ -2223,8 +2243,7 @@ task jalviewjsIDE_PrepareSite {
 
 task jalviewjsIDE_AssembleSite {
   group "00 JalviewJS in Eclipse"
-  description "Assembles the Eclipse transpiled site and unzips supporting zipfiles"
-  dependsOn jalviewjsIDE_CopyTransferSiteJs
+  description "Assembles unzipped supporting zipfiles, resources, site resources and closure cores into the Eclipse transpiled site"
   dependsOn jalviewjsPrepareSite
 }
 
@@ -2244,7 +2263,7 @@ task jalviewjsIDE_Server {
 
 
 // buildship runs this at import
-task eclipseSynchronizationTask {
+task eclipseConfiguration {
   dependsOn eclipseSetup
   dependsOn jalviewjsIDE_j2sFile
 }