Simple golang cgo wrapper around JSonnet VM.
Everything in libjsonnet.h is covered except the multi-file evaluators.
See jsonnet_test.go for how to use it.
vm := jsonnet.Make()
vm.ExtVar("color", "purple")
x, err := vm.EvaluateSnippet(`Test_Demo`, `"dark " + std.extVar("color")`)
if err != nil {
panic(err)
}
if x != "\"dark purple\"\n" {
panic("fail: we got " + x)
}
vm.Destroy()
$ ( cd jsonnet_main/ ; go build -x -a )
...
mv $WORK/b001/exe/a.out jsonnet_main
...
$ echo "{ a: 1, b: 2 }" | jsonnet_main/jsonnet_main /dev/stdin
{
"a": 1,
"b": 2
}
$ cat test1.j
{
shell: "/bin/sh",
awk: "/usr/bin/awk",
}
$ jsonnet_main/jsonnet_main test1.j
{
"awk": "/usr/bin/awk",
"shell": "/bin/sh"
}
$ cat test2.j
local test1 = import "test1.j";
test1 {
shell: "/bin/csh",
}
$ jsonnet_main/jsonnet_main test2.j
{
"awk": "/usr/bin/awk",
"shell": "/bin/csh"
}
$ echo ' std.extVar("a") + "bar" ' | jsonnet_main/jsonnet_main /dev/stdin a=foo
"foobar"
Notice the various LICENSE*
files. I cannot offer legal advice,
but you might find that the Apache License is the most restrictive.
Most of this code comes from https://github.com/google/jsonnet and is under the Apache License, Version 2.0, January 2004, and our files that match filenames there are under that license.
Notice the third_party/
directory in that distribution.
It has json/
and md5/
under their own licences, and our files
that match filenames there are under those licenses.
Anything new added here is under an MIT license in the plain LICENSE
file.