This an implementation of Jsonnet in pure Go. It is feature complete but is not as heavily exercised as the Jsonnet C++ implementation. Please try it out and give feedback.
This code is known to work on Go 1.8 and above. We recommend always using the newest stable release of Go.
go get github.com/google/go-jsonnet/cmd/jsonnet
git clone github.com/google/go-jsonnet
cd go-jsonnet
go build ./cmd/jsonnet
go get -u github.com/google/go-jsonnet
cd $GOPATH/src/github.com/google/go-jsonnet
go get -u .
go build ./cmd/jsonnet
./tests.sh # Also runs `go test ./...`
We are generating some helper classes on types by using http://clipperhouse.github.io/gen/. Do the following to regenerate these if necessary:
go get github.com/clipperhouse/gen
go get github.com/clipperhouse/set
export PATH=$PATH:$GOPATH/bin # If you haven't already
go generate
Standard library source code is kept in cpp-jsonnet
submodule,
because it is shared with Jsonnet C++
implementation.
For perfomance reasons we perform preprocessing on the standard library, so for the changes to be visible, regeneration is necessary:
./reset_stdast_go.sh && go run cmd/dumpstdlibast/dumpstdlibast.go
The above command recreates ast/stdast.go
which puts the desugared standard library into the right data structures, which lets us avoid the parsing overhead during execution.