- mdqは、Markdownドキュメント内の特定部分を簡単に見つけられるようにするツール
- GitHub PRのようなMarkdownドキュメントで、特定のテンプレートやチェックリストを確認するときに便利
- たとえば、未完了の作業を見つけるために
mdq '- [ ]' コマンドを使用可能
基本的な使い方
- "usage" を含むセクションを選択:
cat example.md | mdq '# usage'
- フィルターをチェーンして使用可能:
cat example.md | mdq '# usage | -'
- バグレポート提出前に既存のissue検索を確認:
mdq -q '- [x] I have searched for existing issues'
- 参照チケットを抽出: PRがチケットに言及しているとき、MarkdownからリンクをJSONとして抽出し、jqでURLを取得可能。
TICKET_URL="$(echo "$PR_TEXT" | mdq --output json '# Ticket | [](^https://tickets.example.com/[A-Z]+-\d+$)' | jq -r '.items[].link.url')"
- 大きなテーブルを絞り込み: 特定の日付や担当者のon-callスケジュールを見つけるために、テーブルをフィルタリング可能。
- Aliceのon-call日を見つける:
cat oncall.md | mdq ':-: /On-Call|Alice/:-: *'
- 2024年1月15日の週のon-call担当者を見つける:
cat oncall.md | mdq ':-: * :-: 2024-01-15'
1件のコメント
Hacker Newsのコメント
GitHubのPRはMarkdownドキュメントであり、一部の組織では、すべてのレビュアーが完了しなければならないチェックリストを含む特定のテンプレートを使用している
Markdownのようなテキストベースのファイル形式が人気を集めた理由の1つは、正規表現で解析でき、バージョン管理で扱えたからである
自分のワークフローは、Pandoc JSON ASTを経由してからJqを使う形で進めている
共有してくれてありがとう、見てみるつもり
いろいろ試した結果、今も使い続けている唯一の「ノートシステム」は、変更時に自動でgitへコミットされるMarkdownファイルのディレクトリである
少しスマートな機能を追加して、作業を追跡できるようにしたかった
Markdownドキュメントをツリーとして扱いたかった
MarkdownDBはMarkdownファイル向けのSQLiteバックエンドを提供している
.mdファイルの構造は、常にデータシリアライズの対象として尊重または考慮されているわけではないと感じる共有してくれてありがとう、今のところ自分にはすぐのユースケースはないが、こういうものがあると知れてよかった
ドキュメント化されたシェル呼び出しについて、小さな指摘をしたい
cat example.md | mdq '# usage'は、不要なcatプロセスを起動しないようにstdinのファイルリダイレクトへ変更できるecho "$ISSUE_TEXT" | mdq -q '- [x] I have searched for existing issues'も、不要なechoプロセスを避けられるREADMEにもっと現実的な例を追加するとよいと思う
既存のツールやライブラリを調べる中で学んだ興味深い点の1つは、多くのツールが、構造化された抽出や操作を行う前にMarkdownをHTMLへシリアライズしていること
このツールを、まさに必要としていた瞬間に見つけた気がする
Yuvalにこのツールを共有してくれてありがとう、また寛容なライセンスを採用してくれたおかげで職場で使えることにも感謝している