first commit

This commit is contained in:
David Ali
2026-01-29 01:08:41 +01:00
commit 230c326e9f
3 changed files with 269 additions and 0 deletions

101
README.md Normal file
View 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