dirlens 1.0.19__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,9 @@
1
+ Metadata-Version: 2.4
2
+ Name: dirlens
3
+ Version: 1.0.19
4
+ Summary: Directory tree viewer with file sizes / ファイルサイズ付きディレクトリツリー表示ツール
5
+ Author: igarin
6
+ License: UNLICENSED
7
+ Project-URL: Repository, https://github.com/igarinpiano/dirlens
8
+ Keywords: cli,tree,file-size,directory,terminal
9
+ Requires-Python: >=3.8
@@ -0,0 +1,313 @@
1
+ # dirlens 🌳
2
+
3
+ ファイルサイズ付きのディレクトリツリーを表示するコマンドラインツール。
4
+ **Python 3.8+ のみで動作**(追加ライブラリ不要)。
5
+
6
+ ---
7
+
8
+ ## インストール
9
+
10
+ ### npm(推奨・全プラットフォーム共通)
11
+
12
+ Node.js が入っていれば、どの OS でも同じコマンドでインストールできます。
13
+
14
+ ```bash
15
+ npm install -g dirlens
16
+ ```
17
+
18
+ インストール確認:
19
+
20
+ ```bash
21
+ dirlens --help
22
+ ```
23
+
24
+ アンインストール:
25
+
26
+ ```bash
27
+ npm uninstall -g dirlens
28
+ ```
29
+
30
+ ---
31
+
32
+ ### macOS / Linux(スクリプト直接インストール)
33
+
34
+ GitHubリポジトリから `dirlens.py` をダウンロードして使用します。
35
+
36
+ ```bash
37
+ # /usr/local/bin にインストール(どこからでも呼べるようになる)
38
+ sudo install -m 755 dirlens.py /usr/local/bin/dirlens
39
+
40
+ # ── または sudo なしでユーザーローカルにインストール ──
41
+ mkdir -p ~/.local/bin
42
+ cp dirlens.py ~/.local/bin/dirlens
43
+ chmod +x ~/.local/bin/dirlens
44
+
45
+ # ~/.zshrc(zsh)または ~/.bashrc(bash)に以下を追記:
46
+ export PATH="$HOME/.local/bin:$PATH"
47
+ # 追記後に反映:
48
+ source ~/.zshrc # または source ~/.bashrc
49
+ ```
50
+
51
+ インストール確認:
52
+
53
+ ```bash
54
+ dirlens --help
55
+ ```
56
+
57
+ ---
58
+
59
+ ### Windows(スクリプト直接インストール)
60
+
61
+ 1. `dirlens.py` と `dirlens.bat` を任意のフォルダへ置く
62
+ (例: `C:\Users\ユーザー名\bin\`)
63
+
64
+ 2. 同じフォルダに **`dirlens.bat`** を置く(同梱のものを使用):
65
+
66
+ ```batch
67
+ @echo off
68
+ python "%~dp0dirlens.py" %*
69
+ ```
70
+
71
+ 3. そのフォルダを **システム環境変数 PATH** に追加:
72
+ - スタートメニュー →「環境変数を編集」→ PATH に追記
73
+ - または PowerShell(管理者):
74
+
75
+ ```powershell
76
+ [Environment]::SetEnvironmentVariable("PATH", $env:PATH + ";C:\Users\ユーザー名\bin", "User")
77
+ ```
78
+
79
+ 4. 新しいターミナルを開いて確認:
80
+
81
+ ```cmd
82
+ dirlens --help
83
+ ```
84
+
85
+ > **メモ**: Windows Terminal や VS Code のターミナルではカラー表示されます。
86
+ > 旧来のコマンドプロンプト(cmd.exe)ではカラーが出ない場合があります。
87
+
88
+ ---
89
+
90
+ ## 出力例
91
+
92
+ ```
93
+ Desktop/ (2 dirs, 2 files, 3.74 MB)
94
+ ├── EmptyDir/ (0 dirs, 0 files, 0 bytes)
95
+ ├── Project/ (2 dirs, 1 file, 712 KB)
96
+ │ ├── assets/ (1 dir, 0 files, 512 KB)
97
+ │ │ └── images/ (0 dirs, 1 file, 512 KB)
98
+ │ │ └── logo.png (512 KB)
99
+ │ ├── src/ (0 dirs, 1 file, 80 KB)
100
+ │ │ └── util.py (80 KB)
101
+ │ └── main.py (120 KB)
102
+ ├── archive.zip (3 MB)
103
+ └── readme.txt (50 KB)
104
+
105
+ 合計 5 ディレクトリ, 5 ファイル
106
+ .py ×2 .txt ×1 .zip ×1 .png ×1
107
+ ```
108
+
109
+ ---
110
+
111
+ ## 特徴
112
+
113
+ - **クロスプラットフォーム** — macOS / Linux / Windows
114
+ - **tree コマンドとの高い互換性** — **`-a -d -f -g -l -p -u -r -s -t -c -L -D -P -I -n -J --prune --gitignore` など主要フラグが `tree` と互換**。dirlens 独自機能は `-G`(gitignore)・`-S`(サイズ順)・`-e`(拡張子)・`-C`(クリップボード)で提供
115
+ - **カラー表示** — ディレクトリ・ファイル・シンボリックリンクを色で識別
116
+ - **自動サイズ変換** — bytes / KB / MB / GB / TB
117
+ - **ディレクトリサイズ** — サブディレクトリの合計サイズを自動計算(並列プリフェッチで高速化)
118
+ - **アイテム数表示** — 各ディレクトリの直下にある dirs / files 数を表示
119
+ - **拡張子統計** — ツリー全体のファイル種別を集計してサマリーに表示
120
+ - **`.gitignore` 対応** — `-g` で除外(サブディレクトリも対応・否定パターン `!` 対応)
121
+ - **最終更新日時** — `--date` / `-D` で相対表示
122
+ - **拡張子フィルタ** — `-e py` など指定した拡張子のみ表示
123
+ - **パターンフィルタ** — `--exclude` / `-I`、`--include` / `-P` でワイルドカード指定(複数可)
124
+ - **サイズフィルタ** — `--min-size` / `--max-size` で容量による絞り込み
125
+ - **空ディレクトリの剪定** — `--prune` でフィルタ後に空になる枝を非表示(tree --prune 互換)
126
+ - **パーミッション表示** — `-p` でパーミッション文字列、`-u` で所有者名(tree -p/-u 互換)
127
+ - **シンボリックリンク展開** — `-l` でリンク先を追跡、リンク先パスを `→` で表示
128
+ - **フルパス表示** — `-f` でルートからのパスを表示(tree -f 互換)
129
+ - **逆順ソート** — `-r` でソート順を逆転(tree -r 互換)
130
+ - **ディスク占有率バー** — `--bar` で親ディレクトリに対する占有率を視覚表示
131
+ - **絵文字アイコン** — `--emoji` で拡張子に応じた絵文字を付与
132
+ - **Markdown出力** — `-m` でコードブロック形式に出力
133
+ - **JSON出力** — `--json` / `-J` で機械可読な構造データを出力
134
+ - **HTMLレポート** — `--html` でブラウザで閲覧できる折りたたみツリーを生成
135
+ - **クリップボードコピー** — `-C` で出力を自動コピー(ANSIコードを自動除去)
136
+ - **AIチャット貼り付けモード** — `--ai` 一発で gitignore除外・日時・Markdown・クリップボードコピーを全適用(人間がコピペする用)
137
+ - **エージェント解析モード** — `--agent` 一発で下記のAI/エージェント向け解析機能を全適用(クリップボードは使わない、自律実行しても安全)
138
+ - **隠しファイル対応** — `-a` で表示切り替え
139
+ - **サイズ順ソート** — `-s` で大きいものから表示
140
+
141
+ ### AI/エージェント向け解析機能(`--agent` でまとめて有効化)
142
+
143
+ これらはAIチャットやコーディングエージェントがプロジェクト構造を理解する際に、ファイルの中身を逐一読まなくても済むよう設計された機能です。個別フラグでも使えます。
144
+
145
+ - **トークン数概算** — `-T` でファイルごとの推定トークン数を表示(英数字記号は約4文字/トークン、日本語等は約1.5文字/トークンとして概算)
146
+ - **git連携** — `-H` で各ファイルの最終コミット情報(メッセージ・相対日時)を表示。直近2000コミットまで走査
147
+ - **TODO/FIXME抽出** — `-K` で `TODO`/`FIXME`/`HACK`/`XXX` コメントを抽出し、行番号付きで一覧表示
148
+ - **テスト欠落検知** — `-V` で対応するテストファイルが見つからないソースファイルをマーク(命名規則ベースのヒューリスティック)
149
+ - **エントリーポイント検出** — `-N` で `main.py`・`index.js`・`package.json` の `main`/`bin` フィールドなどから入口ファイルを推測してマーク
150
+ - **シンボルアウトライン** — `-O` で関数・クラス名を簡易抽出(Python/JS/TS/Go/Rust対応、正規表現ベースのbest-effort)
151
+ - **import/依存グラフ** — `-M` でファイル間のローカルなimport関係を解析し、`imports×N`(依存先数)・`used-by×N`(被参照数)を表示。Pythonは標準ライブラリの`ast`で正確に解析、他言語は正規表現+パス解決
152
+ - **設定ファイル検出** — `-F` で `.env`・`tsconfig.json`・`Makefile` 等の設定ファイルを検出して一覧表示(既知のファイル名パターンのみ対応)
153
+
154
+ ---
155
+
156
+ ## 使い方
157
+
158
+ ```bash
159
+ # ── AI チャットへの貼り付け(人間がコピペする用)──────────────
160
+ dirlens --ai # gitignore除外 + 日時 + Markdown + クリップボードコピー
161
+ dirlens --ai -L 3 # 深さ指定と組み合わせ可
162
+
163
+ # ── エージェント向け解析(自律実行向け・クリップボードは使わない)──
164
+ dirlens --agent # トークン数・git情報・TODO・テスト欠落・エントリーポイント・
165
+ # アウトライン・import依存グラフ・設定ファイル一覧を一括表示
166
+ dirlens --agent --json # 同上をJSON形式で(スクリプト/エージェント連携向け)
167
+
168
+ # ── AI/エージェント向け解析(個別フラグ)────────────────────────
169
+ dirlens -T # ファイルごとの推定トークン数
170
+ dirlens -H # 最終コミット情報(要git)
171
+ dirlens -K # TODO/FIXME/HACK/XXXを抽出
172
+ dirlens -V # テストが無いソースファイルを表示
173
+ dirlens -N # エントリーポイントらしきファイルをマーク
174
+ dirlens -O # 関数・クラスの簡易アウトライン
175
+ dirlens -M # ローカルなimport/依存関係を解析
176
+ dirlens -F # 設定ファイル(.env, tsconfig.json等)を検出して一覧表示
177
+
178
+ # ── 表示制御 ──────────────────────────────────────────────────
179
+ dirlens # カレントディレクトリ
180
+ dirlens ~/Desktop # 指定ディレクトリ
181
+ dirlens -L 2 # 深さ2階層まで(tree -L 互換)
182
+ dirlens -d # ディレクトリのみ表示(tree -d 互換)
183
+ dirlens -a # 隠しファイルも表示
184
+ dirlens -r # 逆順ソート(tree -r 互換)
185
+ dirlens --filesfirst # ファイルをディレクトリより先に表示
186
+ dirlens -f # ルートからのフルパスで表示(tree -f 互換)
187
+
188
+ # ── フィルタリング ────────────────────────────────────────────
189
+ dirlens -G # .gitignore のファイルを除外
190
+ dirlens -G --prune # gitignore除外 + 空になった枝を剪定
191
+ dirlens -e py # .py のみ表示
192
+ dirlens -P '*.md' # .md のみ表示(tree -P 互換)
193
+ dirlens -I '*.log' # .log を除外(tree -I 互換)
194
+ dirlens --exclude 'dist' --exclude '*.log' # 複数除外
195
+ dirlens --min-size 1M # 1MB 以上のファイルのみ
196
+ dirlens --max-size 100K # 100KB 以下のファイルのみ
197
+
198
+ # ── ソート ────────────────────────────────────────────────────
199
+ dirlens -S # サイズの大きい順に表示
200
+ dirlens -t # 更新日時順にソート(新しい順・tree -t 互換)
201
+ dirlens -c # ステータス変更日時順にソート(tree -c 互換)
202
+ dirlens -t -r # 更新日時順・古い順
203
+
204
+ # ── 詳細情報 ──────────────────────────────────────────────────
205
+ dirlens --date # 最終更新日時を相対表示(tree -D 互換は -D)
206
+ dirlens -D # 同上(tree -D 互換)
207
+ dirlens --bar # ディスク占有率バーを表示
208
+ dirlens --emoji # 絵文字アイコンを表示
209
+ dirlens -p # パーミッションを表示(tree -p 互換)
210
+ dirlens -u # 所有者名を表示(tree -u 互換)
211
+ dirlens -g # グループ名を表示(tree -g 互換)
212
+ dirlens -p -u -g # 全部表示
213
+ dirlens -l # シンボリックリンク先を展開(tree -l 互換)
214
+
215
+ # ── 出力形式 ──────────────────────────────────────────────────
216
+ dirlens -m # Markdown コードブロック形式で出力
217
+ dirlens --json # JSON 形式(tree -J 互換は -J)
218
+ dirlens --html # HTML レポートを生成(デフォルト: dirlens.html)
219
+ dirlens -C # クリップボードにコピー
220
+ dirlens --no-color # カラーなし(tree -n 互換は -n)
221
+ dirlens --no-color > dirlens.txt # テキストファイルに書き出す
222
+ ```
223
+
224
+ ---
225
+
226
+ ## オプション一覧
227
+
228
+ | オプション | 省略形 | 説明 |
229
+ |---------------------|--------------|-------------------------------------------------------------|
230
+ | `path` | — | 対象ディレクトリ(省略時はカレント) |
231
+ | **`--ai`** | — | **`-G --date -m -C` のショートカット。人間がAIチャットに貼り付ける用** |
232
+ | **`--agent`** | — | **`-G --date -T -H -K -V -N -O -M -F` のショートカット。エージェント向け解析(クリップボードは使わない)** |
233
+ | `--depth N` | `-L N` | 表示する最大の深さ |
234
+ | `--all` | `-a` | 隠しファイル・ディレクトリも表示 |
235
+ | `-d` | — | ディレクトリのみ表示 |
236
+ | `--sort-size` | `-S` | サイズが大きい順に並べる |
237
+ | `-s` | — | サイズ表示(tree互換・常時表示されているため実質no-op) |
238
+ | `-t` | — | 更新日時順にソート(新しい順) |
239
+ | `-c` | — | ステータス変更日時順にソート |
240
+ | `--reverse` | `-r` | ソート順を逆にする |
241
+ | `--filesfirst` | — | ファイルをディレクトリより先に表示 |
242
+ | `--gitignore` | `-G` | `.gitignore` に記載されたファイルを除外(サブディレクトリも対応)|
243
+ | `--prune` | — | フィルタ後に空になるディレクトリを非表示 |
244
+ | `--date` | `-D` | 最終更新日時を相対表示 |
245
+ | `--perms` | `-p` | パーミッション文字列を表示 |
246
+ | `--user` | `-u` | 所有者のユーザー名を表示 |
247
+ | `-g` | — | グループ名を表示 |
248
+ | `--follow` | `-l` | シンボリックリンク先ディレクトリを展開(循環検出あり) |
249
+ | `--full-path` | `-f` | ルートからのフルパスで表示 |
250
+ | `--type EXT` | `-e EXT` | 指定した拡張子のファイルのみ表示(例: `-e py`) |
251
+ | `--include PATTERN` | `-P PATTERN` | このパターンのみ表示(複数指定可) |
252
+ | `--exclude PATTERN` | `-I PATTERN` | 除外パターン(複数指定可) |
253
+ | `--min-size SIZE` | — | 指定サイズ以上のファイルのみ表示(例: `1M`, `500K`) |
254
+ | `--max-size SIZE` | — | 指定サイズ以下のファイルのみ表示 |
255
+ | `--bar` | — | ディスク占有率バーを表示 |
256
+ | `--emoji` | — | 拡張子に応じた絵文字アイコンを表示 |
257
+ | `--tokens` | `-T` | ファイルごとの推定トークン数を表示(概算) |
258
+ | `--git` | `-H` | 最終コミット情報を表示(要git、直近2000コミットまで走査) |
259
+ | `--todo` | `-K` | TODO/FIXME/HACK/XXXコメントを抽出 |
260
+ | `--missing-tests` | `-V` | 対応するテストファイルが見つからないソースファイルを表示 |
261
+ | `--entry` | `-N` | エントリーポイントらしきファイルを検出してマーク |
262
+ | `--outline` | `-O` | 関数・クラスの簡易アウトラインを表示(正規表現ベース・対応言語限定)|
263
+ | `--imports` | `-M` | ローカルなimport/依存関係を解析して表示(外部パッケージは対象外) |
264
+ | `--config` | `-F` | 設定ファイル(.env, tsconfig.json, Makefile等)を検出して一覧表示(既知のファイル名パターンのみ) |
265
+ | `--markdown` | `-m` | Markdown コードブロック形式で出力(カラー自動無効) |
266
+ | `--json` | `-J` | JSON 形式で標準出力に出力 |
267
+ | `--html [FILE]` | — | HTML レポートを生成(デフォルト: `dirlens.html`) |
268
+ | `--copy` | `-C` | 出力をクリップボードにコピー(ANSIコードを自動除去) |
269
+ | `--no-color` | `-n` | カラー表示を無効化 |
270
+
271
+ ---
272
+
273
+ ## カラーの意味
274
+
275
+ | 表示色 | 意味 |
276
+ |---------------|------------------------|
277
+ | 青(太字) | ルートディレクトリ |
278
+ | シアン(太字) | サブディレクトリ |
279
+ | 緑 | ファイル |
280
+ | マゼンタ | シンボリックリンク |
281
+ | 暗色(dim) | サイズ表示 |
282
+
283
+ ---
284
+
285
+ ## 仕様・注意事項
286
+
287
+ - ディレクトリのサイズは **全サブファイルの合計**(隠しファイルを含む、`.gitignore` 対象も含む)
288
+ - ディレクトリサイズはルート直下を **並列プリフェッチ** して高速化(透過的な最適化)
289
+ - **`+` 表記** — 一部のサブディレクトリが読めなかった場合、サイズは `1.5+ KB`(少なくとも 1.5 KB)、件数は `3+ dirs` のように表示。個々のファイルサイズは親ディレクトリのスキャン時に取得できるので `+` なし(正確な値)
290
+ - **アクセス拒否** — 読めないディレクトリは赤太字で `[アクセス拒否]` を表示してスキップ。そのディレクトリは `0+ dirs, 0+ files, 0+ bytes` として表示される
291
+ - **シンボリックリンク** は `→ リンク先パス` で表示。`-l` でリンク先ディレクトリを展開(循環検出あり)
292
+ - 非常に深いディレクトリ(1万階層以上)は `-L` で深さを制限してください
293
+ - **ホームフォルダ(`~/`)やルート(`/`)で実行すると固まる場合があります** — サイズ計算は表示深さに関わらず底まで全再帰するため、`~/Library` や iCloud Drive など大容量ディレクトリで時間がかかります
294
+ - **`-G` の否定パターン(`!`)** は対応していますが、ディレクトリを除外した後にその中のファイルを `!` で復活させることは非対応です(`*.log` + `!important.log` のようなファイル単位の否定は動作します)
295
+ - `-p`(パーミッション)・`-u`(ユーザー名)・`-g`(グループ名)は macOS / Linux のみ対応(Windows では ID 番号を表示)
296
+
297
+ ### AI/エージェント向け解析機能の精度について
298
+
299
+ dirlens は外部ライブラリに依存しない方針で作られているため、以下の機能は**完全な精度を保証しません**。重要な判断の根拠にする場合は、該当ファイルの中身を直接確認することを推奨します。
300
+
301
+ | 機能 | 制限事項 |
302
+ |---|---|
303
+ | トークン数概算(`-T`) | 文字数ベースの大まかな目安。実際のトークナイザーとは一致しない |
304
+ | シンボルアウトライン(`-O`/`-A`) | 正規表現ベースの簡易抽出(ASTではない)。デコレータが複雑な場合や複数行にまたがる関数シグネチャは取得漏れすることがある。対応言語は Python・JS/TS・Go・Rust のみ |
305
+ | import/依存グラフ(`-M`) | Pythonは標準ライブラリの `ast` で正確に解析されるため信頼度が高い。JS/TS/Go/Rustは正規表現+パス解決のため、JS/TSのbare import(`react`等)・Rustの`self::`/`super::`・外部crate・モジュール外のGoパッケージは解決されず「external」扱いになる |
306
+ | テスト欠落検知(`-V`) | ファイル命名規則のみで判定(`test_foo.py`等)。実際のテストカバレッジは見ていない。Rustは対象外(インラインテストの慣習のため検出不可) |
307
+ | エントリーポイント検出(`-N`) | 既知のファイル名パターンと `package.json` の `main`/`bin` フィールドのみで判定 |
308
+ | TODO/FIXME抽出(`-K`) | 単純な文字列マッチ。コメント外の文字列内に偶然該当語があっても拾われる場合がある |
309
+ | git連携(`-H`) | 直近2000コミットのみ走査。それより古い変更しかないファイルは情報が出ない |
310
+
311
+ ### AIエージェントへの指示テンプレート
312
+
313
+ エージェント(Claude Code・Cursor等)にプロジェクト探索の手順として `dirlens --agent` を使わせたい場合、`AGENT_RULE.md` のテンプレートを `CLAUDE.md`・`.cursorrules` 等のグローバルルールファイルにそのまま貼り付けて使えます。
@@ -0,0 +1,9 @@
1
+ Metadata-Version: 2.4
2
+ Name: dirlens
3
+ Version: 1.0.19
4
+ Summary: Directory tree viewer with file sizes / ファイルサイズ付きディレクトリツリー表示ツール
5
+ Author: igarin
6
+ License: UNLICENSED
7
+ Project-URL: Repository, https://github.com/igarinpiano/dirlens
8
+ Keywords: cli,tree,file-size,directory,terminal
9
+ Requires-Python: >=3.8
@@ -0,0 +1,8 @@
1
+ README.md
2
+ dirlens.py
3
+ pyproject.toml
4
+ dirlens.egg-info/PKG-INFO
5
+ dirlens.egg-info/SOURCES.txt
6
+ dirlens.egg-info/dependency_links.txt
7
+ dirlens.egg-info/entry_points.txt
8
+ dirlens.egg-info/top_level.txt
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ dirlens = dirlens:main
@@ -0,0 +1 @@
1
+ dirlens