import com.vladsch.flexmark.ext.autolink.AutolinkExtension
import com.vladsch.flexmark.ext.anchorlink.AnchorLinkExtension
import com.vladsch.flexmark.ext.toc.TocExtension
+import com.google.common.hash.HashCode
+import com.google.common.hash.Hashing
+import com.google.common.io.Files
buildscript {
repositories {
testSourceDir = useClover ? cloverTestInstrDir : testDir
testClassesDir = useClover ? cloverTestClassesDir : "${jalviewDir}/${test_output_dir}"
- getdownWebsiteDir = string("${jalviewDir}/${getdown_website_dir}/${JAVA_VERSION}")
+ getdownChannelDir = string("${getdown_website_dir}/${propertiesChannelName}")
+ getdownAppBaseDir = string("${jalviewDir}/${getdownChannelDir}/${JAVA_VERSION}")
getdownArchiveDir = string("${jalviewDir}/${getdown_archive_dir}")
getdownFullArchiveDir = null
getdownTextLines = []
getdownLaunchJvl = null
+ getdownVersionLaunchJvl = null
buildDist = true
buildProperties = null
// the following values might be overridden by the CHANNEL switch
getdownDir = string("${getdownChannelName}/${JAVA_VERSION}")
getdownAppBase = string("${getdown_channel_base}/${getdownDir}")
- getdownArchiveAppBase = null
+ getdownArchiveAppBase = getdown_archive_base
getdownLauncher = string("${jalviewDir}/${getdown_lib_dir}/${getdown_launcher}")
getdownAppDistDir = getdown_app_dir_alt
getdownImagesDir = string("${jalviewDir}/${getdown_images_dir}")
reportRsyncCommand = true
install4jSuffix = ""
install4jInstallerName = "${jalview_name} Installer"
- getdownArchiveAppBase = getdown_archive_base
break
case "ARCHIVE":
case "ARCHIVELOCAL":
getdownChannelName = string("archive/${JALVIEW_VERSION}")
getdownDir = string("${getdownChannelName}/${JAVA_VERSION}")
- getdownAppBase = file(getdownWebsiteDir).toURI().toString()
+ getdownAppBase = file(getdownAppBaseDir).toURI().toString()
if (!file("${ARCHIVEDIR}/${package_dir}").exists()) {
throw new GradleException("Must provide an ARCHIVEDIR value to produce an archive distribution")
} else {
case [ "LOCAL", "JALVIEWJS" ]:
JALVIEW_VERSION = "TEST"
- getdownAppBase = file(getdownWebsiteDir).toURI().toString()
+ getdownAppBase = file(getdownAppBaseDir).toURI().toString()
getdownArchiveAppBase = file("${jalviewDir}/${getdown_archive_dir}").toURI().toString()
getdownLauncher = string("${jalviewDir}/${getdown_lib_dir}/${getdown_launcher_local}")
install4jExtraScheme = "jalviewl"
}
JALVIEW_VERSION_UNDERSCORES = JALVIEW_VERSION.replaceAll("\\.", "_")
+ hugoDataJsonFile = file("${jalviewDir}/${hugo_build_dir}/data/installers/installers-${JALVIEW_VERSION_UNDERSCORES}.json")
// override getdownAppBase if requested
if (findProperty("getdown_appbase_override") != null) {
// revert to LOCAL if empty string
if (string(getdown_appbase_override) == "") {
- getdownAppBase = file(getdownWebsiteDir).toURI().toString()
+ getdownAppBase = file(getdownAppBaseDir).toURI().toString()
getdownLauncher = string("${jalviewDir}/${getdown_lib_dir}/${getdown_launcher_local}")
} else if (string(getdown_appbase_override).startsWith("file://")) {
getdownAppBase = string(getdown_appbase_override)
.toLowerCase()
getdownWrapperLink = install4jUnixApplicationFolder // e.g. "jalview_local"
- getdownAppDir = string("${getdownWebsiteDir}/${getdownAppDistDir}")
- //getdownJ11libDir = "${getdownWebsiteDir}/${getdown_j11lib_dir}"
- getdownResourceDir = string("${getdownWebsiteDir}/${getdown_resource_dir}")
- getdownInstallDir = string("${getdownWebsiteDir}/${getdown_install_dir}")
+ getdownAppDir = string("${getdownAppBaseDir}/${getdownAppDistDir}")
+ //getdownJ11libDir = "${getdownAppBaseDir}/${getdown_j11lib_dir}"
+ getdownResourceDir = string("${getdownAppBaseDir}/${getdown_resource_dir}")
+ getdownInstallDir = string("${getdownAppBaseDir}/${getdown_install_dir}")
getdownFilesDir = string("${jalviewDir}/${getdown_files_dir}/${JAVA_VERSION}/")
getdownFilesInstallDir = string("${getdownFilesDir}/${getdown_install_dir}")
/* compile without modules -- using classpath libraries
doFirst {
// clean the getdown website and files dir before creating getdown folders
- delete getdownWebsiteDir
+ delete getdownAppBaseDir
delete getdownFilesDir
copy {
copy {
from channelPropsFile
- into getdownWebsiteDir
+ into getdownAppBaseDir
}
getdownWebsiteResourceFilenames += file(channelPropsFile).getName()
if (s.exists()) {
copy {
from s
- into "${getdownWebsiteDir}/${getdown_wrapper_script_dir}"
+ into "${getdownAppBaseDir}/${getdown_wrapper_script_dir}"
}
getdownTextLines += "resource = ${getdown_wrapper_script_dir}/${script}"
}
getdownTextLines += "jvmarg = -Dgetdownappbase=${getdownAppBase}"
}
- def getdownTxt = file("${getdownWebsiteDir}/getdown.txt")
+ def getdownTxt = file("${getdownAppBaseDir}/getdown.txt")
getdownTxt.write(getdownTextLines.join("\n"))
getdownLaunchJvl = getdown_launch_jvl_name + ( (jvlChannelName != null && jvlChannelName.length() > 0)?"-${jvlChannelName}":"" ) + ".jvl"
- def launchJvl = file("${getdownWebsiteDir}/${getdownLaunchJvl}")
+ def launchJvl = file("${getdownAppBaseDir}/${getdownLaunchJvl}")
launchJvl.write("appbase=${getdownAppBase}")
// files going into the getdown website dir: getdown-launcher.jar
copy {
from getdownLauncher
rename(file(getdownLauncher).getName(), getdown_launcher_new)
- into getdownWebsiteDir
+ into getdownAppBaseDir
}
// files going into the getdown website dir: getdown-launcher(-local).jar
if (file(getdownLauncher).getName() != getdown_launcher) {
rename(file(getdownLauncher).getName(), getdown_launcher)
}
- into getdownWebsiteDir
+ into getdownAppBaseDir
}
// files going into the getdown website dir: ./install dir and files
from getdownTxt
from launchJvl
from getdownLauncher
- from "${getdownWebsiteDir}/${getdown_build_properties}"
- from "${getdownWebsiteDir}/${channel_props}"
+ from "${getdownAppBaseDir}/${getdown_build_properties}"
+ from "${getdownAppBaseDir}/${channel_props}"
if (file(getdownLauncher).getName() != getdown_launcher) {
rename(file(getdownLauncher).getName(), getdown_launcher)
}
if (buildDist) {
inputs.dir("${jalviewDir}/${package_dir}")
}
- outputs.dir(getdownWebsiteDir)
+ outputs.dir(getdownAppBaseDir)
outputs.dir(getdownFilesDir)
}
classpath = files(getdownLauncher)
}
main = "com.threerings.getdown.tools.Digester"
- args getdownWebsiteDir
- inputs.dir(getdownWebsiteDir)
- outputs.file("${getdownWebsiteDir}/digest2.txt")
+ args getdownAppBaseDir
+ inputs.dir(getdownAppBaseDir)
+ outputs.file("${getdownAppBaseDir}/digest2.txt")
}
dependsOn getdownDigest
doLast {
if (reportRsyncCommand) {
- def fromDir = getdownWebsiteDir + (getdownWebsiteDir.endsWith('/')?'':'/')
+ def fromDir = getdownAppBaseDir + (getdownAppBaseDir.endsWith('/')?'':'/')
def toDir = "${getdown_rsync_dest}/${getdownDir}" + (getdownDir.endsWith('/')?'':'/')
println "LIKELY RSYNC COMMAND:"
println "mkdir -p '$toDir'\nrsync -avh --delete '$fromDir' '$toDir'"
def v = "v${JALVIEW_VERSION_UNDERSCORES}"
def vDir = "${getdownArchiveDir}/${v}"
getdownFullArchiveDir = "${vDir}/getdown"
- def vLaunchVersionJvl = "${vDir}/jalview-${v}.jvl"
+ getdownVersionLaunchJvl = "${vDir}/jalview-${v}.jvl"
+
def vAltDir = "alt_${v}"
def archiveImagesDir = "${jalviewDir}/${channel_properties_dir}/old/images"
doFirst {
- if (getdownArchiveAppBase == null) {
- throw new StopExecutionException("Cannot create getdownArchive for CHANNEL=${CHANNEL}")
- }
-
// cleanup old "old" dir
delete getdownArchiveDir
// the libdir
copy {
- from "${getdownWebsiteDir}/${getdownAppDistDir}"
+ from "${getdownAppBaseDir}/${getdownAppDistDir}"
into "${getdownFullArchiveDir}/${vAltDir}"
}
getdownArchiveTxt.write(getdownArchiveTextLines.join("\n"))
- def vLaunchJvl = file(vLaunchVersionJvl)
+ def vLaunchJvl = file(getdownVersionLaunchJvl)
vLaunchJvl.getParentFile().mkdirs()
vLaunchJvl.write("appbase=${getdownFullArchiveAppBase}\n")
def vLaunchJvlPath = vLaunchJvl.toPath().toAbsolutePath()
// files going into the getdown files dir: getdown.txt, getdown-launcher.jar, channel-launch.jvl, build_properties
copy {
from getdownLauncher
- from "${getdownWebsiteDir}/${getdownLaunchJvl}"
- from "${getdownWebsiteDir}/${getdown_launcher_new}"
- from "${getdownWebsiteDir}/${channel_props}"
+ from "${getdownAppBaseDir}/${getdownLaunchJvl}"
+ from "${getdownAppBaseDir}/${getdown_launcher_new}"
+ from "${getdownAppBaseDir}/${channel_props}"
if (file(getdownLauncher).getName() != getdown_launcher) {
rename(file(getdownLauncher).getName(), getdown_launcher)
}
clean {
doFirst {
- delete getdownWebsiteDir
+ delete getdownAppBaseDir
delete getdownFilesDir
delete getdownArchiveDir
}
task cleanInstallersDataFiles {
def installersOutputTxt = file("${jalviewDir}/${install4jBuildDir}/output.txt")
def installersSha256 = file("${jalviewDir}/${install4jBuildDir}/sha256sums")
- def VERSION_UNDERSCORES = JALVIEW_VERSION.replaceAll("\\.", "_")
- def installersJsonFile = file("${jalviewDir}/${install4jBuildDir}/installers-${VERSION_UNDERSCORES}.json")
+ def hugoDataJsonFile = file("${jalviewDir}/${install4jBuildDir}/installers-${JALVIEW_VERSION_UNDERSCORES}.json")
doFirst {
delete installersOutputTxt
delete installersSha256
- delete installersJsonFile
+ delete hugoDataJsonFile
}
}
'WRAPPER_SCRIPT_BIN_DIR': getdown_wrapper_script_dir,
'INSTALLER_NAME': install4jInstallerName,
'INSTALL4J_UTILS_DIR': install4j_utils_dir,
- 'GETDOWN_WEBSITE_DIR': getdown_website_dir,
+ 'GETDOWN_CHANNEL_DIR': getdownChannelDir,
'GETDOWN_FILES_DIR': getdown_files_dir,
'GETDOWN_RESOURCE_DIR': getdown_resource_dir,
'GETDOWN_DIST_DIR': getdownAppDistDir,
}
//verbose=true
- inputs.dir(getdownWebsiteDir)
+ inputs.dir(getdownAppBaseDir)
inputs.file(install4jConfFile)
inputs.file("${install4jDir}/${install4j_info_plist_file_associations}")
inputs.dir(macosJavaVMDir)
outputs.dir("${jalviewDir}/${install4j_build_dir}/${JAVA_VERSION}")
}
-def writeInstallersJsonFile(File installersOutputTxt, File installersSha256, File installersJsonFile) {
- if (!installersOutputTxt.exists()) {
- throw new GradleException("Required input file '${installersOutputTxt.getPath()}' doesn't exist.")
- return null;
- }
- if (install4jCheckSums && (!installersSha256)) {
- throw new GradleException("Required input file '${installersSha256.getPath()}' doesn't exist.")
- return null;
- }
- def hash = ["channel":getdownChannelName,"date":getDate("yyyy-MM-dd HH:mm:ss")]
- def idHash = [:]
- installersOutputTxt.readLines().each { def line ->
- if (line.startsWith("#")) {
- return;
- }
- line.replaceAll("\n","")
- def vals = line.split("\t")
- def filename = vals[3]
- def filesize = file(filename).length()
- filename = filename.replaceAll(/^.*\//, "")
- hash[vals[0]] = [ "id" : vals[0], "os" : vals[1], "name" : vals[2], "file" : filename, "filesize" : filesize ]
- idHash."${filename}" = vals[0]
- }
- if (install4jCheckSums) {
- installersSha256.readLines().each { def line ->
+def getDataHash(File myFile) {
+ HashCode hash = Files.asByteSource(myFile).hash(Hashing.sha256())
+ return myFile.exists()
+ ? [
+ "file" : myFile.getName(),
+ "filesize" : myFile.length(),
+ "sha256" : hash.toString()
+ ]
+ : null
+}
+
+def writeDataJsonFile(File installersOutputTxt, File installersSha256, File dataJsonFile) {
+ def hash = [
+ "channel" : getdownChannelName,
+ "date" : getDate("yyyy-MM-dd HH:mm:ss"),
+ "git-commit" : "${gitHash} [${gitBranch}]",
+ "version" : JALVIEW_VERSION
+ ]
+ // install4j installer files
+ if (installersOutputTxt.exists()) {
+ def idHash = [:]
+ installersOutputTxt.readLines().each { def line ->
if (line.startsWith("#")) {
return;
}
line.replaceAll("\n","")
- def vals = line.split(/\s+\*?/)
- def filename = vals[1]
- def innerHash = (hash.(idHash."${filename}"))."sha256" = vals[0]
+ def vals = line.split("\t")
+ def filename = vals[3]
+ def filesize = file(filename).length()
+ filename = filename.replaceAll(/^.*\//, "")
+ hash[vals[0]] = [ "id" : vals[0], "os" : vals[1], "name" : vals[2], "file" : filename, "filesize" : filesize ]
+ idHash."${filename}" = vals[0]
+ }
+ if (install4jCheckSums && installersSha256.exists()) {
+ installersSha256.readLines().each { def line ->
+ if (line.startsWith("#")) {
+ return;
+ }
+ line.replaceAll("\n","")
+ def vals = line.split(/\s+\*?/)
+ def filename = vals[1]
+ def innerHash = (hash.(idHash."${filename}"))."sha256" = vals[0]
+ }
}
}
- return installersJsonFile.write(new JsonBuilder(hash).toPrettyString())
-}
-
-
-/*
-ALSO COMPILE AND ADD IN TO THE JSON FILE INFO FOR EXECUTABLE JAR, VERSION JVL FILE, SOURCE TAR FILE
-*/
-
-
-
-
-
-task makeInstallersJsonFile {
- dependsOn installerFiles
-
- def installersOutputTxt = file("${jalviewDir}/${install4jBuildDir}/output.txt")
- def installersSha256 = file("${jalviewDir}/${install4jBuildDir}/sha256sums")
- def VERSION_UNDERSCORES = JALVIEW_VERSION.replaceAll("\\.", "_")
- def installersJsonFile = file("${jalviewDir}/${install4jBuildDir}/installers-${VERSION_UNDERSCORES}.json")
-
- inputs.file(installersOutputTxt)
- if (install4jCheckSums) {
- inputs.file(installersSha256)
- }
- outputs.file(installersJsonFile)
-
- doFirst {
- writeInstallersJsonFile(installersOutputTxt, installersSha256, installersJsonFile)
+ [
+ "JAR": shadowJar.archiveFile, // executable JAR
+ "JVL": getdownVersionLaunchJvl, // version JVL
+ "SOURCE": sourceDist.archiveFile // source TGZ
+ ].each { key, value ->
+ def file = file(value)
+ if (file.exists()) {
+ def fileHash = getDataHash(file)
+ if (fileHash != null) {
+ hash."${key}" = fileHash;
+ }
+ }
}
+ return dataJsonFile.write(new JsonBuilder(hash).toPrettyString())
}
task staticMakeInstallersJsonFile {
if (output == null || sha256 == null || json == null) {
throw new GradleException("Must provide paths to all of output.txt, sha256sums, and output.json with '-Pi4j_output=... -Pi4j_sha256=... -Pi4j_json=...")
}
- writeInstallersJsonFile(file(output), file(sha256), file(json))
+ writeDataJsonFile(file(output), file(sha256), file(json))
}
}
task installers {
dependsOn installerFiles
- dependsOn makeInstallersJsonFile
}
exclude ("utils/InstallAnywhere")
exclude (getdown_files_dir)
- exclude (getdown_website_dir)
+ // getdown_website_dir and getdown_archive_dir moved to build/website/docroot/getdown
+ //exclude (getdown_website_dir)
+ //exclude (getdown_archive_dir)
// exluding these as not using jars as modules yet
exclude ("${j11modDir}/**/*.jar")
}
}
+task dataInstallersJson {
+ group "website"
+ description "Create the installers-VERSION.json data file for installer files created"
+
+ def installersOutputTxt = file("${jalviewDir}/${install4jBuildDir}/output.txt")
+ def installersSha256 = file("${jalviewDir}/${install4jBuildDir}/sha256sums")
+
+ if (installersOutputTxt.exists()) {
+ inputs.file(installersOutputTxt)
+ }
+ if (install4jCheckSums && installersSha256.exists()) {
+ inputs.file(installersSha256)
+ }
+ [
+ shadowJar.archiveFile, // executable JAR
+ getdownVersionLaunchJvl, // version JVL
+ sourceDist.archiveFile // source TGZ
+ ].each { fileName ->
+ if (file(fileName).exists()) {
+ inputs.file(fileName)
+ }
+ }
+
+ outputs.file(hugoDataJsonFile)
+
+ doFirst {
+ writeDataJsonFile(installersOutputTxt, installersSha256, hugoDataJsonFile)
+ }
+}
+
+dataInstallersJson.mustRunAfter installers
+dataInstallersJson.mustRunAfter shadowJar
+dataInstallersJson.mustRunAfter sourceDist
+dataInstallersJson.mustRunAfter getdownArchive
+
task helppages {
dependsOn copyHelp