gitHash = ""
gitBranch = ""
- jalviewjsServer = ""
}
def JAVA_INTEGER_VERSION
eclipse {
project {
- name = "Jalview with gradle build"
+ name = eclipse_project_name
natures 'org.eclipse.jdt.core.javanature',
'org.eclipse.jdt.groovy.core.groovyNature',
// 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)
}
} // 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'
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
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"
}
+def eclipseWorkspace
+task jalviewjsSetEclipseWorkspace {
+ def propKey = "jalviewjs_eclipse_workspace"
+ def propsFileName = "${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(propsFileName).exists()) {
+ def ins = new FileInputStream("${jalviewDirAbsolutePath}/${propsFileName}")
+ props.load(ins)
+ ins.close()
+ 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 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()
+ }
+
+ eclipseWorkspace = file(eclipseWsDir)
+
+ println("ECLIPSE WORKSPACE: "+eclipseWorkspace.getPath())
+
+ inputs.property(propKey, propVal)
+ outputs.file(propsFileName)
+}
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)
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!!
+ 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"
}
+
+ 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
if (prop.startsWith("j2s.") && val != null) {
if (prop == siteDirProperty) {
if (!(val.startsWith("/") || val.startsWith("file://") )) {
- val = jalviewjsSiteDir+"/"+val
+ val = jalviewjsTransferSiteDir+"/"+val
}
setSiteDir = true
}
property(prop,val)
}
if (!setSiteDir) {
- property(siteDirProperty,"${jalviewjsSiteDir}")
+ property(siteDirProperty,jalviewjsTransferSiteDir)
}
}
outputs.file(outputFile)
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) {
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}'")
}
}
inputs.dir(sourceDir)
outputs.dir(eclipse_bin_dir+"/main")
- outputs.files(
- fileTree(
- dir: jalviewjsSiteDir+"/"+jalviewjs_j2s_subdir,
- includes: [ "**/*.js" ],
- excludes: [
- //jalviewjsSiteDir+"/"+jalviewjs_j2s_subdir+"/intervalstore/**",
- //jalviewjsSiteDir+"/"+jalviewjs_j2s_subdir+"/org/json/**",
- "intervalstore/**",
- "org/json/**",
- ]
- ).files
- )
- outputs.file(jalviewjsSiteDir+jalviewjs_server_resource)
-
-}
-
-jalviewjsUnzipFiles.mustRunAfter jalviewjsTranspile
-jalviewjsTranspile.mustRunAfter jalviewjsCopyResources
-jalviewjsTranspile.mustRunAfter jalviewjsCopySiteResources
+ outputs.dir(jalviewjsTransferSiteDir)
+
+}
+
+task jalviewjsCopyTransferSite(type: Copy) {
+ dependsOn jalviewjsTranspile
+ from jalviewjsTransferSiteDir
+ into jalviewjsSiteDir
+}
+
+jalviewjsUnzipFiles.mustRunAfter jalviewjsCopyTransferSite
+jalviewjsCopyResources.mustRunAfter jalviewjsCopyTransferSite
+jalviewjsCopySiteResources.mustRunAfter jalviewjsCopyTransferSite
task jalviewjsPrepareSite {
group "JalviewJS"
task jalviewjsBuildSite {
group "JalviewJS"
description "Builds the whole website including transpiled code"
+ dependsOn jalviewjsCopyTransferSite
dependsOn jalviewjsPrepareSite
- dependsOn jalviewjsTranspile
+}
+
+task jalviewjsSiteClean {
+ //delete jalviewjsTransferSiteDir
+ //delete jalviewjsSiteDir
}
task jalviewjsSiteTar(type: Tar) {
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. <${url}></a></p>
+ <p><a href="${url}?j2sdebug">Jalview JS Test with debug. <${url}?j2sdebug<</a></p>
+ """
+
} catch (Exception e) {
port++;
}
}
+ outputs.file(htmlFile)
}
task jalviewjs {
+ group "JalviewJS"
+ description "Build the site"
dependsOn jalviewjsBuildSite
}
+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
+}
+