Skip to main content

A tool to consolidate repository files into a single file

Project description

repo-to-one-file

License: MIT GitHub Repo stars

repo-to-one-file is a Python tool that consolidates repository files into a single Markdown file. It's designed to create a comprehensive overview of a codebase, which can be particularly useful for documentation or as context for large language models.

Check out the repo here, please star <3 Check out the JavaScript version here

Features

  • Generates a directory structure of the repository
  • Consolidates content of specified file types (.py, .js, .ts, .json, etc.) into a single Markdown file
  • Ignores common non-source files and directories (node_modules, .git, etc.)
  • Configurable maximum line count per file
  • Option to include normally ignored files
  • Prioritizes important files like README, package.json, requirements.txt, etc.

Installation

Using pip:

pip install repo-to-one-file

or

You can install repo-to-one-file directly from GitHub:

pip install git+https://github.com/tonypls/repo-to-one-file.git

For development, clone the repository and install in editable mode:

git clone https://github.com/tonypls/repo-to-one-file.git
cd repo-to-one-file
pip install -e .

Usage

After installation, you can use repo-to-one-file from the command line:

repo-to-one-file

This will create a combined_repo.md file in the current directory.

Options

  • --max-lines: Set the maximum number of lines per file (default: 1000)
  • --include-ignored: Include files that would normally be ignored

Example:

repo-to-one-file --max-lines 2000 --include-ignored

Output Format

The generated Markdown file will have the following structure:

  1. Directory structure of the repository
  2. Content of priority files (README, package.json, requirements.txt, pyproject.toml)
  3. Content of other included files (.py, .js, .ts, .json, etc.)

Each file's content is presented under a header with its relative path and enclosed in a code block with the appropriate language tag.

Ignored Patterns

By default, the tool ignores many common non-source files and directories, including:

  • Version control directories (.git, .svn)
  • Package manager directories and files (node_modules, package-lock.json)
  • Build directories and files (dist, build)
  • Cache directories
  • Log files
  • Environment files
  • OS-generated files

For a full list, please refer to the ignored_patterns list in the __main__.py file.

Development

To set up the development environment:

  1. Clone the repository
  2. Install the package in editable mode: pip install -e .
  3. Install development dependencies: pip install pytest

To run tests (once implemented):

pytest

Contributing

Contributions are welcome! Here are some ways you can contribute:

  1. Implement test cases
  2. Improve error handling and logging
  3. Add support for more file types
  4. Optimize performance for large repositories
  5. Improve documentation and examples

Please feel free to submit issues and pull requests.

License

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

Acknowledgements

  • This project was inspired by the need to provide concise codebase overviews for large language models.
  • Thanks to all contributors and users of this tool.

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

repo_to_one_file-1.0.3.tar.gz (6.2 kB view details)

Uploaded Source

Built Distribution

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

repo_to_one_file-1.0.3-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

Details for the file repo_to_one_file-1.0.3.tar.gz.

File metadata

  • Download URL: repo_to_one_file-1.0.3.tar.gz
  • Upload date:
  • Size: 6.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.0

File hashes

Hashes for repo_to_one_file-1.0.3.tar.gz
Algorithm Hash digest
SHA256 f0f4748137c87e4df2b03d0d783b3bfa2567fe3a14149c46e3117714df55b9c0
MD5 7df568d042a2d68cc2bb037693a0d897
BLAKE2b-256 cfef45a2066ffd3fc202f68fef68929eb3270754aafb9dda85e40ea3fd0b98de

See more details on using hashes here.

File details

Details for the file repo_to_one_file-1.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for repo_to_one_file-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 3ed9738289b2dc4a717582674a1fb72b9b35082953f52a796f3e2422e9c78d9f
MD5 5af9e90833f086358fd0bb31e6a939d7
BLAKE2b-256 fbd95ead17fc9cab972284e2a615b2f26ac505807d72fd6598e7c6f48e890791

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