first commit
This commit is contained in:
101
README.md
Normal file
101
README.md
Normal file
@@ -0,0 +1,101 @@
|
||||
# cflat (c♭)
|
||||
|
||||
**Make your C++ project fall flat.**
|
||||
|
||||
## What is this?
|
||||
|
||||
`cflat` takes your complex directory structure and exports it into a single text file. It merges your entire C/C++ project into one massive stream of code.
|
||||
|
||||
**Note:** It does not actually delete your folders. It just ignores them in the output. Your architecture is safe.
|
||||
|
||||
## Why?
|
||||
|
||||
Civilized people keep files separate. You, apparently, need them together.
|
||||
|
||||
* **AI Fodder:** Feed your entire codebase to an LLM so it can hallucinate a fix for that segfault you've been ignoring.
|
||||
* **Code Reviews:** Send a single 50,000-line file to your reviewer. Assert dominance.
|
||||
* **Grepping:** Search for a string across the project instantly because you still haven't memorized how to use `grep -r`.
|
||||
* **Spite:** Annoy your lead architect by rendering their carefully crafted folder structure irrelevant.
|
||||
|
||||
## Features
|
||||
|
||||
* **Recursive:** It hunts down source files in every nested folder. Deep sub-directories are no longer safe places to hide bad code.
|
||||
* **Fake Elegance:** It runs `clang-format` (if installed) so your spaghetti code at least *looks* professional in the export.
|
||||
* **Hygiene:** It ignores `obj`, `bin`, `.git`, and other binary garbage that nobody wants to read.
|
||||
* **Self-Preservation:** It automatically adds itself and the output file to `.gitignore`. This prevents you from accidentally committing a 12MB text file.
|
||||
* **Flexible:** Run it on the current folder, a target folder, or exclude specific shameful directories.
|
||||
|
||||
## Installation
|
||||
|
||||
Trusting random scripts from the internet is a key part of the developer experience.
|
||||
|
||||
```bash
|
||||
curl -O https://git.alidavid.hu/david/cflat/raw/branch/main/cflat
|
||||
```
|
||||
|
||||
Make it executable:
|
||||
|
||||
```bash
|
||||
chmod +x cflat
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
**Default Behavior:**
|
||||
Run this in your project root to flatten everything.
|
||||
|
||||
```bash
|
||||
./cflat
|
||||
```
|
||||
|
||||
**Target a specific folder:**
|
||||
|
||||
```bash
|
||||
./cflat ../my-other-project/
|
||||
```
|
||||
|
||||
**The "Denial" option (Exclusions):**
|
||||
Exclude folders you don't want the world (or the AI) to see.
|
||||
|
||||
```bash
|
||||
./cflat -e build -e node_modules -e "legacy_code"
|
||||
```
|
||||
|
||||
### ⚠️ Wildcards (Important)
|
||||
|
||||
Your shell expands `*` before the script sees it. If you don't use quotes, the script will break.
|
||||
|
||||
```bash
|
||||
# Good:
|
||||
./cflat -e "*.tmp"
|
||||
|
||||
# Bad (The shell expands this and confuses the script):
|
||||
./cflat -e *.tmp
|
||||
```
|
||||
|
||||
**Need help?**
|
||||
|
||||
```bash
|
||||
./cflat -?
|
||||
```
|
||||
|
||||
## Output
|
||||
|
||||
The script generates a file named `cflat-export-YYYY-MM-DD.txt`. It contains:
|
||||
|
||||
1. **Project Stats:** How many lines of code you are dealing with.
|
||||
2. **The Tree:** A visual map of the directory structure.
|
||||
3. **The Cast:** A list of all classes and structs found.
|
||||
4. **The Blob:** The full content of every source file, stitched together.
|
||||
|
||||
## Requirements
|
||||
|
||||
* **OS:** Linux or macOS. (Windows users: please use WSL).
|
||||
* **Shell:** Bash.
|
||||
* **Optional:**
|
||||
* `tree`: For structure visualization.
|
||||
* `clang-format`: For code cleaning.
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
Reference in New Issue
Block a user