Skip to main content

KASU: Kind of ASsemble Utility for merging and sanitizing text files in a directory

Project description

KASU

AI駆動開発におけるコードベースの抽象化と管理の支援ツール

主な機能

  • 複数ファイルの統合 - ディレクトリ内のテキストファイルを1ファイルに結合
  • パス付きヘッダー - 各ファイルの内容をパス付きで区切り
  • 出力形式 - プレーンテキストまたはMarkdown形式
  • フィルタリング - Globパターン、除外パターン、.gitignore対応
  • ディレクトリツリー表示 - プロジェクト構造の可視化
  • ファイル一覧表示 - 対象ファイルのリストアップ
  • 部分的な内容抽出 - 各ファイルの先頭/末尾N行のみ抽出
  • 機密情報のサニタイズ - IPアドレス、メール、APIキーなどの自動置換
  • 設定ファイル対応 - .config.yamlでデフォルト設定を管理

インストール

git clone git@github.com:remokasu/kasu.git
cd kasu
pip install -e .

クイックスタート

ks -i [INPUT_DIR] -o [OUTPUT_FILE]

使い方

  • 指定したディレクトリ以下のテキストファイルを結合して1ファイルに出力

    • プレーンテキストで出力

      ks -i [DIR] -o [FILE]
      
    • Markdown形式で出力

      ks -i [DIR] -o [FILE.md] --format md
      

      または

      ks -i [DIR] -o [FILE.md] -f md
      
    • 標準出力に出力

      ks -i [DIR] --stdout
      
  • tree 情報を出力

    • 標準出力に出力

      ks -i [DIR] --tree
      

      または

      ks -i [DIR] -t
      
    • -o で指定したファイルの先頭に出力

      ks -i [DIR] -o [FILE] --tree
      

      または

      ks -i [DIR] -o [FILE] -t
      
      • i で指定したディレクトリ以下のファイル内容が続きます。
    • -o で指定したファイルにtree情報のみを出力

      ks -i [DIR] -o [FILE] --tree --no-merge
      

      --no-mergeを指定することで、-iで指定したディレクトリ以下のファイル内容は出力されません。

    • 出力例

      Auto-detected and using: ./.gitignore
      Scanning files...
      Found 5 files
      Ignored by patterns: 2 files/directories
      
      Directory tree:
      example-project/
      ├── docs/
      │   └── README.md
      ├── src/
      │   ├── config.json
      │   ├── main.py
      │   └── utils.py
      └── tests/
          └── test_main.py
      
  • ファイル一覧を標準出力に出力

    • 標準出力に出力

      ks -i [DIR] --list
      

      または

      ks -i [DIR] -l
      
    • -oで指定したファイルの先頭に出力

      ks -i [DIR] -o [FILE] --list
      

      または

      ks -i [DIR] -o [FILE] -l
      

      -i で指定したディレクトリ以下のファイル内容が続きます。

    • -o で指定したファイルにファイル一覧のみを出力

      ks -i [DIR] -o [FILE] --list --no-merge
      

      --no-mergeを指定することで、-iで指定したディレクトリ以下のファイル内容は出力されません。

    • 出力例

      Auto-detected and using: ./.gitignore
      Scanning files...
      Found 5 files
      Ignored by patterns: 2 files/directories
      
      File list:
      tests/test_main.py
      src/utils.py
      src/config.json
      src/main.py
      docs/README.md
      
  • 条件を指定して対象ファイルを絞り込み

    • -gで含めるファイルパターンを指定します。

      例: -g "*.py" で拡張子が.pyのファイルのみ対象にします。

      ks -i [DIR] -o [FILE] -g "*.py"
      

      複数指定

      ks -i [DIR] -o [FILE] -g "*.py" "*.md"
      
  • 対象から特定のファイルを除外

    • -iで指定したディレクトリ以下に.gitignoreがあれば自動的に除外します。

    • --ignoreで、除去対象を記載したファイルを指定できます。

      このファイルは.gitignoreと同じ書き方ができます。

      --ignore を指定した時は.gitignore は無視されます。

    • --no-auto-ignoreで.gitignoreの自動検出を無効化できます。

    • -xで指定したパターンを除外します。

      もし対処に.gitignoreがあり、かつREADME.mdを除外したい場合、以下のようにします。

      ks -i [DIR] -o [FILE] -x "README.md"
      
  • サニタイズ

    コンフィデンシャルな情報を自動的に検出して置換します。

    ただし、確実に検出できるわけではありません。

    1. APIキー: api_key=, apikey=, api-secret= などの後に続く20文字以上の英数字を検出

      置換形式: [REDACTED_API_KEY_1], [REDACTED_API_KEY_2], ...
      
    2. パスワード: password=, passwd=, pwd= などの後に続く6文字以上の値を検出

      置換形式: [REDACTED_PASSWORD_1], [REDACTED_PASSWORD_2], ...
      
    3. AWSキー - AKIA で始まる16文字の英数字を検出

      置換形式: [REDACTED_AWS_KEY_1], [REDACTED_AWS_KEY_2], ...
      
    4. メールアドレス - 標準的なメール形式を検出

      置換形式: [REDACTED_EMAIL_1], [REDACTED_EMAIL_2], ...
      
    5. IPアドレス - パブリックIPのみ検出(ローカルIP 127., 192.168., 10. は除外)

      置換形式: [REDACTED_IP_1], [REDACTED_IP_2], ...
      
    6. 秘密鍵 - PEM形式の秘密鍵全体を検出

      置換形式: [REDACTED_PRIVATE_KEY]
      
  • 置換パターンを指定

    • フォーマット

      変換前 変換後
      
    • ks -i [DIR] -o [FILE] --replace [PATTERN_FILE]
      

      または

      ks -i [DIR] -o [FILE] -r [PATTERN_FILE]
      
  • 各ファイルの先頭/末尾N行のみ出力

    • 先頭N行
      ks -i [DIR] -o [FILE] --head N
      
    • 末尾N行
      ks -i [DIR] -o [FILE] --tail N
      
  • 設定ファイルを指定

    • --config [FILE], または -c [FILE]で設定ファイルを指定できます。

    • 設定ファイルの例

      input: .
      output: output.md
      format: md
      glob:
        - "*.py"
        - "*.md"
      exclude:
        - "tests/"
        - "docs/"
      head: 50
      sanitize: true
      
    • コマンドラインオプションで指定した値が優先されます。

    • ks --config config.yaml
      

      または

      ks -c config.yaml
      

コマンドラインオプション一覧

オプション 短縮形 説明
--input DIR -i 入力ディレクトリ(デフォルト: .
--output FILE -o 出力ファイルパス
--stdout - 標準出力に出力
--format FORMAT -f 出力形式(text/markdown/md
--glob PATTERN -g 含めるファイルパターン
--exclude PATTERN -x 除外パターン
--ignore FILE - ignoreファイルを指定
--no-auto-ignore - .gitignore自動検出を無効化
--head N - 各ファイルの先頭N行のみ
--tail N - 各ファイルの末尾N行のみ
--tree -t ディレクトリツリーを表示
--stats - 統計情報を表示
--sanitize -s 機密情報を自動サニタイズ
--replace FILE -r カスタム置換パターンファイル
--yes -y 確認プロンプトをスキップ
--debug -d デバッグ情報を表示
--config FILE -c 設定ファイルを指定

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kasu-0.0.3.tar.gz (25.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kasu-0.0.3-py3-none-any.whl (29.6 kB view details)

Uploaded Python 3

File details

Details for the file kasu-0.0.3.tar.gz.

File metadata

  • Download URL: kasu-0.0.3.tar.gz
  • Upload date:
  • Size: 25.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for kasu-0.0.3.tar.gz
Algorithm Hash digest
SHA256 bfe207e33d20919cafe316cb7a657258b7daa9d58b301205ccf11930b320ae19
MD5 d604443e8dae7d06f2a2d66eb3a0e41c
BLAKE2b-256 8ebab7b1d759e7359ed42a5df04399363f253a9491cebfae12fb2cff846fafc5

See more details on using hashes here.

File details

Details for the file kasu-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: kasu-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 29.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for kasu-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 2104d83c4d9ebeb52e0879f77c1236b2d3219797187443fc34f35f7a3ae1ce37
MD5 d30101340f8fee58a6656c984a167539
BLAKE2b-256 705e7bfe9944ab9f2ed1acf7677c6468c45c119be2c9baa8adc9aa46d3590d82

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page