+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.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
+
+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 jalviewjsPrepareSite
+ dependsOn jalviewjsTranspile
+}
+
+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 {
+ dependsOn jalviewjsBuildSite
+}
+
+