Skip to content

Nps-rf/Simplex

Simplex

Build Status Go Version License: MIT


О проекте

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
Support 6 languages
["ru", "en", "es", "de", "fr", "zh"]

Примеры CLI-команд

Навигация и закладки

  • 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)

CI/CD и релиз

  • GitHub Actions: тесты, линтинг, сборка, релиз
  • GoReleaser: кроссплатформенные сборки
  • Codecov: анализ покрытия тестами
  • Автоматическая генерация changelog и релизов

Планы развития

  • TUI/GUI (на базе BubbleTea/Fyne)
  • Плагины и расширения
  • Поддержка сетевых протоколов (SFTP, SMB, WebDAV)
  • Batch rename, i18n, keyring, structured logging
  • Документация, примеры, интеграция с внешними инструментами

Вклад и поддержка

Будем рады PR, багрепортам и предложениям! См. CONTRIBUTING.md и LICENSE.


Лицензия

Проект распространяется по лицензии MIT.

About

Продукт выпускной квалификационной работы

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Contributors 2

  •  
  •