Skip to content

HSE-Software-Development/CLI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CLI

CI Tests

License: MIT

Простой интерпретатор командной строки, поддерживающий самореализованные команды, вызов внешних программ, а также поддержку переменных, своих и окружения.

Поддерживаемые команды

Данный интерпретатор уже поддерживает многие команды, такие как cat, echo, wc, grep и многие другие. Подробнее о них можете узнать в Commands.md

Запуск под macOS/Linux

# build
chmod +x scripts/build.sh
./scripts/build.sh

# Run
chmod +x scripts/run.sh
./scripts/run.sh

Запуск под Windows

# build
scripts\build.bat

#Run
#scripts\run.bat
.\bin\cli-app.exe

Переменные окружения

При запуске, программа подгружает переменные окружения с вашего устройства. При запуске под unix-подобной системой это будут:

  • "PWD", "SHELL", "TERM", "USER", "OLDPWD", "LS_COLORS", "MAIL", "PATH", "LANG", "HOME", "_*"

Тестирование

Для запуска всех unit-test программы, запустите:

go test -v ./...

Выбор библиотеки для работы с флагами

Почему pflag?

Основные причины выбора pflag для вашего CLI-проекта:

  1. Совместимость с POSIX/GNU стилем флагов

    • Поддержка коротких (-v) и длинных (--verbose) флагов
    • Возможность комбинирования коротких флагов (-a -b -c-abc)
  2. Интеграция с Go-экосистемой

    • Разработана создателями Cobra (популярного фреймворка для CLI)
    • Широко используется в известных Go-проектах (Kubernetes, Docker CLI)
  3. Богатый функционал

    flagSet.IntVarP(&port, "port", "p", 8080, "server port")
    • Поддержка типизированных флагов (int, bool, string и др.)
    • Автоматическая генерация help-сообщений

Сравнительная таблица

Библиотека POSIX флаги Подкоманды Типизация Сложность Размер
flag Low 0MB
pflag Medium 0.5MB
cli High 2MB
cobra High 3MB
kong Very High 1MB

Итоговый выбор

pflag идеально подходит для вашего проекта потому что:

  1. Обеспечивает нужную функциональность для grep (поддержка -i, -w, -A)
  2. Не вводит избыточных зависимостей
  3. Сохраняет совместимость с Unix-традициями
  4. Позволяет легко расширять функционал в будущем

Contribution

Если вам так понравился наш продукт, что у вас появилось желание его доработать, вы всегда можете добавить в него свой функционал.

Как мне это сделать?

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •