JAL-3210 gradle jalviewjsServer now working. Up to date src and swingjs from Jalview...
[jalview.git] / build.gradle
index 351d9ac..f6d211a 100644 (file)
@@ -3,6 +3,7 @@ import org.gradle.internal.os.OperatingSystem
 import org.gradle.plugins.ide.eclipse.model.*
 import groovy.transform.ExternalizeMethods
 
+
 plugins {
   id 'java'
   id 'application'
@@ -135,7 +136,7 @@ eclipse {
         }
         cp.entries.removeAll(removeTheseToo)
 
-        cp.entries += new Output("bin/main")
+        cp.entries += new Output(eclipse_bin_dir+"/main")
         cp.entries += new Library(fileReference(helpParentDir))
         cp.entries += new Library(fileReference(resourceDir))
 
@@ -233,19 +234,25 @@ def eclipseBinary
 def eclipseDropinsDir
 def eclipsePluginsDir
 task jalviewjsEclipsePaths {
+  def eclipseRoot = jalviewjs_eclipse_root
+  if (eclipseRoot.startsWith("~")) {
+    eclipseRoot = System.getProperty("user.home") + eclipseRoot.substring(1)
+  }
        if (OperatingSystem.current().isMacOsX()) {
-               eclipseDropinsDir = jalviewjs_eclipse_root+"/Contents/Eclipse/dropins"
-               eclipsePluginsDir = jalviewjs_eclipse_root+"/Contents/Eclipse/plugins"
-               eclipseBinary = jalviewjs_eclipse_root+"/Contents/MacOS/eclipse"
-       } else if (OperatingSystem.current().isWindows()) { // check this!
-               eclipseDropinsDir = jalviewjs_eclipse_root+"/dropins"
-               eclipsePluginsDir = jalviewjs_eclipse_root+"/plugins"
-               eclipseBinary = jalviewjs_eclipse_root+"/eclipse"
+    eclipseRoot += "/Eclipse.app"
+               eclipseDropinsDir = eclipseRoot+"/Contents/Eclipse/dropins"
+               eclipsePluginsDir = eclipseRoot+"/Contents/Eclipse/plugins"
+               eclipseBinary = eclipseRoot+"/Contents/MacOS/eclipse"
+       } else if (OperatingSystem.current().isWindows()) { // check these paths!!
+               eclipseDropinsDir = eclipseRoot+"/dropins"
+               eclipsePluginsDir = eclipseRoot+"/plugins"
+               eclipseBinary = eclipseRoot+"/eclipse"
        } else { // linux or unix
-               eclipseDropinsDir = jalviewjs_eclipse_root+"/dropins"
-               eclipsePluginsDir = jalviewjs_eclipse_root+"/plugins"
-               eclipseBinary = jalviewjs_eclipse_root+"/eclipse"
+               eclipseDropinsDir = eclipseRoot+"/dropins"
+               eclipsePluginsDir = eclipseRoot+"/plugins"
+               eclipseBinary = eclipseRoot+"/eclipse"
        }
+  println("ECLIPSE ROOT: "+eclipseRoot)
 }
 
 task jalviewjsEclipseCopyDropins (type: Copy) {
@@ -284,11 +291,11 @@ def tempEclipseWorkspace = ""
 
 task jalviewjsSetTempEclipseWorkspace {
   tempEclipseWorkspace = file(jalviewjs_eclipse_workspace)
-  if (!tempEclipseWorkspace.exists() && jalviewjs_eclipse_workspace.startsWith(File.separator)) {
+  if (!tempEclipseWorkspace.exists()) {
     tempEclipseWorkspace = File.createTempDir()
-    print("ECLIPSE WORKSPACE: "+tempEclipseWorkspace.getPath())
     tempEclipseWorkspace.deleteOnExit()
   }
+  println("ECLIPSE WORKSPACE: "+tempEclipseWorkspace.getPath())
 }
 
 task jalviewjsEclipseSetup {
@@ -339,8 +346,13 @@ task jalviewjsCopySiteResources (type: Copy) {
   inputs.files inputFiles
 }
 
-task cleanJalviewjsSite {
-  delete jalviewjs_site_dir
+task cleanJalviewjs {
+  /*
+  delete jalviewDir+"/"+jalviewjs_site_dir
+  delete jalviewDir+"/"+eclipse_bin_dir
+  delete file(tempEclipseWorkspace.getAbsolutePath()+"/.metadata")
+  delete jalviewDir+"/"+jalviewjs_j2s_settings
+  */
 }
 
 task jalviewjsProjectImport(type: Exec) {
@@ -353,15 +365,21 @@ task jalviewjsProjectImport(type: Exec) {
   executable(eclipseBinary)
   args(["-nosplash", "--launcher.suppressErrors", "-application", "com.seeq.eclipse.importprojects.headlessimport", "-data", tempEclipseWorkspace.getPath(), "-import", jalviewDirAbsolutePath])
 
-  def tempdir = tempEclipseWorkspace.getPath()+"/.metadata/.plugins/org.eclipse.core.resources/.projects/jalview"
-  outputs.dir(tempdir)
+  def projdir = tempEclipseWorkspace.getPath()+"/.metadata/.plugins/org.eclipse.core.resources/.projects/jalview/org.eclipse.jdt.core/"
+  inputs.file(jalviewDir+"/.project")
+  outputs.dir(projdir)
 }
 
 task jalviewjsTranspile(type: Exec) {
+  dependsOn jalviewjsCreateJ2sSettings 
   dependsOn jalviewjsProjectImport
   dependsOn jalviewjsEclipsePaths
   executable(eclipseBinary)
   args(["-nosplash", "--launcher.suppressErrors", "-application", "org.eclipse.jdt.apt.core.aptBuild", "-data", tempEclipseWorkspace, "-"+jalviewjs_eclipseBuildArg, eclipse_project_name ])
+  inputs.dir(sourceDir)
+  outputs.dir(eclipse_bin_dir+"/main")
+  outputs.file(eclipse_bin_dir+"/main/jalview/bin/Jalview.class")
+  outputs.dir(jalviewjs_site_dir+"/"+jalviewjs_j2s_subdir)
 }
 
 task jalviewjsBuildSite {
@@ -383,13 +401,34 @@ task jalviewjsSiteTar(type: Tar) {
   compression Compression.GZIP
 
   from jalviewjs_site_dir
-  into jalviewjs_site_dir
+  into jalviewjs_site_dir // this is inside the tar file
 
   inputs.dir(jalviewjs_site_dir)
 }
 
 task jalviewjs {
-  dependsOn jalviewjsCreateJ2sSettings 
   dependsOn jalviewjsBuildSite
 }
 
+task jalviewjsServer {
+  //dependsOn jalviewjsBuildSite
+
+  doLast {
+    SimpleHttpFileServerFactory factory = new SimpleHttpFileServerFactory()
+    def port = Integer.valueOf(jalviewjs_server_port)
+    def start = port
+    def running = false
+    HttpFileServer server
+println "server wait = ${jalviewjs_server_wait}"
+    while(port < start+100 && !running) {
+      try {
+        server = factory.start(new File(jalviewDirAbsolutePath+"/"+jalviewjs_site_dir), port)
+        running = true
+       println("SERVER STARTED on "+server.getResourceUrl(jalviewjs_server_resource)+" for ${jalviewjs_server_wait} seconds. Ctrc+C to kill it.")
+       java.lang.Thread.sleep(Integer.valueOf(jalviewjs_server_wait)*1000);
+      } catch (Exception e) {
+        port++;
+      }
+    }
+  }
+}