Quickstart
Ce parcours prend un vrai flux, le valide, exporte un rapport JSON, et lance une première requête sur les arrêts. Avant de commencer, vérifiez que gapline --version affiche une version. Sinon, voyez Installation.
1. Récupérer un flux public
Section intitulée « 1. Récupérer un flux public »Nous utiliserons le flux de la Société de transport de Montréal (STM) pour cet exemple. N’importe quelle archive GTFS convient — remplacez par la vôtre si vous préférez.
curl -L -o stm.zip https://www.stm.info/sites/default/files/gtfs/gtfs_stm.zip2. Lancer la première validation
Section intitulée « 2. Lancer la première validation »gapline validate -f stm.zip -o output.txtLa console affiche en direct des barres de progression par groupe de règles. Une fois la validation terminée, un bloc de résumé se clôture avec un statut PASS ou FAIL, et le code de retour est non nul dès qu’une erreur est présente.
$ gapline validate -f stm.zip -o output.txtFile Structure [] CSV Formatting [] → Feed loaded: 847,392 rows in 14 filesThird-Party Validators [] Field Validation [] Key & Reference Validation [] Semantic & Logic [] Best Practices [] ===================================Summary===================================45 Errors — 94912 Warnings — 177074 InfosStatus: FAILDetails written to output.txt (every error, warning, and info, with file and line). Chaque anomalie est écrite dans output.txt dans l’ordre d’apparition. Chaque ligne ressemble à :
[ERROR] fk_violation — stop_id "BAD_STOP" not found in stops.txt — stop_times.txt:14203 — stop_id = BAD_STOPSévérités décryptées :
- ERROR — le flux n’est pas conforme. Un consommateur comme Google Maps ou Apple Maps va le rejeter.
- WARNING — le flux est conforme, mais quelque chose est suspect. À corriger.
- INFO — suggestion de bonne pratique. Peut être ignoré dans un premier temps.
Si vous retirez -o, les anomalies sont streamées directement dans la console au-dessus du résumé.
3. Exporter un rapport machine
Section intitulée « 3. Exporter un rapport machine »Dans un pipeline, vous voulez des données structurées, pas du texte coloré.
gapline validate -f stm.zip --format json -o report.jsonreport.json encapsule les anomalies dans un tableau errors et un objet summary. Chaque anomalie porte le rule ID, la section, la sévérité, le message, et — quand la règle pointe un endroit précis — le fichier, la ligne, le champ et la valeur.
{ "errors": [ { "rule_id": "fk_violation", "section": "foreign_key", "severity": "Error", "message": "stop_id \"BAD_STOP\" not found in stops.txt", "file_name": "stop_times.txt", "line_number": 14203, "field_name": "stop_id", "value": "BAD_STOP" } ], "summary": { "error_count": 45, "warning_count": 94912, "info_count": 177074, "passed": false }}4. Interroger les données
Section intitulée « 4. Interroger les données »-
Lister tous les arrêts dont le nom commence par
Gare:Fenêtre de terminal gapline read stops -f stm.zip --where "stop_name LIKE Gare%" -
Récupérer un arrêt par ID :
Fenêtre de terminal gapline read stops -f stm.zip --where "stop_id=STM_10001" -
Exporter le même résultat en CSV pour traitement ultérieur :
Fenêtre de terminal gapline read stops -f stm.zip --where "stop_name LIKE Gare%" --format csv -o gares.csv
La clause --where accepte =, !=, <, <=, >, >=, LIKE, plus AND et OR. Voir la référence du langage de requête pour la grammaire complète.
Étapes suivantes
Section intitulée « Étapes suivantes »- Le workflow de validation complet — formats de sortie, filtres de sévérité, désactivation de règles.
- Éditer un flux de bout en bout avec les commandes CRUD.
- Chaîner plusieurs commandes dans un script
.gl. - Parcourir toutes les sous-commandes dans la référence CLI.