Codebase to Prompt

CI Release

codebase-to-prompt is a Rust-based CLI tool designed to bundle files from a directory into a single output file. It supports filtering files by extensions, respecting .gitignore rules, and formatting the output in Markdown, plain text, or console-friendly formats.

Features

  • File Filtering: Include or exclude files based on their extensions.
  • Output Formats: Supports Markdown, plain text, and console-friendly formats.
  • Git Integration: Optionally append the current Git hash to the output file name.
  • Date Integration: Optionally append the current date to the output file name.
  • Line Numbers: Include line numbers in the output.
  • Hidden Files: Optionally ignore hidden files.
  • .gitignore Respect: Optionally respect .gitignore rules.

Installation

There are multiple ways to install codebase-to-prompt.

If you have the Rust toolchain installed, you can easily install the latest version from crates.io:

cargo install codebase-to-prompt

Option 2: Using the Install Script (for Linux & macOS)

You can download and run the installation script, which will install the latest release binary for your system:

curl -fsSL https://raw.githubusercontent.com/GKaszewski/codebase-to-prompt/master/install.sh | sh

Option 3: From GitHub Releases

You can download the pre-compiled binary for your operating system directly from the Releases page.

Option 4: Building from Source

  1. Ensure you have Rust installed.
  2. Clone this repository:
    git clone https://github.com/GKaszewski/codebase-to-prompt
    cd codebase-to-prompt
    
  3. Build the project:
    cargo build --release
    
  4. The binary will be available at target/release/codebase-to-prompt.

Usage

Run the tool with the following options:

codebase-to-prompt [OPTIONS] [DIRECTORY]

Options

  • -o, --output <FILE>: Specify the output file. Defaults to stdout if not provided.
  • -i, --include <EXTENSIONS>: Comma-separated list of file extensions to include.
  • -e, --exclude <EXTENSIONS>: Comma-separated list of file extensions to exclude.
  • --format <FORMAT>: Output format (console, markdown, text). Defaults to console.
  • -d, --append-date: Append the current date to the output file name.
  • -g, --append-git-hash: Append the current Git hash to the output file name.
  • -l, --line-numbers: Include line numbers in the output.
  • -H, --ignore-hidden: Ignore hidden files.
  • -R, --respect-gitignore: Respect .gitignore rules. Enabled by default.

Examples

  1. Bundle all .rs files in the current directory into output.md in Markdown format:

    codebase-to-prompt -o output.md -i rs
    
  2. Bundle all files except .log files, appending the current date and Git hash to the output file name:

    codebase-to-prompt -o output.txt -e log -d -g
    
  3. Output all files to the console, including line numbers:

    codebase-to-prompt -l
    

Development

Prerequisites

  • Rust (latest stable version recommended)

Building

To build the project:

cargo build --release

Running Tests

To run tests:

cargo test

Linting and Formatting

To lint the code:

cargo clippy

To format the code:

cargo fmt

License

This project is licensed under the MIT License. See the LICENSE file for details.

Contributing

Contributions are welcome! Feel free to open issues or submit pull requests.

Description
No description provided
Readme 113 KiB
Languages
Rust 94.9%
Shell 5.1%