JAL-3210 Different j2s plugin for different versions of eclipse. Not great, but good...
[jalview.git] / build.gradle
index 314306f..c42b7bd 100644 (file)
@@ -1262,17 +1262,6 @@ task helppages  {
   outputs.dir("$helpOutputDir")
 }
 
-def eclipseWorkspace
-task jalviewjsSetEclipseWorkspace {
-  def eclipseWsDir = jalviewjs_eclipse_workspace
-  eclipseWorkspace = file(eclipseWsDir)
-  if (!eclipseWorkspace.exists()) {
-    eclipseWorkspace = file("${buildDir}/../tmp/eclipse-workspace")
-    //eclipseWorkspace.deleteOnExit()
-  }
-  println("ECLIPSE WORKSPACE: "+eclipseWorkspace.getPath())
-}
-
 def jalviewjsBuildDir
 def jalviewjsSiteDir
 def jalviewjsTransferSiteDir
@@ -1287,6 +1276,39 @@ task jalviewjsSitePath {
   jalviewjsTransferSiteDir = jalviewjsBuildDir + "/tmp/site"
 }
 
+def eclipseWorkspace
+task jalviewjsSetEclipseWorkspace {
+  def propKey = "jalviewjs_eclipse_workspace"
+  def propsFile = "${jalviewjsBuildDir}/${jalviewjs_eclipse_workspace_location_file}"
+  def props = new Properties()
+  def eclipseWsDir
+  def propVal = null
+  if (project.hasProperty(propKey)) {
+    propVal = project.getProperty(propKey)
+    eclipseWsDir = propVal
+  }
+  if ((eclipseWsDir == null || !file(eclipseWsDir).exists()) && file(propsFile).exists()) {
+    def ins = new FileInputStream(propsFile)
+    props.load(ins)
+    ins.close()
+    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)
+    props.store(outs, null)
+    outs.close()
+  }
+
+  eclipseWorkspace = file(eclipseWsDir)
+    
+  println("ECLIPSE WORKSPACE: "+eclipseWorkspace.getPath())
+
+  inputs.property(propKey, propVal)
+  outputs.file(propsFile)
+}
 
 
 task jalviewjsUnzipFiles {
@@ -1310,8 +1332,11 @@ task jalviewjsUnzipFiles {
 
 def eclipseDropinsDir
 def eclipseBinary
+def eclipseVersion
+def fromDropinsDir
 task jalviewjsEclipsePaths {
   def eclipseRoot
+  def eclipseProduct
   eclipseRoot = jalviewjs_eclipse_root
   if (eclipseRoot.startsWith("~")) {
     eclipseRoot = System.getProperty("user.home") + eclipseRoot.substring(1)
@@ -1320,18 +1345,36 @@ task jalviewjsEclipsePaths {
     eclipseRoot += "/Eclipse.app"
     eclipseDropinsDir = eclipseRoot+"/Contents/Eclipse/dropins"
     eclipseBinary = eclipseRoot+"/Contents/MacOS/eclipse"
+    eclipseProduct = eclipseRoot+"/Contents/Eclipse/.eclipseproduct"
   } else if (OperatingSystem.current().isWindows()) { // check these paths!!
     eclipseDropinsDir = eclipseRoot+"/dropins"
     eclipseBinary = eclipseRoot+"/eclipse"
+    eclipseProduct = eclipseRoot+"/.eclipseproduct"
   } else { // linux or unix
     eclipseDropinsDir = eclipseRoot+"/dropins"
     eclipseBinary = eclipseRoot+"/eclipse"
+    eclipseProduct = eclipseRoot+"/.eclipseproduct"
   }
+
+  def fis = new FileInputStream(eclipseProduct)
+  def props = new Properties()
+  props.load(fis)
+  eclipseVersion = props.getProperty("version")
+  fis.close()
+  println("ECLIPSE_VERSION=${eclipseVersion}")
+  String[] v = eclipseVersion.split("\\.")
+  def v0 = Integer.valueOf(v[0])
+  def v1 = Integer.valueOf(v[1])
+  if (v0 < 4 || ( v0 == 4 && v1 < 13 )) {
+    fromDropinsDir = "eclipse/dropins_4.12"
+  } else {
+    fromDropinsDir = "eclipse/dropins_4.13"
+  } 
 }
 
 task jalviewjsEclipseCopyDropins {
   dependsOn jalviewjsEclipsePaths
-  def inputFiles = fileTree(dir: jalviewjs_utils_dir+"/"+jalviewjs_eclipse_dropins_dir, include: "*.jar")
+  def inputFiles = fileTree(dir: jalviewjs_utils_dir+"/"+fromDropinsDir, include: "*.jar")
   def outputDir = eclipseDropinsDir
 
   inputs.files inputFiles