+ doFirst {
+ delete install4jConf
+ }
+}
+
+task sourceDist (type: Tar) {
+
+ def VERSION_UNDERSCORES = JALVIEW_VERSION.replaceAll("\\.", "_")
+ def outputFileName = "${project.name}_${VERSION_UNDERSCORES}.tar.gz"
+ // cater for buildship < 3.1 [3.0.1 is max version in eclipse 2018-09]
+ try {
+ archiveFileName = outputFileName
+ } catch (Exception e) {
+ archiveName = outputFileName
+ }
+
+ compression Compression.GZIP
+
+ into project.name
+
+ def EXCLUDE_FILES=["build/*","bin/*","test-output/","test-reports","tests","clover*/*"
+ ,".*"
+ ,"benchmarking/*"
+ ,"**/.*"
+ ,"*.class"
+ ,"**/*.class","${j11modDir}/**/*.jar","appletlib","**/*locales"
+ ,"*locales/**",
+ ,"utils/InstallAnywhere"]
+ def PROCESS_FILES=[ "AUTHORS",
+ "CITATION",
+ "FEATURETODO",
+ "JAVA-11-README",
+ "FEATURETODO",
+ "LICENSE",
+ "**/README",
+ "RELEASE",
+ "THIRDPARTYLIBS","TESTNG",
+ "build.gradle",
+ "gradle.properties",
+ "**/*.java",
+ "**/*.html",
+ "**/*.xml",
+ "**/*.gradle",
+ "**/*.groovy",
+ "**/*.properties",
+ "**/*.perl",
+ "**/*.sh"]
+
+ from(jalviewDir) {
+ exclude (EXCLUDE_FILES)
+ include (PROCESS_FILES)
+ filter(ReplaceTokens, beginToken: '$$', endToken: '$$', tokens: ['Version-Rel': JALVIEW_VERSION,'Year-Rel': getDate("yyyy")])
+ }
+ from(jalviewDir) {
+ exclude (EXCLUDE_FILES)
+ exclude (PROCESS_FILES)
+ exclude ("appletlib")
+ exclude ("**/*locales")
+ exclude ("*locales/**")
+ exclude ("utils/InstallAnywhere")
+
+ exclude (getdown_files_dir)
+ exclude (getdown_website_dir)
+
+ // exluding these as not using jars as modules yet
+ exclude ("${j11modDir}/**/*.jar")
+}
+// from (jalviewDir) {
+// // explicit includes for stuff that seemed to not get included
+// include(fileTree("test/**/*."))
+// exclude(EXCLUDE_FILES)
+// exclude(PROCESS_FILES)
+// }
+}
+
+task helppages {
+ dependsOn copyHelp
+ dependsOn pubhtmlhelp
+
+ inputs.dir("${classes}/${helpDir}")
+ outputs.dir("${helpOutputDir}")
+}
+
+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 {
+ 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 {
+ dependsOn jalviewjsSitePath
+
+ def zipFiles = fileTree(dir: "${jalviewjs_utils_dir}/${jalviewjs_libjs_dir}", include: "*.zip")
+ zipFiles += "${jalviewjs_utils_dir}/${jalviewjs_swingjs_zip}"
+
+ doLast {
+ zipFiles.each { file_zip ->
+ copy {
+ from zipTree(file_zip)
+ into jalviewjsSiteDir
+ }
+ }
+ }
+
+ inputs.files zipFiles
+ outputs.dir jalviewjsSiteDir
+}
+
+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)
+ }
+ if (OperatingSystem.current().isMacOsX()) {
+ 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"
+ }
+
+ eclipseVersion = "4.12" // default
+ if (file(eclipseProduct).exists()) {
+ 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}/${fromDropinsDir}", include: "*.jar")
+ def outputDir = eclipseDropinsDir
+
+ inputs.files inputFiles
+ inputFiles.each { file ->
+ outputs.file("${outputDir}/${file.name}")
+ }
+
+ doLast {
+ inputFiles.each { file ->
+ copy {
+ from file
+ into outputDir
+ }
+ }
+ }
+}
+
+// this version (type: Copy) will delete anything in the eclipse dropins folder that isn't in fromDropinsDir
+task NEWjalviewjsEclipseCopyDropins(type: Copy) {
+ dependsOn jalviewjsEclipsePaths
+ from fromDropinsDir
+ into eclipseDropinsDir
+}
+
+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)
+ }
+ }
+ inputs.properties(props.findAll( { k, v -> k.startsWith("j2s.") } ))
+ 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