haskell-jsonnet icon indicating copy to clipboard operation
haskell-jsonnet copied to clipboard

Top-level arguments

Open moleike opened this issue 4 years ago • 0 comments

Jsonnet programs cannot always be self-contained, consider e.g. when the generated config needs to have secrets in it. In this case, you do not want to commit your secrets alongside code. More generally, you might want to parameterise your program with commit hashes, versions numbers, etc.

Top-level arguments (TLAs) allow you to call Jsonnet programs with parameters, as long as your program evaluates to a function.

>>> jsonnet -e 'std.map' --tla-code 'func=function(x) x * x' --tla-code 'arr=[1, 2, 3]'
>>> 
[
   1,
   4,
   9
]

If a program does not reduce to a top-level function, then the arguments are ignored.

See here for how it's done in go-jsonnet: https://github.com/google/go-jsonnet/blob/v0.17.0/interpreter.go#L1227

moleike avatar Apr 07 '21 04:04 moleike