Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Changes to add a bash magic #146

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 28 additions & 1 deletion docs/magics.md
Original file line number Diff line number Diff line change
Expand Up @@ -124,4 +124,31 @@ The cell magic is designed to make it very simple to copy and paste from any REA
<artifactId>jupyter-jvm-basekernel</artifactId>
<version>2.0.0-SNAPSHOT</version>
</dependency>
```
```


### bash

Runs a shell command and show the output

###### Line magic

* **arguments**:
* command and list of arguments of the command

Ex: To get a resource from an URL and save to a file in `/tmp`

```
%bash wget URL -O /tmp/file
```

Ex: to list files in a folder
```
%bash ls folder
```

This can be integrated with other Java sentences:
```java
System.out.println("Contents of folder:");
%bash ls folder
```
2 changes: 2 additions & 0 deletions src/main/java/io/github/spencerpark/ijava/JavaKernel.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import io.github.spencerpark.ijava.execution.*;
import io.github.spencerpark.ijava.magics.ClasspathMagics;
import io.github.spencerpark.ijava.magics.MavenResolver;
import io.github.spencerpark.ijava.magics.BashMagics;
import io.github.spencerpark.jupyter.kernel.BaseKernel;
import io.github.spencerpark.jupyter.kernel.LanguageInfo;
import io.github.spencerpark.jupyter.kernel.ReplacementOptions;
Expand Down Expand Up @@ -95,6 +96,7 @@ public JavaKernel() {
this.magics.registerMagics(this.mavenResolver);
this.magics.registerMagics(new ClasspathMagics(this::addToClasspath));
this.magics.registerMagics(new Load(List.of(".jsh", ".jshell", ".java", ".ijava"), this::eval));
this.magics.registerMagics(new BashMagics());

this.languageInfo = new LanguageInfo.Builder("Java")
.version(Runtime.version().toString())
Expand Down
30 changes: 30 additions & 0 deletions src/main/java/io/github/spencerpark/ijava/magics/BashMagics.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@

package io.github.spencerpark.ijava.magics;

import io.github.spencerpark.jupyter.kernel.magic.registry.LineMagic;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.List;

public class BashMagics {

@LineMagic(aliases={"bash","shell"})
public void bash(List<String> args) {
ProcessBuilder pb = new ProcessBuilder(args);
StringBuffer sb = new StringBuffer();
try {
Process p = pb.start();
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream(), "UTF-8"));
p.waitFor();
String cad = "";
while ((cad = br.readLine()) != null){
sb.append(cad);
sb.append('\n');
}
br.close();
} catch (Exception ex) {
ex.printStackTrace();
}
System.out.println(sb.toString());
}
}