Skip to content

Commit

Permalink
fix CompilerMagics.compile package path;remain jupyter.env
Browse files Browse the repository at this point in the history
  • Loading branch information
potoo0 committed Nov 26, 2022
1 parent 0f095a6 commit 0b66f42
Show file tree
Hide file tree
Showing 6 changed files with 477 additions and 19 deletions.
18 changes: 7 additions & 11 deletions UPGRADE.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
Upgrade Note:
Updated:

* Fix `print` input parameter extraction error in code blocks that are called multiple times;
* add `RuntimeCompiler` util;
* add `compile` cellMagic (make sure `--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED` in env *
IJAVA_COMPILER_OPTS*)
![compile](docs/img/compile-cell-magic.png)
* add `read/write` cell/body magic
![r-w](docs/img/read-write-line-magic.png)
![r-w](docs/img/write-cell-magic.png)
* add `cmd` line magic
![cmd](docs/img/cmd-line-magic.png)
1. fix `CompilerMagics.compile` auto generated package path error
2. remain `JupyterIO.jupyterXXX.env`, keep thread stdout rewrite to jupyter

TODO:

1. reload `CompilerMagics.compile` class? DirectExecutionControl > DefaultLoaderDelegate
2. thread stdout JupyterIO.retractEnv; BaseKernel.replaceOutputStreams
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ plugins {
}

group = 'io.github.spencerpark'
version = '1.4.3'
version = '1.4.4'

repositories {
mavenLocal()
Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
Expand Down
6 changes: 5 additions & 1 deletion src/main/java/io/github/spencerpark/ijava/JavaKernel.java
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ public JavaKernel() {
// todo for debug
//try {
// System.out.println("------------- sleep start -------------");
// Thread.sleep(10 * 1000);
// Thread.sleep(10 * 1000L);
// System.out.println("------------- sleep end -------------");
//} catch (InterruptedException e) {
// e.printStackTrace();
Expand Down Expand Up @@ -157,6 +157,10 @@ public MavenResolver getMavenResolver() {
return this.mavenResolver;
}

public JShell getShell() {
return this.evaluator.getShell();
}

public static Magics getMagics() {
return magics;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,16 +57,17 @@ public void compile(List<String> args, String body) {
String bodyCopy = body;
for (String pattern : COMMENT_PATTERNS) bodyCopy = bodyCopy.replaceAll(pattern, "");
Matcher matcher = PACKAGE_PATTERN.matcher(bodyCopy);
String clzCanonicalName = args.get(0);
String[] namePart = clzCanonicalName.split("\\.");
if (!matcher.find()) body = String.format("package %s;", namePart[namePart.length - 1]) + body;
String canonicalName = args.get(0);
String rootPath = canonicalName.substring(0, canonicalName.indexOf("."));
String packagePath = canonicalName.substring(0, canonicalName.lastIndexOf("."));
if (!matcher.find()) body = String.format("package %s;%n%n", packagePath) + body;

// 2. build
RuntimeCompiler.compile(clzCanonicalName, body, buildCompilerOptions(), true);
RuntimeCompiler.compile(canonicalName, body, buildCompilerOptions(), true);

// 3. add to classpath
// todo hot-reload class
GlobFinder resolver = new GlobFinder(namePart[0]);
GlobFinder resolver = new GlobFinder(rootPath);
try {
resolver.computeMatchingPaths().forEach(path -> this.addToClasspath.accept(path.getParent().toAbsolutePath().toString()));
} catch (IOException e) {
Expand Down
Loading

0 comments on commit 0b66f42

Please sign in to comment.