Estrarre dati dalle issue di un repository GitHub
A cura di
Totò Fiandaca
| issue
#210
| guida/e
Andrea Borruso
Alcune volte è utile conosce il numero di issue aperte/chiuse di un repository GitHub, anche solo per capire lo stato di salute di un progetto. L’interrogazione è possibile farla direttamnete nel repository tramite il browser, ma per ottenere statistiche su più mesi o anni, oppure, su più etichette: open/closed/regression ecc…, occorre utilizzare strumenti più adatti come, per esempio, le API di GitHub.
Caso d’uso
Ottenere un file CSV con i dati (data e numero issue) delle issue di QGIS per tutti i mesi del 2021 e 2022, lo script che fa questo lavoro è:
#!/bin/bash
if [ -f ./toto.jsonl ]; then
rm ./toto.jsonl
fi
for i in 2021-01-31 2021-02-28 2021-03-31 2021-04-30 2021-05-31 2021-06-30 2021-07-31 2021-08-31 2021-09-30 2021-10-31 2021-11-30 2021-12-31 2022-01-31 2022-02-28 2022-03-31; do
gh api -X GET search/issues -f q='repo:qgis/QGIS type:issue created:<'"$i"' state:open label:bug' | jq -c '{data:"'"$i"'",count:.total_count}' >> ./toto.jsonl
done
in output un file jsonl
{"data":"2021-01-31","count":693}
{"data":"2021-02-28","count":720}
{"data":"2021-03-31","count":749}
{"data":"2021-04-30","count":775}
{"data":"2021-05-31","count":795}
{"data":"2021-06-30","count":826}
{"data":"2021-07-31","count":864}
{"data":"2021-08-31","count":900}
{"data":"2021-09-30","count":935}
{"data":"2021-10-31","count":975}
{"data":"2021-11-30","count":1022}
{"data":"2021-12-31","count":1055}
{"data":"2022-01-31","count":1095}
{"data":"2022-02-28","count":1151}
{"data":"2022-03-31","count":1249}
{"data":"2022-01-31","count":1095}
{"data":"2022-02-28","count":1151}
{"data":"2022-03-31","count":1249}
leggibile con VisiData
, Miller
ecc.
API GitHub
gh api -X GET search/issues -f q='repo:qgis/QGIS type:issue created:<'"$i"' state:open label:bug'
dove:
- repo: indicare il nome del progetto;
- type: indicare il tipo, in questo caso sono le issue;
- created: per indicare date di creazione issue;
- state: per indicare lo stato dell’issue, open, closed
- label: indicare una etichetta dell’issue, bug, regression, expression, feature request, 3D ecc…
Utility nativa
Per installare l’utility nativa (in qualsiasi sistema operativo) segui link https://github.com/cli/cli/releases/tag/v2.8.0; una volta installata occorre attivare l’autenticazione (si fa una volta).
Per GNU/Linux Ubuntu
# scarica la versione attuale v2.8.0
wget https://github.com/cli/cli/releases/download/v2.8.0/gh_2.8.0_linux_amd64.tar.gz
# unzippa
tar xvf gh_2.8.0_linux_amd64.tar.gz
# copia il file binario dentro /usr/local/bin/
sudo cp gh_2.8.0_linux_amd64/bin/gh /usr/local/bin/
# copia il manuale
sudo cp -r gh_2.8.0_linux_amd64/share/man/man1/* /usr/share/man/man1/
Autenticazione
digitare nella shell:
gh auth login
- selezionare sempre la prima opzione;
- copiare il codice che ci suggerisce e incollarlo nel browser: