-
Notifications
You must be signed in to change notification settings - Fork 3
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
[enhancement/readme] Improved readme #48
base: develop
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,14 +2,39 @@ | |
## Prerequisites | ||
- Java 21 | ||
- Docker | ||
## Used technologies | ||
Technologies used in this project, and so technologies that you should know before contributing. | ||
- Java | ||
- Spring | ||
- Gradle | ||
- Docker (knowing Docker is the most important thing in this project) | ||
|
||
# Structure of the project | ||
There are two projects, JShellAPI and JShellWrapper | ||
JShellAPI is a REST API, and whenever some code is received, it will create a session, by creating a docker container, which will run JShellWrapper inside and then execute the given code in JShellWrapper. | ||
There are two projects, JShellAPI and JShellWrapper. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
|
||
JShellAPI is a REST API, where whenever some code is received, it will create a session, by creating a docker container, which will run JShellWrapper inside and then execute the given code. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
|
||
![JShellAPI diagram](https://github.com/user-attachments/assets/c566b8c0-cf81-4a56-8a0a-5715c33105a7) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
|
||
There are three unrelated ways to run JShellPlaygroundBackend: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. it would be better to say |
||
- [JShellWrapper alone](#how-to-use-jshellwrapper-alone-in-local) in case you specifically want to improve or debug the wrapper | ||
- [JShellAPI in local](#how-to-use-jshellapi) in case you specifically want to improve or debug the API | ||
- [JShellAPI in docker](#how-to-build-jshellapi-and-run-it-in-docker) in case you want to run it like it is used in production, which can be important, because the API needs to create containers from docker inside itself | ||
|
||
## How to use JShellWrapper alone in local | ||
This is only useful if your intent is to run the wrapper alone, without the API, for example if you want to improve the wrapper or debug it. | ||
### From console | ||
* Set the environment variable `evalTimeoutSeconds=15` and `sysOutCharLimit=1024` | ||
* * On `Windows CMD`, use `set evalTimeoutSeconds=15 && set sysOutCharLimit=1024` | ||
* * On `Windows Powershell`, use `$env:evalTimeoutSeconds=15 && $env:sysOutCharLimit=1024` | ||
* * On `Linux Shell`, use `export evalTimeoutSeconds=15 && export sysOutCharLimit=1024` | ||
* Run `./gradlew JShellWrapper:run` | ||
* Alternatively, run: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'd suggest to delete this part :
|
||
* * On `Windows CMD`, `set evalTimeoutSeconds=15 && set sysOutCharLimit=1024 gradlew JShellWrapper:run` | ||
* * On `Windows Powershell`, `$env:evalTimeoutSeconds=15 && $env:sysOutCharLimit=1024 ./gradlew JShellWrapper:run` | ||
* * On `Linux Shell`, `evalTimeoutSeconds=15 sysOutCharLimit=1024 ./gradlew JShellWrapper:run` | ||
### From IntelliJ | ||
- Go in Run → Run... → Edit Configurations → create a configuration | ||
- Go in Run → Run... → Edit Configurations → create a gradle configuration | ||
- Select the command `JShellWrapper:run` | ||
- Click on modify options, and check `VM options` | ||
- Then add `evalTimeoutSeconds=15;sysOutCharLimit=1024` in the VM options | ||
|
@@ -26,9 +51,9 @@ JShellAPI is a REST API, and whenever some code is received, it will create a se | |
- Run `JShellWrapper:jibDockerBuild` to build the image | ||
- Run `bootRun` | ||
|
||
# How to build JShellAPI in and run it in Docker | ||
# How to build JShellAPI and run it in Docker | ||
- Launch Docker | ||
- Run `jibDockerBuild` to create the image | ||
- Run `./gradlew jibDockerBuild` to create the image | ||
- Create a folder outside the project | ||
- `cd` to this folder | ||
- Copy `docker-compose.yaml` inside it | ||
|
@@ -45,5 +70,12 @@ JShellAPI is a REST API, and whenever some code is received, it will create a se | |
-application.yaml | ||
``` | ||
|
||
## How to use JShellApi ? | ||
### Try JShell API | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Place this section under JShellApi section |
||
Create a session called `test` and execute `2+2` on it. | ||
Note that the port might be different. | ||
```shell | ||
curl --request POST --url http://localhost:8080/jshell/eval/test --data '2+2' | ||
``` | ||
|
||
### How to use JShellApi ? | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please place this under a JShellAPi section |
||
See [JShellAPI README](JShellAPI/README.MD) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It would be better to bring the content here and add note to inform that it's NOT updated |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Prerequisites
section;