Skip to main content

A command-line tool to explore and print contents of directories with options to skip certain patterns.

Project description

uncoil

uncoil is a command-line tool designed to explore and recursively unfurl the contents of a directory into a single output, either printed to the terminal or saved to a file. It has an option to skip certain file extensions or entire subdirectories, as it works best with text-based files.

It will produce tree visualization of directories and files and will reveal the contents of files not specified to be skipped.

By default, folders and files that are suspected to provide no useful information (e.g., .git, .venv, __pycache__, etc.) are hard skipped, i.e. they are not included in the tree, and their contents are not revealed. Data folders and files which would not provide useful information through their contents but possibly through their presence (e.g. .jpg, .tar, etc.) are soft skipped, i.e. they are shown in the tree, but their contents are not revealed.

Using the -x option, you can specify additional file extensions or directories to hard skip.

The package handles Jupyter notebooks by converting to text using jupytext in the output without affecting the contents of the notebook or adding any files to the directory.

This can be useful for navigating large projects, quickly summarizing as well as thoroughly revealing the structure and contents of a project.

It may be useful for providing context of a codebase to a Large Language Model (LLM).

Installation

To install the latest version of uncoil, run:

pip install uncoil

Usage

uncoil -d <directory> [-o <output_file>] [-x <extensions_to_skip,dirs_to_skip>] [-t <tag>]

Options

usage: uncoil [-h] -d DIRECTORY [-o OUTPUT_FILE] [-x EXCLUDE] [-t TAG]

Process a directory and unfurl its contents.

options:
  -h, --help            show this help message and exit
  -d DIRECTORY, --directory DIRECTORY
                        Directory to process.
  -o OUTPUT_FILE, --output_file OUTPUT_FILE
                        Output file to redirect output into.
  -x EXCLUDE, --exclude EXCLUDE
                        Comma-separated list of file extensions or directories to skip.
  -t TAG, --tag TAG     Optional tag to wrap around output. Enter 'none' for no tag.

Examples

  1. Print the unfiltered structure of a directory to the console:
uncoil -d directory
  1. Print the structure of a directory to the console, skipping certain extensions and subdirectories:
uncoil -d directory -x .log,.tmp,.git
  1. Save the unfiltered structure of a directory to a file:
uncoil -d directory -o output.txt
  1. Save the structure of a directory to a file, skipping certain extensions and subdirectories:
uncoil -d directory -o output.txt -x .log,.tmp,.git
  1. Save the unfiltered structure of a directory to a file, wrapping the output in a custom tag:
uncoil -d directory -o output.txt -t "my_project"

For example, see the examples/ directory for output of the following command run on this uncoil repository itself:

uncoil -d . \
-o examples/uncoil.txt \
-x LICENSE \
-t uncoil_codebase

Development

To develop the package further:

  1. Clone the repository and create a branch
  2. Install with dev dependencies:
pip install -e ".[dev]"
  1. Install pre-commit hook
pre-commit install
pre-commit autoupdate # optionally update
  1. Run tests:
pytest

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

uncoil-1.3.0.tar.gz (14.2 kB view details)

Uploaded Source

Built Distribution

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

uncoil-1.3.0-py3-none-any.whl (7.6 kB view details)

Uploaded Python 3

File details

Details for the file uncoil-1.3.0.tar.gz.

File metadata

  • Download URL: uncoil-1.3.0.tar.gz
  • Upload date:
  • Size: 14.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for uncoil-1.3.0.tar.gz
Algorithm Hash digest
SHA256 9431d117800e65622b2ab5ece89693ae29ec94724a7f6a0bad7ec57ce55291fc
MD5 84f43eca8d18e3bf5e2e97b49b3f4050
BLAKE2b-256 92cfd125aa1cd1562d61f389c352d28bb5c539beb37d423ccacba957878f8b7c

See more details on using hashes here.

File details

Details for the file uncoil-1.3.0-py3-none-any.whl.

File metadata

  • Download URL: uncoil-1.3.0-py3-none-any.whl
  • Upload date:
  • Size: 7.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for uncoil-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cd2523cd8b0ec6e4cce0696fb7cda66d14b1f44fae2f2773e6c259ad9de1b4b7
MD5 0f75d638a8f154289be1003e9f62a7cf
BLAKE2b-256 1b849db1e905e00d73e3a9631049c29a8fcd2ab34080f4df52f4275603a005ee

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