Comment déboguer en `jq`

Quelques astuces pour utiliser la fonction `debug`


jq est fourni avec un filtre debug bien pratique. Utilise-le pendant que tu développes les solutions de tes exercices, pour inspecter les données qui se trouvent à cet instant dans le pipeline jq.

debug affiche un « tableau de débogage » sur stderr. Il renvoie l'entrée inchangée. Le premier élément du tableau est la string DEBUG:. Le second élément dépend de la façon dont tu appelles debug.

  1. la fonction debug d'arité zéro place une représentation compacte de l'entrée dans le tableau de débogage :

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

    affiche

     ["DEBUG:",[11,22,33]]
     [
       22,
       44,
       66
     ]
    
  2. la version d'arité un fait passer l'entrée dans le filtre donné :

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

    Le filtre n'a pas besoin d'être une string. Il peut être n'importe quoi, y compris plusieurs expressions séparées par des virgules, pour une sortie de débogage « multiligne » :

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