【C#】あるフォルダ内のファイルを一つにまとめるツール

あるディレクトリ以下の特定のファイルを一つにまとめるツールを作成しました。

ローカルにあるソースコードをGeminiのような大きいトークン数を扱えるAIにファイルで渡して内容をレビューや改善するために、フォルダ内の特定のファイルを全て1つのファイルにまとめるためのC#のコンソールアプリです。

github.com

使用方法はリポジトリ側に記載しました。

【ここ】から直接ダウンロードできます。

ファイルを解凍して中身のexeをコマンドラインから引数を何も指定せずに実行するとヘルプメッセージが表示されるのでGitと合わせて参照ください。

実際の挙動ですが、例えばあるフォルダに以下のようなファイルが存在する状態で

// ファイルA.cs
hogehoge
aaaaaaaa
bbbbbbb

// ファイルB.js
fugafuga
cccccccc
dddddddd

ツールを次の通り実行すると実行すると、以下のような出力になります。

CombineFiles.exe 1 c:\sample_dir\ .js;.cs bin;obj
// YYYYMMDDhhmmss.txt ファイルの内容

'''
// /ファイルA.cs
hogehoge
aaaaaaaa
bbbbbbb
'''

'''
// /ファイルB.js
fugafuga
cccccccc
dddddddd
'''

このツールはAIに読ませる用で出力ルールは以下の通りです。

  • 出力ファイル名はルートフォルダと同じ階層にYYYYMMDDhhmmss.txtで生成
  • 各ファイルがコードブロックに囲われる
  • 各ファイルの相対パスがコードブロックの先頭に記載される
  • 空白行は削除
  • 行頭の空白は削除して左に詰める(文字数圧縮
  • 2つ以上連続するタブと空白は1文字に圧縮