Name | copyfiles-cli JSON |
Version |
0.1.6
JSON |
| download |
home_page | None |
Summary | Generate a copyfiles.txt containing project tree + file contents. |
upload_time | 2025-08-01 23:07:40 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.8 |
license | MIT |
keywords |
llm
context
project-tree
cli
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# copyfiles-cli
**copyfiles-cli** is a small but mighty CLI that scans a project directory, filters out junk via `.gitignore`-style rules, and spits out a single **`copyfiles.txt`** containing:
1. _Project tree_ – an indented outline of kept files and folders.
2. _File contents_ – each retained file wrapped in a language-tagged code fence.
It’s perfect for piping an entire repo into an LLM prompt or sharing a compact “snapshot” of code with teammates.
---
## Features
| Feature | What it does |
| ---------------------------- | ---------------------------------------------------------------------------------------- |
| **Smart filtering** | Honors your project’s `.gitignore`, plus optional extra ignore file (`--config`). |
| **Size guards & truncation** | Skip very large files (`--skip-large`) or keep only the first _N_ bytes (`--max-bytes`). |
| **Colorful, pretty CLI** | Rich / Colorama styling with automatic NO_COLOR detection. |
| **Zero-config defaults** | Run `copyfiles` in any repo and get a sane `copyfiles.txt` instantly. |
---
## Installation
```bash
# Recommended: inside a virtualenv
pip install copyfiles-cli # from PyPI
# or, for local development
git clone https://github.com/yourname/copyfiles
cd copyfiles
pip install -e '.[dev]' # installs package + test/QA deps
```
> **Requires** Python 3.8+
---
## Quick Start
```bash
# From your project root
copyfiles
# Generates ./copyfiles.txt:
# ├── app.py
# ├── module/
# │ └── __init__.py
# └── README.md
```
Open `copyfiles.txt` in any editor or paste it directly into ChatGPT / Gemini – you’ll see an ASCII tree followed by each file’s contents inside code fences.
---
## Advanced CLI Flags
| Flag | Default | Purpose |
| ----------------- | --------------- | ------------------------------------------------------------------ |
| `--root PATH` | `.` | Directory to scan. |
| `--out FILE` | `copyfiles.txt` | Output file name/path. |
| `--config FILE` | _none_ | Extra ignore patterns (one per line, same syntax as `.gitignore`). |
| `--max-bytes N` | `100 000` | Truncate individual files to the first _N_ bytes. |
| `--skip-large KB` | _off_ | Skip files **larger than** _KB_ kilobytes entirely. |
| `-v / --verbose` | off | Show scanning / filtering progress. |
| `--no-color` | off | Force plain-text output (useful in CI). |
| `-V / --version` | – | Print version and exit. |
| `--help` | – | Full help text with examples. |
---
## Contributing
1. **Fork** & clone the repo.
2. Create a virtualenv and install dev deps:
```bash
python -m venv .venv && source .venv/bin/activate
pip install -e '.[dev]'
```
3. Run the _entire_ QA suite before submitting a PR:
```bash
pytest # unit + CLI tests
tox -p auto # multi-python matrix + lint
ruff check src tests # additional lint if you like
```
4. Commit using conventional commits (`feat: …`, `fix: …`, etc.) and open a pull request – GitHub Actions will run the same tox matrix.
### Project Layout
```
src/copyfiles/ # library & CLI
tests/ # unit and CLI tests + fixtures
README.md
pyproject.toml
tox.ini
```
---
## Licence
MIT – see `LICENSE` file for full text.
---
> Made with ☕, 🐍, and a sprinkle of Rich ANSI sparkle.
Raw data
{
"_id": null,
"home_page": null,
"name": "copyfiles-cli",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "llm, context, project-tree, cli",
"author": null,
"author_email": "Bethvour <bethvourc@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/90/ca/c27dd94ccbf3a80600526d5daafa0b2a2f5dba5dee9de28d1d45dad36b6a/copyfiles_cli-0.1.6.tar.gz",
"platform": null,
"description": "# copyfiles-cli\n\n**copyfiles-cli** is a small but mighty CLI that scans a project directory, filters out junk via `.gitignore`-style rules, and spits out a single **`copyfiles.txt`** containing:\n\n1. _Project tree_ \u2013 an indented outline of kept files and folders.\n2. _File contents_ \u2013 each retained file wrapped in a language-tagged code fence.\n\nIt\u2019s perfect for piping an entire repo into an LLM prompt or sharing a compact \u201csnapshot\u201d of code with teammates.\n\n---\n\n## Features\n\n| Feature | What it does |\n| ---------------------------- | ---------------------------------------------------------------------------------------- |\n| **Smart filtering** | Honors your project\u2019s `.gitignore`, plus optional extra ignore file (`--config`). |\n| **Size guards & truncation** | Skip very large files (`--skip-large`) or keep only the first _N_ bytes (`--max-bytes`). |\n| **Colorful, pretty CLI** | Rich / Colorama styling with automatic NO_COLOR detection. |\n| **Zero-config defaults** | Run `copyfiles` in any repo and get a sane `copyfiles.txt` instantly. |\n\n---\n\n## Installation\n\n```bash\n# Recommended: inside a virtualenv\npip install copyfiles-cli # from PyPI\n# or, for local development\ngit clone https://github.com/yourname/copyfiles\ncd copyfiles\npip install -e '.[dev]' # installs package + test/QA deps\n```\n\n> **Requires** Python 3.8+\n\n---\n\n## Quick Start\n\n```bash\n# From your project root\ncopyfiles\n\n# Generates ./copyfiles.txt:\n# \u251c\u2500\u2500 app.py\n# \u251c\u2500\u2500 module/\n# \u2502 \u2514\u2500\u2500 __init__.py\n# \u2514\u2500\u2500 README.md\n```\n\nOpen `copyfiles.txt` in any editor or paste it directly into ChatGPT / Gemini \u2013 you\u2019ll see an ASCII tree followed by each file\u2019s contents inside code fences.\n\n---\n\n## Advanced CLI Flags\n\n| Flag | Default | Purpose |\n| ----------------- | --------------- | ------------------------------------------------------------------ |\n| `--root PATH` | `.` | Directory to scan. |\n| `--out FILE` | `copyfiles.txt` | Output file name/path. |\n| `--config FILE` | _none_ | Extra ignore patterns (one per line, same syntax as `.gitignore`). |\n| `--max-bytes N` | `100 000` | Truncate individual files to the first _N_ bytes. |\n| `--skip-large KB` | _off_ | Skip files **larger than** _KB_ kilobytes entirely. |\n| `-v / --verbose` | off | Show scanning / filtering progress. |\n| `--no-color` | off | Force plain-text output (useful in CI). |\n| `-V / --version` | \u2013 | Print version and exit. |\n| `--help` | \u2013 | Full help text with examples. |\n\n---\n\n## Contributing\n\n1. **Fork** & clone the repo.\n2. Create a virtualenv and install dev deps:\n\n ```bash\n python -m venv .venv && source .venv/bin/activate\n pip install -e '.[dev]'\n ```\n\n3. Run the _entire_ QA suite before submitting a PR:\n\n ```bash\n pytest # unit + CLI tests\n tox -p auto # multi-python matrix + lint\n ruff check src tests # additional lint if you like\n ```\n\n4. Commit using conventional commits (`feat: \u2026`, `fix: \u2026`, etc.) and open a pull request \u2013 GitHub Actions will run the same tox matrix.\n\n### Project Layout\n\n```\nsrc/copyfiles/ # library & CLI\ntests/ # unit and CLI tests + fixtures\nREADME.md\npyproject.toml\ntox.ini\n```\n\n---\n\n## Licence\n\nMIT \u2013 see `LICENSE` file for full text.\n\n---\n\n> Made with \u2615, \ud83d\udc0d, and a sprinkle of Rich ANSI sparkle.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Generate a copyfiles.txt containing project tree + file contents.",
"version": "0.1.6",
"project_urls": {
"Changelog": "https://github.com/bethvourc/copyf/releases",
"Documentation": "https://github.com/bethvourc/copyf#readme",
"Homepage": "https://github.com/bethvourc/copyf"
},
"split_keywords": [
"llm",
" context",
" project-tree",
" cli"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "ddd38750b0e9522c375376c71a68f62d1b3e41e63147a9f7f81463c5ceeba7ef",
"md5": "600df5900c1baf5798a8ed976a2c8a18",
"sha256": "e9c73de7755c7602eb24196b966080ca4ac6cf399a4fcc454cc2727789f5fb02"
},
"downloads": -1,
"filename": "copyfiles_cli-0.1.6-py3-none-any.whl",
"has_sig": false,
"md5_digest": "600df5900c1baf5798a8ed976a2c8a18",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 9178,
"upload_time": "2025-08-01T23:07:39",
"upload_time_iso_8601": "2025-08-01T23:07:39.520880Z",
"url": "https://files.pythonhosted.org/packages/dd/d3/8750b0e9522c375376c71a68f62d1b3e41e63147a9f7f81463c5ceeba7ef/copyfiles_cli-0.1.6-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "90cac27dd94ccbf3a80600526d5daafa0b2a2f5dba5dee9de28d1d45dad36b6a",
"md5": "6639e9b66c2acedf23cd800a7c077d08",
"sha256": "58b63d320e52ab796e62137596295f3a2d1a4a85336c13b502ebd31c5450bccf"
},
"downloads": -1,
"filename": "copyfiles_cli-0.1.6.tar.gz",
"has_sig": false,
"md5_digest": "6639e9b66c2acedf23cd800a7c077d08",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 11185,
"upload_time": "2025-08-01T23:07:40",
"upload_time_iso_8601": "2025-08-01T23:07:40.607763Z",
"url": "https://files.pythonhosted.org/packages/90/ca/c27dd94ccbf3a80600526d5daafa0b2a2f5dba5dee9de28d1d45dad36b6a/copyfiles_cli-0.1.6.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-01 23:07:40",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "bethvourc",
"github_project": "copyf",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"tox": true,
"lcname": "copyfiles-cli"
}