+task jalviewjsCreateJ2sSettings(type: WriteProperties) {
+ dependsOn jalviewjsSitePath
+ outputFile (jalviewDir+"/"+jalviewjs_j2s_settings)
+ def props = project.properties.sort { it.key }
+ def siteDirProperty = "j2s.site.directory"
+ def setSiteDir = false
+ props.each { prop, val ->
+ if (prop.startsWith("j2s.") && val != null) {
+ if (prop == siteDirProperty) {
+ if (!(val.startsWith("/") || val.startsWith("file://") )) {
+ val = jalviewjsTransferSiteDir+"/"+val
+ }
+ setSiteDir = true
+ }
+ property(prop,val)
+ }
+ if (!setSiteDir) {
+ property(siteDirProperty,jalviewjsTransferSiteDir)
+ }
+ }
+ outputs.file(outputFile)
+}
+
+task jalviewjsEclipseSetup {
+ dependsOn jalviewjsEclipseCopyDropins
+ dependsOn jalviewjsSetEclipseWorkspace
+ dependsOn jalviewjsCreateJ2sSettings
+}
+
+task jalviewjsCopyResources (type: Copy) {
+ dependsOn jalviewjsSitePath
+ def inputFiles = fileTree(dir: jalviewjs_resource_dir)
+ def outputDir = jalviewjsSiteDir+"/"+jalviewjs_j2s_subdir
+
+ from inputFiles
+ into outputDir
+ def outputFiles = []
+ rename { filename ->
+ outputFiles += outputDir+"/"+filename
+ null
+ }
+ outputs.files outputFiles
+ inputs.files inputFiles
+}
+
+task jalviewjsCopySiteResources (type: Copy) {
+ dependsOn jalviewjsSitePath
+ def inputFiles = fileTree(dir: jalviewjs_utils_dir+"/"+jalviewjs_site_resource_dir)
+ def outputDir = jalviewjsSiteDir
+
+ from inputFiles
+ into outputDir
+ def outputFiles = []
+ rename { filename ->
+ outputFiles += outputDir+"/"+filename
+ null
+ }
+ outputs.files outputFiles
+ inputs.files inputFiles
+}
+
+task cleanJalviewjs {
+ //delete jalviewjsBuildDir
+ //delete jalviewDir+"/"+eclipse_bin_dir
+ //delete file(eclipseWorkspace.getAbsolutePath()+"/.metadata")
+ //delete jalviewDir+"/"+jalviewjs_j2s_settings
+}
+
+task jalviewjsProjectImport(type: Exec) {
+ // work out how to do this!
+ dependsOn eclipseProject
+ dependsOn eclipseClasspath
+ dependsOn eclipseJdt
+ dependsOn jalviewjsEclipsePaths
+ dependsOn jalviewjsEclipseSetup
+ executable(eclipseBinary)
+ args(["-nosplash", "--launcher.suppressErrors", "-application", "com.seeq.eclipse.importprojects.headlessimport", "-data", eclipseWorkspace.getPath(), "-import", jalviewDirAbsolutePath])
+
+ def projdir = eclipseWorkspace.getPath()+"/.metadata/.plugins/org.eclipse.core.resources/.projects/jalview/org.eclipse.jdt.core"
+ inputs.file(jalviewDir+"/.project")
+ outputs.dir(projdir)
+ outputs.upToDateWhen { file(projdir).exists() }
+}
+
+task jalviewjsTranspile(type: Exec) {
+ dependsOn jalviewjsEclipseSetup
+ dependsOn jalviewjsProjectImport
+ dependsOn jalviewjsEclipsePaths
+ executable(eclipseBinary)
+ args(["-nosplash", "--launcher.suppressErrors", "-application", "org.eclipse.jdt.apt.core.aptBuild", "-data", eclipseWorkspace, "-"+jalviewjs_eclipseBuildArg, eclipse_project_name ])
+
+ def stdout
+ def stderr
+ doFirst {
+ stdout = new ByteArrayOutputStream()
+ stderr = new ByteArrayOutputStream()
+
+ 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}"),
+ stdout),
+ standardOutput)
+ errorOutput = new org.apache.tools.ant.util.TeeOutputStream(
+ new org.apache.tools.ant.util.TeeOutputStream(
+ new FileOutputStream("${jalviewjsBuildDir}/${jalviewjs_j2s_stderr}"),
+ stderr),
+ errorOutput)
+ } else {
+ standardOutput = new org.apache.tools.ant.util.TeeOutputStream(
+ new FileOutputStream("${jalviewjsBuildDir}/${jalviewjs_j2s_stdout}"),
+ stdout)
+ errorOutput = new org.apache.tools.ant.util.TeeOutputStream(
+ new FileOutputStream("${jalviewjsBuildDir}/${jalviewjs_j2s_stderr}"),
+ 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")
+ }
+ }
+
+ inputs.dir(sourceDir)
+ outputs.dir(eclipse_bin_dir+"/main")
+ 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"
+ description "Prepares the website folder including unzipping files and copying resources"
+ dependsOn jalviewjsSitePath
+ dependsOn jalviewjsUnzipFiles
+ dependsOn jalviewjsCopyResources
+ dependsOn jalviewjsCopySiteResources
+}
+
+task jalviewjsBuildSite {
+ group "JalviewJS"
+ description "Builds the whole website including transpiled code"
+ dependsOn jalviewjsCopyTransferSite
+ dependsOn jalviewjsPrepareSite
+}
+
+task jalviewjsSiteTar(type: Tar) {
+ group "JalviewJS"
+ description "Creates a tar.gz file for the website"
+ dependsOn jalviewjsBuildSite
+ def outputFilename = "jalviewjs-site-${JALVIEW_VERSION}.tar.gz"
+ try {
+ archiveFileName = outputFilename
+ } catch (Exception e) {
+ archiveName = outputFilename
+ }
+
+ compression Compression.GZIP
+
+ from jalviewjsSiteDir
+ into jalviewjs_site_dir // this is inside the tar file
+
+ inputs.dir(jalviewjsSiteDir)
+}
+
+task jalviewjsServer {
+ group "JalviewJS"
+ description "Starts a webserver on localhost to test the website"
+ dependsOn jalviewjsSitePath
+ doLast {
+
+ SimpleHttpFileServerFactory factory = new SimpleHttpFileServerFactory()
+ def port = Integer.valueOf(jalviewjs_server_port)
+ def start = port
+ def running = false
+ while(port < start+1000 && !running) {
+ try {
+ def doc_root = new File(jalviewDirAbsolutePath +"/"+ jalviewjsSiteDir)
+ jalviewjsServer = factory.start(doc_root, port)
+ running = true
+ 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")
+ } catch (Exception e) {
+ port++;
+ }
+ }
+
+ }
+
+}
+
+task jalviewjs {
+ group "JalviewJS"
+ description "Build the site"
+ dependsOn jalviewjsBuildSite
+}
+
+