feat: unix adaptor for elm called starmelon

Introduce starmelon, a program for executing elm functions with input
from files and writing the output back to files.

Support evaluating 4 types of values and 12 types of functions.
```elm
x : String
x : Bytes
x : VirtualDom.Node msg
x : Json.Encode.Value

f : String -> String
f : String -> Bytes
f : String -> VirtualDom.Node msg
f : String -> Json.Encode.Value
f : Bytes -> String
f : Bytes -> Bytes
f : Bytes -> VirtualDom.Node msg
f : Bytes -> Json.Encode.Value
f : Json.Encode.Value -> String
f : Json.Encode.Value -> Bytes
f : Json.Encode.Value -> VirtualDom.Node msg
f : Json.Encode.Value -> Json.Encode.Value
```

My target use case for starmelon is generating html files. It is nice
to be able to write parameterized framgents of markup in multiple
modules and then compose them into a final value. I also have in mind
attempting to replace helm (kubernetes pacakge manager) because I hate
how error prone its string based templating language is.
This commit is contained in:
YetAnotherMinion 2021-09-15 06:07:28 +01:00 committed by nobody
commit f7aff7585d
Signed by: GrocerPublishAgent
GPG key ID: D460CD54A9E3AB86
8 changed files with 1356 additions and 0 deletions

24
Cargo.toml Normal file
View file

@ -0,0 +1,24 @@
[package]
name = "starmelon"
version = "0.1.0"
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
structopt = { version = "0.3" }
elmi = { path = "../../../infra/rust-elmi" }
uuid = { version = "0.8", features = [ "v4" ] }
ahash = "0.7"
serde = { version = "1.0", features = [ "derive" ] }
serde_json = { version ="1.0", features = [] }
# All of these are required for deno's javascript runtime. We need to keep the
# same versions as other projects in our cargo workspace. Multiple different
# versions of rust_v8 seem to break its build script.
deno_runtime = "0.21.0"
tokio = { version = "1.6", features = ["full"] }
deno_core = "0.95.0"
deno_web = "0.44"
rusty_v8 = "0.25.3"
futures = "0.3.15"