diff --git a/src/main/java/io/github/spencerpark/ijava/JavaKernel.java b/src/main/java/io/github/spencerpark/ijava/JavaKernel.java index ec91637..931f85b 100644 --- a/src/main/java/io/github/spencerpark/ijava/JavaKernel.java +++ b/src/main/java/io/github/spencerpark/ijava/JavaKernel.java @@ -24,6 +24,8 @@ package io.github.spencerpark.ijava; import io.github.spencerpark.ijava.execution.*; +import io.github.spencerpark.ijava.magics.ClasspathMagics; +import io.github.spencerpark.ijava.magics.MavenResolver; import io.github.spencerpark.jupyter.kernel.BaseKernel; import io.github.spencerpark.jupyter.kernel.LanguageInfo; import io.github.spencerpark.jupyter.kernel.ReplacementOptions; @@ -96,21 +98,7 @@ public class JavaKernel extends BaseKernel { this.magicsTransformer = new MagicsSourceTransformer(); this.magics = new Magics(); this.magics.registerMagics(this.mavenResolver); - this.magics.registerLineMagic("jars", args -> { - List jars = args.stream() - .map(GlobFinder::new) - .flatMap(g -> { - try { - return StreamSupport.stream(g.computeMatchingPaths().spliterator(), false); - } catch (IOException e) { - throw new RuntimeException("Exception resolving jar glob", e); - } - }) - .map(p -> p.toAbsolutePath().toString()) - .collect(Collectors.toList()); - jars.forEach(this::addToClasspath); - return jars; - }); + this.magics.registerMagics(new ClasspathMagics(this::addToClasspath)); this.languageInfo = new LanguageInfo.Builder("Java") .version(Runtime.version().toString()) diff --git a/src/main/java/io/github/spencerpark/ijava/magics/ClasspathMagics.java b/src/main/java/io/github/spencerpark/ijava/magics/ClasspathMagics.java new file mode 100644 index 0000000..3f6ddb8 --- /dev/null +++ b/src/main/java/io/github/spencerpark/ijava/magics/ClasspathMagics.java @@ -0,0 +1,56 @@ +package io.github.spencerpark.ijava.magics; + +import io.github.spencerpark.jupyter.kernel.magic.registry.LineMagic; +import io.github.spencerpark.jupyter.kernel.util.GlobFinder; + +import java.io.IOException; +import java.util.List; +import java.util.function.Consumer; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; + +public class ClasspathMagics { + private final Consumer addToClasspath; + + public ClasspathMagics(Consumer addToClasspath) { + this.addToClasspath = addToClasspath; + } + + @LineMagic + public List jars(List args) { + List jars = args.stream() + .map(GlobFinder::new) + .flatMap(g -> { + try { + return StreamSupport.stream(g.computeMatchingFiles().spliterator(), false); + } catch (IOException e) { + throw new RuntimeException("Exception resolving jar glob", e); + } + }) + .map(p -> p.toAbsolutePath().toString()) + .collect(Collectors.toList()); + + jars.forEach(this.addToClasspath); + + return jars; + } + + @LineMagic + public List classpath(List args) { + List paths = args.stream() + .map(GlobFinder::new) + .flatMap(g -> { + try { + return StreamSupport.stream(g.computeMatchingPaths().spliterator(), false); + } catch (IOException e) { + throw new RuntimeException("Exception resolving jar glob", e); + } + }) + .map(p -> p.toAbsolutePath().toString()) + .collect(Collectors.toList()); + + paths.forEach(this.addToClasspath); + + return paths; + } +} diff --git a/src/main/java/io/github/spencerpark/ijava/MavenResolver.java b/src/main/java/io/github/spencerpark/ijava/magics/MavenResolver.java similarity index 99% rename from src/main/java/io/github/spencerpark/ijava/MavenResolver.java rename to src/main/java/io/github/spencerpark/ijava/magics/MavenResolver.java index 7a648b1..b0014bc 100644 --- a/src/main/java/io/github/spencerpark/ijava/MavenResolver.java +++ b/src/main/java/io/github/spencerpark/ijava/magics/MavenResolver.java @@ -21,7 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -package io.github.spencerpark.ijava; +package io.github.spencerpark.ijava.magics; import io.github.spencerpark.ijava.magics.dependencies.CommonRepositories; import io.github.spencerpark.ijava.magics.dependencies.Maven;