- mdq est un outil qui permet de trouver facilement des parties spécifiques dans des documents Markdown
- Utile pour vérifier certains modèles ou check-lists dans des documents Markdown comme les PR GitHub
- Par exemple, pour trouver des tâches non terminées, on peut utiliser la commande
mdq '- [ ]'
Utilisation de base
- Sélectionner la section contenant "usage" :
cat example.md | mdq '# usage'
- Les filtres peuvent être chaînés :
cat example.md | mdq '# usage | -'
- Vérifier qu'une recherche d'issues existantes a bien été effectuée avant de soumettre un bug report :
mdq -q '- [x] I have searched for existing issues'
- Extraire un ticket de référence : lorsqu'une PR mentionne un ticket, il est possible d'extraire les liens du Markdown en JSON puis d'obtenir l'URL avec jq.
TICKET_URL="$(echo "$PR_TEXT" | mdq --output json '# Ticket | [](^https://tickets.example.com/[A-Z]+-\d+$)' | jq -r '.items[].link.url')"
- Réduire de grands tableaux : il est possible de filtrer un tableau pour trouver l'astreinte d'une date donnée ou d'une personne donnée.
- Trouver les dates d'astreinte d'Alice :
cat oncall.md | mdq ':-: /On-Call|Alice/:-: *'
- Trouver la personne d'astreinte pour la semaine du 15 janvier 2024 :
cat oncall.md | mdq ':-: * :-: 2024-01-15'
1 commentaires
Avis Hacker News
Les PR GitHub sont des documents Markdown, et certaines organisations utilisent des modèles spécifiques incluant une checklist que tous les reviewers doivent compléter
L’une des raisons pour lesquelles des formats de fichiers textuels comme Markdown ont gagné en popularité est qu’ils pouvaient être analysés avec des expressions régulières et gérés via le contrôle de version
Mon workflow passe par l’AST JSON de Pandoc, puis utilise Jq
Merci du partage, je vais y jeter un œil
Après avoir essayé plusieurs options, le seul « système de notes » que je continue à utiliser est un répertoire de fichiers Markdown automatiquement commités dans git à chaque modification
Je voulais ajouter quelques fonctionnalités intelligentes pour suivre les tâches
Je voulais traiter les documents Markdown comme des arbres
MarkdownDB fournit un backend SQLite pour les fichiers Markdown
.mdn’est pas toujours respectée ni prise en compte comme cible de sérialisation de donnéesMerci du partage, je n’ai pas de cas d’usage immédiat pour le moment, mais c’est bien de savoir que ce genre d’outil existe
Je voulais signaler un petit point sur les appels shell documentés
cat example.md | mdq '# usage'pourrait être remplacé par une redirection de fichier vers stdin afin d’éviter de lancer un processuscatinutileecho "$ISSUE_TEXT" | mdq -q '- [x] I have searched for existing issues'pourrait éviter un processusechoinutileCe serait bien d’ajouter des exemples plus réalistes dans le README
Une chose intéressante que j’ai apprise en étudiant les outils et bibliothèques existants, c’est que beaucoup sérialisent d’abord le Markdown en HTML avant d’effectuer une extraction/manipulation structurée
J’ai l’impression d’avoir découvert cet outil exactement au moment où j’en avais besoin
Merci à Yuval d’avoir partagé cet outil, et merci d’avoir choisi une licence permissive, ce qui me permet de l’utiliser au travail