Skip to content

[Task] Разработка CLI-утилиты для интерактивного заполнения переменных окружения (.env) #9

@soorq

Description

@soorq

Контекст

С ростом количества сервисов и зависимостей (PostgreSQL, Redis, ClickHouse, Loki, CASL секреты) ручное управление файлом .env становится источником ошибок и "забытых" переменных. Необходимо создать внутренний CLI-инструмент, который будет сканировать .env.example, запрашивать у разработчика недостающие значения в интерактивном режиме и валидировать их. Это критично для быстрой настройки локального окружения и унификации конфигураций в команде.


Технические требования

  • Локация логики: scripts/env-setup.ts или отдельный пакет packages/cli-tools
  • Инструменты: Node.js, commander или yargs (для CLI-интерфейса), inquirer или enquirer (для интерактивных опросов), dotenv.
  • Логика работы:
    1. Считать файл .env.example и составить список необходимых ключей.
    2. Проверить наличие существующего .env. Если файл есть, загрузить текущие значения как дефолтные.
    3. Итерироваться по списку ключей и выводить интерактивный Prompt:
      • Для стандартных строк: обычный ввод.
      • Для портов: валидация на число.
      • Для секретов (JWT, пароли): автоматическая генерация безопасной строки по запросу.
      • Для логических флагов: переключатель (Yes/No).
    4. Записать итоговый результат в .env, сохранив структуру и комментарии из примера.

Цель и критерии приемки (Definition of Done)

  • База: Создан исполняемый скрипт, доступный через команду npm run env:setup или make env.
  • Функционал: Скрипт корректно парсит .env.example, включая комментарии, и создает валидный .env.
  • Функционал: Добавлена опция --force для перезаписи всех значений и --verify для проверки наличия всех обязательных переменных без участия пользователя.
  • Лимиты/SLA: Процесс настройки для нового разработчика (со всеми компонентами системы) должен занимать не более 1 минуты.
  • Интеграция: Скрипт добавлен в preinstall или postinstall хуки проекта для автоматического напоминания о настройке.

Важные указания

  • Производительность: Скрипт должен работать быстро, не требуя поднятия базы данных или других тяжелых зависимостей.
  • Ошибки: Если .env.example отсутствует, выводить понятное сообщение об ошибке и завершать процесс с кодом 1.
  • Безопасность: Никогда не сохранять введенные секреты в логи или историю команд. Добавить автоматическое добавление .env в .gitignore, если он там отсутствует, при первом запуске скрипта.

Metadata

Metadata

Assignees

No one assigned

    Labels

    devopsЗадачи, связанные с автоматизацией жизненного цикла ПОdocumentationImprovements or additions to documentationenhancementNew feature or requestinfrastructureЗадачи по управлению железом или виртуальными ресурсами

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions