Πώς να κάνεις debug στο `jq`

Μερικές συμβουλές για τη χρήση της συνάρτησης `debug`


Το jq διαθέτει ένα εύχρηστο φίλτρο debug. Χρησιμοποίησέ το όσο αναπτύσσεις τις λύσεις των ασκήσεών σου, για να εξετάσεις τα δεδομένα που βρίσκονται εκείνη τη στιγμή στο pipeline του jq.

Το debug εκτυπώνει έναν "πίνακα αποσφαλμάτωσης" στο stderr. Δίνει ως έξοδο την είσοδο χωρίς αλλαγές. Το πρώτο στοιχείο του πίνακα είναι η συμβολοσειρά "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