myriad/README.md
1computer1 8080b360c9 deps: use Stack LTS 15.15 and update deps
- use GHC 8.8.3
- use Dhall 1.30.0
- relax version bounds greatly
2020-06-07 01:47:33 -04:00

64 lines
1.8 KiB
Markdown

# Myriad
Arbitrary code execution server using Docker.
## Requirements
You can use either `stack` or `cabal`.
- `stack` should be >= 2.1.1, `cabal` should be >= 2.4.0.0.
- GHC 8.8.3 is required if not already installed by `stack` or if using `cabal`.
#### Install Binary
Make sure the place where `stack` or `cabal` places binaries is in your PATH.
- For `stack`, you can get it with `stack path --local-bin`.
- For `cabal`, you should find it in `$HOME/.cabal/bin` (Linux) or `%APPDATA%\cabal\bin` (Windows).
Run `stack install` or `cabal new-install` inside the project folder.
Make sure the configuration is filled out, see `config.example.dhall` for an example.
Run `myriad --config /path/to/config.dhall --languages /path/to/languages/`.
#### Install in Place
Make sure the configuration is filled out, see `config.example.dhall` for an example.
Run `stack run` or `cabal v2-run` inside the project folder.
The config and languages folder will default to `./config.dhall` and `./languages`.
You can configure this with `--config` and `--languages`.
## Endpoints
### **GET** `/languages`
List of enabled languages.
Example response:
```json
["haskell", "javascript"]
```
### **POST** `/eval`
Evaluate code.
JSON payload with `language` and `code` keys.
The `language` is as in the name of a subfolder in the `languages` directory.
Example payload:
```json
{ "language": "haskell", "code": "main = print (1 + 1)" }
```
Example response:
```json
{ "result": "2\n" }
```
Errors with 404 if `language` is not found, `504` if evaluation timed out, or `500` if evaluation failed for other reasons.
### **GET** `/containers`
List of containers being handled by Myriad.
### **POST** `/cleanup`
Kill all containers, giving back the names of the containers killed.