A modern, beautiful and powerful command-line directory tree generator with advanced filtering and code-viewing capabilities.
Project description
Treely ๐ณ
A modern, beautiful, and powerful command-line directory tree generator. treely goes beyond a simple tree command by offering smart filtering, automatic .gitignore parsing, and a killer feature: the ability to output the contents of your code files, ready to be saved, shared, or copied directly to your clipboard.
It's the perfect tool for scaffolding a project's structure for documentation, preparing context for AI/LLM prompts, or getting a high-level overview of a new codebase.
(Note: The demo GIF shows an older version!)
๐ Key Features
- Elegant Tree Structure: Generates a clean, easy-to-read directory tree with colorful output.
- Intelligent Code Printing: Use the
--codeflag to display the full contents of all relevant code files directly after the tree structure. - Automatic
.gitignoreSupport: The--use-gitignoreflag intelligently and automatically excludes files and directories specified in your.gitignorefile. No more manual--ignoreflags fornode_modulesordist! - Export & Share:
- Copy to Clipboard (
-c): Instantly copy the entire tree and code output to your clipboard, perfect for pasting into LLM prompts (like GPT), GitHub issues, or pull requests. - Save to File (
-o): Save the clean, colorless output directly to a file for documentation or artifacts.
- Copy to Clipboard (
- Advanced Filtering & Display:
- Limit the tree depth (
-L). - Filter by glob patterns (
--pattern). - Manually ignore files and directories (
--ignore). - Display file sizes (
--show-size). - Get a project summary (
-s).
- Limit the tree depth (
- Cross-Platform: Works seamlessly on Windows, macOS, and Linux.
๐ฆ Installation
You can install treely directly from PyPI. The necessary dependencies (pyperclip and pathspec) will be installed automatically.
pip install treely
Ensure that your Python scripts directory is in your system's PATH to run treely from anywhere.
๐ Usage
Basic Command
To generate a tree for the current directory:
treely
For a specific directory:
treely /path/to/your/project
Command-line Options
usage: treely [-h] [-a] [-L LEVEL] [--pattern PATTERN] [--ignore PATTERNS] [--code [IGNORE_PATTERNS]] [--use-gitignore] [-s]
[--show-size] [-o [FILENAME]] [-c]
[root_path]
A beautiful and professional directory tree generator.
positional arguments:
root_path The starting folder for the tree. Uses current folder if not specified.
options:
-h, --help show this help message and exit
-a, --all Show all items, including hidden ones (e.g., '.git').
-L LEVEL, --level LEVEL
How many folders deep to look (e.g., -L 2).
--pattern PATTERN Show only files/folders that match a pattern (e.g., "*.py").
--ignore PATTERNS Don't show items matching a pattern. Use '|' to separate (e.g., "__pycache__|*.tmp").
--code [IGNORE_PATTERNS]
Display code file content after the tree. Use alone for all code, or with patterns to exclude (e.g., --code
"file1.py|file2.js").
--use-gitignore Automatically ignore files and directories listed in .gitignore.
-s, --summary Print a summary of the number of directories and files.
--show-size Display the size of each file.
-o [FILENAME], --output [FILENAME]
Save the output to a file. Defaults to 'treely_output.txt' if no name is given. Banner and colors are excluded.
-c, --copy Copy the output to the clipboard. Banner and colors are excluded.
Examples:
# Generate a tree for the current folder
treely
# Use the project's .gitignore to automatically exclude files
treely --use-gitignore
# Generate a tree 2 levels deep and save it to a file
treely -L 2 -o my_project_tree.md
# Show file sizes and a summary of contents
treely --show-size -s
# Show tree and copy all code content to clipboard, ignoring 'node_modules'
treely --ignore "node_modules" --code -c
# Show only python files, print their content (except config.py), and copy
treely --pattern "*.py" --code "config.py" -c
โจ Workflow Examples
Let's use the following project structure for our examples. The .gitignore file contains node_modules/ and .env.
my-web-app/
โโโ .git/
โโโ node_modules/
โ โโโ ... (many files)
โโโ public/
โ โโโ index.html
โโโ src/
โ โโโ App.js
โ โโโ index.js
โโโ .env
โโโ .gitignore
โโโ package.json
1. The Smart Default: Using .gitignore
This is the recommended way to get a clean overview of any project. treely will read your .gitignore and automatically exclude node_modules/ and .env.
Command:
treely my-web-app --use-gitignore
Output:
... (banner) ...
my-web-app/
โโโ public/
โ โโโ index.html
โโโ src/
โ โโโ App.js
โ โโโ index.js
โโโ .gitignore
โโโ package.json
Notice how .git, node_modules, and .env are all gone with one simple flag!
2. Create Project Documentation
Generate a complete project overview with file sizes and a summary, and save it directly to a Markdown file. This is perfect for a README or project wiki.
Command:
treely my-web-app --use-gitignore --show-size -s -o project_structure.md
Console Message:
... (banner) ...
โ Output successfully saved to project_structure.md
Contents of project_structure.md:
my-web-app/
โโโ public/
โ โโโ index.html [345B]
โโโ src/
โ โโโ App.js [512B]
โ โโโ index.js [230B]
โโโ .gitignore [15B]
โโโ package.json [780B]
2 directories, 5 files
3. Prepare an AI/LLM Prompt
This is treely's superpower. Generate a complete project context (structure and all relevant code) and copy it directly to your clipboard. You are now ready to paste it into ChatGPT, Claude, or any other LLM.
Command:
treely my-web-app --use-gitignore --code -c
Console Message:
... (banner) ...
โ Tree structure copied to clipboard.
Your clipboard now contains the full tree and the contents of index.html, App.js, index.js, and package.json, perfectly formatted.
4. Advanced Filtering and Code View
Generate a tree showing only JavaScript files and print their contents, but exclude index.js from the code output.
Command:
treely my-web-app --pattern "*.js" --code "index.js"
Output:
This will show a tree with only App.js and index.js, but the --- FILE CONTENTS --- section will only contain the code for App.js.
๐ค Contributing
Contributions, issues, and feature requests are welcome! Feel free to check the issues page.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file treely-1.1.0.tar.gz.
File metadata
- Download URL: treely-1.1.0.tar.gz
- Upload date:
- Size: 8.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
13b15780a37df5dc1707850a4a685bc959b1faacda1dba5fd516a6a24d0171e7
|
|
| MD5 |
161bc7f9571314056e0ac79b91c12ba5
|
|
| BLAKE2b-256 |
97fc26b130b0ac666040256b6ab4bb83e98844f46b9ae494369a38687e9192a5
|
File details
Details for the file treely-1.1.0-py3-none-any.whl.
File metadata
- Download URL: treely-1.1.0-py3-none-any.whl
- Upload date:
- Size: 10.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
549f7ab2437e3028461861cac77b23e0d4a2b81b47ce6e0486800087c840607a
|
|
| MD5 |
7b7a0804d62a50c956df4f74f1575ed8
|
|
| BLAKE2b-256 |
07f2600a8d56cdf655530a3b7c52398a62f2d69511dcf41242261c5eadd0399e
|