Як налагоджувати код у `jq`

Кілька порад щодо використання функції `debug`


jq має зручний фільтр debug. Використовуймо його, коли розробляємо рішення вправ, щоб оглянути дані, які зараз перебувають у конвеєрі jq.

debug виводить «масив налагодження» у stderr. Він виводить вхідні дані без змін. Першим елементом масиву є рядок тексту (англ. string) "DEBUG:". Другий елемент залежить від того, як ми викликаємо debug.

  1. функція debug без аргументів додає стислий опис вхідних даних до масиву налагодження:

    jq -n '[11, 22, 33] | debug | map(. * 2)'
    

    виводить

     ["DEBUG:",[11,22,33]]
     [
       22,
       44,
       66
     ]
    
  2. версія з одним аргументом пропускає вхідні дані крізь заданий фільтр:

    jq -n '[11, 22, 33] | debug("length: \(length), last: \(.[-1])") | map(. * 2)'
    
     ["DEBUG:","length: 3, last: 33"]
     [
       22,
       44,
       66
     ]
    

    Фільтр не обовʼязково має бути рядком тексту. Ним може бути будь-що, зокрема кілька виразів, розділених комами, для «багаторядкового» виводу налагодження:

    jq -n '[11, 22, 33] as $a | 44 | debug("I am here:", $a, .)'
    
    ["DEBUG:","I am here:"]
    ["DEBUG:",[11,22,33]]
    ["DEBUG:",44]
    44