rootdump

PyPI version Python Versions License: MIT

A Python library for dumping directory contents into a single organized text file. Perfect for code reviews, documentation, and project analysis.

Features

Tree Structure - Displays directory structure in a tree format
📝 Content Dump - Dumps the content of all text files
🔍 Extension Filtering - Filter files by extension
Binary Detection - Automatically excludes binary files
🔢 Line Numbers - Includes line numbers with a separator for easy reading
🚫 Ignore Patterns - Supports .gitignore-style pattern matching for excluding files and directories

Installation

pip install rootdump

Quick Start

Command Line Usage

Basic usage:

rootdump /path/to/source output.txt

With options:

# Exclude binary files
rootdump /path/to/source output.txt --exclude-binary

# Include only specific extensions
rootdump /path/to/source output.txt --extensions .py .txt .md

# Skip directory tree structure
rootdump /path/to/source output.txt --no-tree

# Exclude line numbers from the output
rootdump /path/to/source output.txt --no-line-numbers

# Use ignore patterns file
rootdump /path/to/source output.txt --ignore-file .dumpignore

Ignore Patterns

Create a .dumpignore file to exclude specific files and directories. The syntax is similar to .gitignore:

# Ignore specific directories
node_modules/
.git/
tests/

# Ignore file patterns
*.pyc
*.log
.DS_Store

# Ignore specific files
config.json
secrets.yaml

Python API

from rootdump import dump_directory

# Basic usage
dump_directory("source_dir", "output.txt")

# With options
dump_directory(
    "source_dir",
    "output.txt",
    exclude_binary=True,
    include_extensions=[".py", ".txt"],
    show_tree=True,
    show_line_numbers=True,
    ignore_file=".dumpignore"  # Use ignore patterns file
)

Output Example

# Directory structure:
# .
# ├── src/
# │   ├── __init__.py
# │   └── main.py
# ├── tests/
# │   └── test_main.py
# └── README.md

## src/__init__.py

1 | def hello():
2 |     print("Hello from src/__init__.py")

## src/main.py

1 | def main():
2 |     print("Hello from src/main.py")
3 |
4 | if __name__ == "__main__":
5 |     main()

Contributing

Contributions are welcome! Feel free to:

Acknowledgments

This project was inspired by uithub.com’s project structure visualization.

License

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