import java.nio.file.Paths import java.util.concurrent.TimeUnit plugins { id("application") id("java") id("wrapper") id("com.github.johnrengelman.shadow").version("5.2.0") } version = "1.2.1-SNAPSHOT" final isSnapshot = project.version.endsWith("-SNAPSHOT") final SOURCE_ENCODING = "UTF-8" wrapper { gradleVersion = "6.3" distributionType = Wrapper.DistributionType.ALL } repositories { jcenter() if (isSnapshot) { maven { name("Sonatype snapshots") url("https://oss.sonatype.org/content/repositories/snapshots") } } } configurations.all { resolutionStrategy { cacheChangingModulesFor(0, TimeUnit.SECONDS) } } dependencies { implementation(group: "com.google.code.gson", name: "gson", version: "2.8.6") implementation(group: "com.google.guava", name: "guava", version: "28.2-jre") implementation(group: "de.hhu.stups", name: "de.prob2.kernel", version: "3.11.0") implementation(group: "io.github.spencerpark", name: "jupyter-jvm-basekernel", version: "2.3.0") implementation(group: "org.jetbrains", name: "annotations", version: "18.0.0") implementation(group: "se.sawano.java", name: "alphanumeric-comparator", version: "1.4.1") } sourceCompatibility = "1.8" targetCompatibility = "1.8" tasks.withType(JavaCompile) { options.encoding = SOURCE_ENCODING } def readCurrentGitCommit() { def proc = ["git", "rev-parse", "HEAD"].execute(null, project.projectDir) def exitCode = proc.waitFor() if (exitCode != 0) { throw new IllegalStateException("git rev-parse command exited with status code ${exitCode}:\n" + proc.err.readLines().join("\n")) } return proc.in.readLines()[0] } final currentGitCommit = readCurrentGitCommit() processResources { inputs.property("project.version", project.version) inputs.property("currentGitCommit", currentGitCommit) filesMatching("de/prob2/jupyter/build.properties") { expand(version: project.version, commit: readCurrentGitCommit()) } } mainClassName = "de.prob2.jupyter.Main" final KERNEL_SPEC_OUTPUT_PATH = project.buildDir.toPath().resolve(Paths.get("kernelspec")) task createKernelSpec(type: JavaExec) { dependsOn = [shadowJar] main = project.mainClassName args = ["createKernelSpec", KERNEL_SPEC_OUTPUT_PATH.toString()] classpath(shadowJar.archiveFile) if (project.hasProperty("probHome")) { systemProperty("prob.home", project.probHome) } outputs.dir(KERNEL_SPEC_OUTPUT_PATH.toFile()) doFirst { delete(KERNEL_SPEC_OUTPUT_PATH) mkdir(KERNEL_SPEC_OUTPUT_PATH) } } task installKernelSpec(type: Exec) { dependsOn = [createKernelSpec] executable = project.hasProperty("jupyterCommand") ? project.jupyterCommand : "jupyter" def installFlag if (project.hasProperty("kernelspecUserInstall") && project.kernelspecUserInstall == "true") { installFlag = "--user" } else { installFlag = "--sys-prefix" } args = ["kernelspec", "install", installFlag, "--name=prob2", KERNEL_SPEC_OUTPUT_PATH.toString()] }