diff --git a/.gitignore b/.gitignore index a98bc7bdd31d6ae1cca773f2e8d65fd5f22b4981..71c6a896992d914b21bb96b7588241447dee1d73 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ # Gradle .gradle/ /build/ + +# Generated +/kernelspec/prob2/kernel.json diff --git a/build.gradle b/build.gradle index b1843d26b65d97fcf89a1a894d70a62892c2983c..a725fcdc5743839a65a9e6aefb5d2a2003979e93 100644 --- a/build.gradle +++ b/build.gradle @@ -1,3 +1,6 @@ +import java.nio.charset.StandardCharsets +import java.nio.file.Files +import java.nio.file.Paths import java.util.concurrent.TimeUnit plugins { @@ -47,3 +50,35 @@ tasks.withType(JavaCompile) { } mainClassName = "de.prob2.jupyter.Main" + +final KERNEL_SPEC_PATH = project.projectDir.toPath().resolve(Paths.get("kernelspec", "prob2")) +final KERNEL_JSON_PATH = KERNEL_SPEC_PATH.resolve("kernel.json") +task createKernelSpec { + dependsOn = [shadowJar] + outputs.files(KERNEL_JSON_PATH.toFile()) + + doFirst { + final jarPath = shadowJar.archivePath + final jsonText = """{ +\t"argv": [ +\t\t"java", +\t\t"-jar", +\t\t"$jarPath", +\t\t"{connection_file}" +\t], +\t"display_name": "ProB 2", +\t"language": "prob" +} +""" + Files.write(KERNEL_JSON_PATH, jsonText.getBytes(StandardCharsets.UTF_8)) + } +} + +task installKernelSpec(type: Exec) { + dependsOn = [createKernelSpec] + executable = "python3" + args = ["-m", "jupyter", "kernelspec", "install", "--sys-prefix", KERNEL_SPEC_PATH.toString()] +} +if (hasProperty("pythonInterpreter")) { + installKernelSpec.executable = pythonInterpreter +} diff --git a/kernelspec/prob2/logo-32x32.png b/kernelspec/prob2/logo-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..2331b0da00935831167950296364775dfe203027 Binary files /dev/null and b/kernelspec/prob2/logo-32x32.png differ diff --git a/kernelspec/prob2/logo-64x64.png b/kernelspec/prob2/logo-64x64.png new file mode 100644 index 0000000000000000000000000000000000000000..44728e831a7df9e5492db14b45e127537e89e55b Binary files /dev/null and b/kernelspec/prob2/logo-64x64.png differ