Как распечатать в jsonnet?

Есть ли способ напечатать объекты в jsonnet? Это в основном для целей отладки.

я использую error печатать объекты, но это останавливает выполнение программы.

local obj = [
{
  myKey: 2,
}];
error 'Printing' + std.toString(obj)

Выходы:

RUNTIME ERROR: Printing[{"myKey": 2}]
    snippet:6:1-37  

Лучший способ сделать это?

3 ответа

Решение

Чтобы продолжить ответ Дэйва Каннингема, std.trace() доступен с 0.11.0, он ведет себя как "крючок посередине", где его 1-й аргумент - это строка, которую вы хотите показать, 2-й - это то, что вы хотите вернуть.

Используя его для предоставленного примера:

$ cat foo.jsonnet
local obj = [
{
    myKey: 2,
}];
std.trace("obj content: %s" % [obj], obj)

$ jsonnet foo.jsonnet 
TRACE: foo.jsonnet:5 obj content: [{"myKey": 2}]
[
   {
      "myKey": 2
   }
]

Для потомков OP любезно предоставил новую функцию для решения этой проблемы: std.trace("message", rest).

[устарело, см. другие ответы]

На данный момент (по состоянию на jsonnet 0.10) к сожалению нет. Есть планы включить его в будущий выпуск (проблема здесь: https://github.com/google/jsonnet/issues/130).

Люди используют ошибки (как вы показали в коде) или изменяют код для вывода только той части, которую они хотят (насколько это удобно, зависит от того, как вы структурировали свой код).

Другие вопросы по тегам