🔖

bento -dumpでrepoの内容をテキスト化する

2025/01/13に公開

repoをテキスト化するCLIはいくつかあるみたいですが、bentoにもそういう機能を付けました。アピールポイントはGoのCLIなので手軽にどこでも使えて便利です。

https://github.com/catatsuy/bento

bentoには色んな機能がありますが、-dumpは環境変数などの設定は不要で、手軽に使えます。

使い方は簡単で以下のように使います。

# カレントディレクトリのファイルをテキスト化する
bento -dump

# ディレクトリ名を指定する
bento -dump dir1/

標準出力に出てくるので、macならpbcopyとかにpipeするとChatGPTに貼るのに便利です。例えばbentoのrepoで実行すると以下のようになります。

The output represents a Git repository's content in the following format:

1. Each section begins with ----.
2. The first line after ---- contains the file path and name.
3. The subsequent lines contain the file contents.
4. The repository content ends with --END--.

Any text after --END-- should be treated as instructions, using the repository content as context.
----
.github/workflows/auto-review.yml
name: Auto Review

on:
  pull_request:

(略)

  "postUpdateOptions": [
    "gomodTidy",
    "gomodUpdateImportPaths"
  ]
}

--END--

これでrepoの内容をテキストにして簡単に渡すことができます。

Git管理されていることが多いと思うので、.gitディレクトリは除外しています。他にも.gitignoreの内容を無視しています。.gitignoreでは無視したくないが、bento -dumpからは無視したいファイルがある場合は.aiignoreファイルを置くと無視できます。

といいつつ、.gitignoreとかって真面目に実装しようとすると難しくて、完全に互換性がある形で実装されていないし、そもそもbento -dumpで指定されたディレクトリに置いてある.gitignoreしか見ていません。ここについては実装がかなり手間なので、今後考えたいと思います。

それと先頭のバイトを見て、バイナリファイルと判定されたファイルについては除外するロジックもあります。これで多くの場合はうまく動くのではないかと思っていますが、この辺はどこまでやるかだと思っています。

軽くいくつか使ってみましたが、とりあえずソースコードをぶち込んでから相談すると、結構いい感じのことを教えてくれます。

bentoは「Bundled ENhancements for Tasks and Operations」の略で、色んな便利な機能を追加していく予定なので、便利CLIとして使ってもらえたら嬉しいです。

https://zenn.dev/catatsuy/articles/1b64fc13d2e0b9

Discussion