This tool combines the contents of a GitHub repository into a single text file, making it easier to use with Large Language Models (LLMs). It generates a summary of the project, including a directory tree and concatenated contents of specified files, with the option to prioritize a main file.
- Repository Summarization: Combines the contents of a GitHub repository into a single text file for easy use with LLMs.
- Directory Tree Generation: Provides a detailed directory tree structure of the repository.
- File Concatenation: Concatenates specified files into an output file in the order listed in the configuration file.
- Main File Prioritization: Prioritizes a specified main file in the output.
- Hidden Files Inclusion: Optionally includes hidden files and directories.
- Pattern Matching: Supports wildcard and regex entries for specifying file patterns.
- Ignore Patterns: Supports excluding files or folders based on specified patterns.
- Customization: Allows customization of maximum characters, tree depth, and items per directory.
To install the necessary dependencies, run:
pip install -r requirements.txtpython main.py [directory] [-m MAIN_FILE] [-c MAX_CHARS] [-t TREE_DEPTH] [-i] [-x MAX_ITEMS] [-n INCLUDE] [-g IGNORE]directory(str): The path to the local repository.-m,--main_file(str): The main file to prioritize in the output.-c,--max_chars(int): Maximum number of characters to include in the output file.-t,--tree_depth(int): Maximum depth of the directory tree to include in the output file.-i,--include_hidden: Include hidden files and directories.-x,--max_items(int): Maximum number of items to include in each directory to avoid clutter.-n,--include(str): Path to the configuration file with filename patterns to include in the output.-g,--ignore(str): Path to the configuration file with filename patterns to exclude from the output.
python main.py /path/to/repository -m main.py -c 10000 -t 5 -i -x 100 -n include.txt -g ignore.txtThe include file should contain filename patterns to include in the output, one pattern per line. Wildcards and regex entries are supported.
Example include.txt:
*.py
*.md
*.json
The ignore file should contain filename patterns to exclude from the output, one pattern per line. Wildcards and regex entries are supported.
Example ignore.txt:
*.test.py
tests/
docs/