Simplex — кроссплатформенный CLI-файловый менеджер на Go с модульной архитектурой, поддержкой расширяемости, безопасной работой с архивами и корзиной, покрытием тестами и интеграцией с CI/CD. Проект ориентирован на профессиональное использование, автоматизацию и дальнейшее развитие (TUI/GUI, плагины, интеграция с сетевыми протоколами).
- Навигация и работа с файловой системой
- Просмотр, фильтрация, закладки, переходы между каталогами
- Создание, копирование, перемещение, переименование, удаление файлов и папок
- Управление правами доступа (chmod)
- Просмотр информации и содержимого файлов
- Корзина (soft-delete)
- Кроссплатформенная реализация (Linux — стандарт Trash Info)
- Восстановление и очистка корзины
- Архивация и распаковка
- Поддержка zip, tar, tar.gz, tar.bz2 (распаковка), tar.xz (через внешний пакет)
- Просмотр содержимого архивов
- Безопасная обработка путей (path traversal protection)
- Поиск
- По имени (с шаблонами)
- По содержимому
- Фильтрация по типу, размеру, дате, расширению
- Журналирование
- Логирование операций, просмотр истории
- CLI-интерфейс
- Современный help, автодополнение, подробные сообщения об ошибках
- Тесты и качество кода
- Покрытие тестами (Codecov)
- Линтинг (golangci-lint)
- Интеграция с GoReleaser, Codecov, GitHub Actions
internal/
navigation/ # Навигация, фильтрация, закладки
fileops/ # Операции с файлами, архивами, корзиной
search/ # Поиск файлов и по содержимому
display/ # Цветной вывод, форматирование
logger/ # Журналирование операций
app/ # Основная логика приложения
tui/ # (WIP) TUI/GUI интерфейс
cmd/
filemanager/ # Точка входа CLI
# Клонировать репозиторий
$ git clone https://github.com/nps-rf/file-manager.git
$ cd file-manager
# Запустить приложение
$ go run main.go
["ru", "en", "es", "de", "fr", "zh"]
ls
— содержимое директорииcd <путь>
— смена директорииbookmark add <имя> [путь]
— добавить закладкуbookmark go <имя>
— перейти к закладке
mkdir <имя>
— создать директориюtouch <имя>
— создать файлcp <источник> <назначение>
— копироватьmv <источник> <назначение>
— переместить/переименоватьrm <имя>
— удалить (в корзину)restore <имя>
— восстановить из корзиныtrash empty
— очистить корзину
archive <архив> <формат> <файл1> [файл2...]
— создать архивextract <архив> <директория>
— распаковатьlist-archive <архив>
— содержимое архива
find <шаблон>
— поиск по имениgrep <текст>
— поиск по содержимомуfilter --ext=txt,log
— фильтрация по расширению
info <имя>
— информация о файле/папкеlog [N]
— последние N операций
- Защита от path traversal при работе с архивами
- Проверка ошибок при всех файловых операциях
- Логирование и аудит
- Покрытие тестами (см. Codecov)
- Линтинг (golangci-lint)
- GitHub Actions: тесты, линтинг, сборка, релиз
- GoReleaser: кроссплатформенные сборки
- Codecov: анализ покрытия тестами
- Автоматическая генерация changelog и релизов
- TUI/GUI (на базе BubbleTea/Fyne)
- Плагины и расширения
- Поддержка сетевых протоколов (SFTP, SMB, WebDAV)
- Batch rename, i18n, keyring, structured logging
- Документация, примеры, интеграция с внешними инструментами
Будем рады PR, багрепортам и предложениям! См. CONTRIBUTING.md и LICENSE.
Проект распространяется по лицензии MIT.