codebase-flattener

Crates.iocodebase-flattener
lib.rscodebase-flattener
version0.1.0
created_at2025-04-25 18:53:43.483294+00
updated_at2025-04-25 18:53:43.483294+00
descriptionFlatten a Rust (or any) codebase into one file for LLM ingestion.
homepagehttps://github.com/szczuroskoczek/codebase-flattener
repositoryhttps://github.com/szczuroskoczek/codebase-flattener
max_upload_size
id1649361
size17,779
Krystian Mikołajczyk (szczuroskoczek)

documentation

README

codebase-flattener

Flatten a codebase into a single file for easy LLM ingestion.


Features:

  • Recursively walk your project, respecting .gitignore, .llmignore, and custom ignore rules.
  • Skip the output file itself to avoid self-inclusion.
  • Follow or ignore symlinks via a flag.
  • Overridable output filename (default: codebase.txt).

📦 Installation

Ensure you have Rust and Cargo installed (edition 2021).

# Install from crates.io
cargo install codebase-flattener

Or build locally:

git clone https://github.com/youruser/codebase-flattener.git
cd codebase-flattener
cargo build --release
# The binary will be in target/release/

🚀 Usage

# Run with defaults (respects .gitignore & .llmignore, follows symlinks)
codebase-flattener

# Add custom ignore files
codebase-flattener --ignore extra.ignore --ignore temp.ignore

# Disable all default ignore files
codebase-flattener --no-default-ignores --ignore only.ignore

# Don’t follow symlinks
codebase-flattener --no-follow

# Change the output filename
codebase-flattener --output project_dump.txt

By default, all files are dumped into codebase.txt with separators:

<<< FILE: path/to/file.ext >>>
<file contents>


⚙️ Command-line Options

Option Description
-i, --ignore <FILE> Append a custom ignore filename (can be used multiple times)
--no-default-ignores Disable default .gitignore & .llmignore loading
-n, --no-follow Don’t follow symbolic links
-o, --output <FILENAME> Set the output file name (default: codebase.txt)
-h, --help Print help information
-V, --version Print version info

🤝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/foo)
  3. Commit your changes (git commit -am "Add foo")
  4. Push to the branch (git push origin feature/foo)
  5. Open a pull request

We welcome improvements, bug fixes, and enhanced documentation!


📝 License

Licensed under MIT See LICENSE for details.


Created by Krystian Mikołajczyk | Crates.io | GitHub

Commit count: 6

cargo fmt