Высокопроизводительный инструмент для флаттенинга кодовой базы, написанный на Rust. Обеспечивает значительное ускорение обработки по сравнению с Python-версией, лучшую работу с памятью и параллельную обработку файлов.
- ⚡ Высокая производительность: В десятки раз быстрее Python-версии благодаря оптимизированной работе с памятью
- 🔄 Параллельная обработка: Многопоточная обработка файлов с использованием Rayon
- 💾 Эффективная работа с памятью: Использование memory mapping для больших файлов
- 📊 Прогресс-бары: Визуальный отслеживание прогресса обработки
- 🎯 Умное пропускание: Гибкая настройка исключений папок и файлов
- 🔍 Авто-детекция проектов: Автоматическая настройка исключений для разных языков
- 📈 Статистика: Подробная статистика обработки
- 🌍 Кросс-платформенность: Работает на Linux, Windows, macOS
- 📏 Оптимизированный размер: Минимальный размер бинарного файла
- 🔧 Идиоматический код: Полная совместимость с clippy и стандартами Rust
cargo install flatten-rust- Rust 1.70+ (рекомендуется использовать rustup)
git clone https://github.com/An0nX/flatten-rust.git
cd flatten-rust
cargo build --releaseГотовый бинарный файл будет находиться в target/release/flatten-rust.
Скачайте готовый бинарный файл из Releases:
- Linux x86_64:
flatten-rust-linux-x86_64 - Windows x86_64:
flatten-rust-windows-x86_64.exe - macOS x86_64:
flatten-rust-macos-x86_64 - macOS ARM64:
flatten-rust-macos-aarch64
flatten-rust -f <папка1> [папка2] ... [опции]| Длинная опция | Короткая | Описание | Легко запомнить |
|---|---|---|---|
--folders |
-f |
Папки для обработки | folders |
--skip-folders |
-s |
Папки для пропуска | skip |
--output |
-o |
Выходной файл | output |
--auto-detect |
-a |
Авто-детекция проекта | auto |
--threads |
-t |
Параллельные потоки | threads |
--max-file-size |
-m |
Макс. размер файла | max |
--dry-run |
-d |
Тестовый запуск | dry |
--stats |
-S |
Статистика | Stats |
--show-skipped |
-k |
Показать пропущенные | keep |
--list-templates |
-l |
Список шаблонов | list |
--enable-template |
-e |
Включить шаблон | enable |
--disable-template |
-D |
Отключить шаблон | Disable |
--force-update |
-u |
Обновить шаблоны | update |
--check-internet |
-n |
Проверить интернет | network |
flatten-rust -f ./src -o project.mdflatten-rust -f ./src -a -o project.mdflatten-rust -f ./src -S -o project.mdflatten-rust -f ./src -d -m 3flatten-rust -f ./src ./tests -s node_modules -s .git -o full-project.mdflatten-rust -f ./src -k -o with-skipped.mdflatten-rust -f ./src -t 8 -o fast.mdflatten-rust -f ./src -m 52428800 -o limited.md # 50MB max# Список доступных шаблонов
flatten-rust -l
# Включить шаблоны для Rust и Node.js
flatten-rust -f ./project -e rust -e node
# Принудительное обновление шаблонов
flatten-rust -u
# Отключить проверку интернета
flatten-rust -f ./project -n false-f, --folders <папки...>: Базовые папки для обработки (минимум одна)
-a, --auto-detect: Авто-детекция типа проекта и настройка исключений-s, --skip-folders <папки...>: Папки для пропуска (поддерживаются glob паттерны)-x, --skip-extensions <расширения...>: Расширения бинарных файлов для пропуска-k, --show-skipped: Показывать пропущенные папки в дереве--include-hidden: Включать скрытые файлы и папки--max-depth <число>: Максимальная глубина обхода директорий (0 = без ограничений)-o, --output <файл>: Имя выходного файла (по умолчанию: codebase.md)-t, --threads <число>: Количество потоков обработки (0 = авто)-m, --max-file-size <байты>: Максимальный размер файла для обработки (0 = без ограничений)-S, --stats: Показать детальную статистику после обработки-d, --dry-run: Показать что будет обработано без создания выходного файла
-l, --list-templates: Список доступных gitignore шаблонов-e, --enable-template <шаблон>: Включить конкретный шаблон-D, --disable-template <шаблон>: Отключить конкретный шаблон-u, --force-update: Принудительное обновление шаблонов из API-n, --check-internet <bool>: Включить/отключить проверку интернета--show-enabled: Показать включенные шаблоны
-i, --system_instructions: Устаревшая опция (скрыта)
Утилита автоматически определяет типы проектов и настраивает соответствующие исключения:
- Пропускает:
target/,Cargo.lock - Расширения:
rlib,rmeta
- Пропускает:
node_modules/,.npm/,.yarn/,dist/,build/,.next/,.nuxt/,.angular/,coverage/
- Пропускает:
__pycache__/,.pytest_cache/,.mypy_cache/,.tox/,venv/,.venv/,site-packages/ - Расширения:
pyc,pyo,pyd,egg,whl
- Пропускает:
target/,build/,.gradle/,.idea/,out/ - Расширения:
class,jar,war,ear
- Пропускает:
vendor/
- Пропускает:
bin/,obj/,packages/,.vs/,.vscode/,Properties/ - Расширения:
exe,dll,pdb,cache,user
- Пропускает:
.angular/,dist/,coverage/,.coverage/ - Расширения:
js.map,css.map,ngsummary.json,ngfactory,ngstyle,ngtemplate
- Пропускает:
cmake-build-debug/,cmake-build-release/,build/,obj/,bin/,Debug/,Release/ - Расширения:
o,obj,exe,dll,so,dylib,a,lib
- Пропускает:
vendor/,.bundle/
- Пропускает:
vendor/
- Скорость: В 10-50 раз быстрее в зависимости от размера проекта
- Память: В 3-5 раз меньше потребление памяти
- Параллелизм: Автоматическая многопоточная обработка
- Большие файлы: Эффективная обработка через memory mapping
На проекте с 10,000 файлов (общий размер 2GB):
- Python версия: ~5 минут, 1.2GB RAM
- Rust версия: ~30 секунд, 400MB RAM
- ✅ Clippy-clean: Полное соответствие стандартам Rust
- ✅ Идиоматический код: Соблюдение лучших практик Rust
- ✅ Безопасность: Отсутствие
unwrap()в основной логике - ✅ Обработка ошибок: Использование
Result<T, E>и?оператора - ✅ Документация: Полное покрытие
rustdocкомментариями - ✅ Тесты: Полное покрытие unit и integration тестами
- ✅ Производительность: Оптимизированные алгоритмы и структуры данных
- Парсер аргументов: Использует
clapдля CLI - Обход файловой системы:
walkdirс фильтрацией - Параллельная обработка:
rayonдля многопоточности - Чтение файлов:
memmap2для эффективного доступа - Прогресс:
indicatifдля визуализации
- Memory mapping для больших файлов
- Параллельная обработка с настраиваемым числом потоков
- Буферизированный вывод
- Ранняя фильтрация ненужных файлов
- Безопасная обработка ошибок без паники
- LTO и агрессивная оптимизация размера
RAYON_NUM_THREADS: Количество потоков для обработки
[profile.release]
lto = true # Link Time Optimization
codegen-units = 1 # Одна единица генерации кода
panic = "abort" # Уменьшает размер
strip = true # Удаление отладочных символов
opt-level = "z" # Оптимизация по размеру
overflow-checks = false # Отключение проверок переполнения# Запуск тестов
cargo test
# Запуск бенчмарков
cargo bench
# Проверка кода
cargo clippy
cargo fmt --check
# Проверка безопасности
cargo audit- Fork проекта
- Создание feature branch (
git checkout -b feature/amazing-feature) - Commit изменений (
git commit -m 'Add amazing feature') - Push в branch (
git push origin feature/amazing-feature) - Создание Pull Request
MIT License - см. файл LICENSE для деталей.
При возникновении проблем:
- Проверьте существующие issues
- Создайте новый issue с описанием проблемы
- Укажите версию ОС, Rust и пример команды
- Python-версия flatten.py как основа для функциональности
- Сообществу Rust за отличные библиотеки