Como depurar em `jq`

Algumas dicas para usar a função `debug`


O jq traz um prático filtro debug. Usa-o enquanto estás a desenvolver as soluções dos teus exercícios, para inspecionar os dados que estão nesse momento no pipeline do jq.

O debug imprime um "array de depuração" no stderr. Devolve a entrada inalterada. O primeiro elemento do array é a string "DEBUG:". O segundo elemento depende da forma como invocas o debug.

  1. a função debug de aridade zero coloca uma representação compacta da entrada no array de depuração:

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

    produz

     ["DEBUG:",[11,22,33]]
     [
       22,
       44,
       66
     ]
    
  2. a versão de aridade um passa a entrada pelo filtro indicado:

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

    O filtro não tem de ser uma string. Pode ser qualquer coisa, incluindo várias expressões separadas por vírgulas, para obteres uma saída de depuração em várias linhas:

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