Repository navigation
Open
Open
Copy link
Labels
devopsЗадачи, связанные с автоматизацией жизненного цикла ПОЗадачи, связанные с автоматизацией жизненного цикла ПОdocumentationImprovements or additions to documentationImprovements or additions to documentationenhancementNew feature or requestNew feature or requestinfrastructureЗадачи по управлению железом или виртуальными ресурсамиЗадачи по управлению железом или виртуальными ресурсами
Description
Контекст
С ростом количества сервисов и зависимостей (PostgreSQL, Redis, ClickHouse, Loki, CASL секреты) ручное управление файлом .env становится источником ошибок и "забытых" переменных. Необходимо создать внутренний CLI-инструмент, который будет сканировать .env.example, запрашивать у разработчика недостающие значения в интерактивном режиме и валидировать их. Это критично для быстрой настройки локального окружения и унификации конфигураций в команде.
Технические требования
- Локация логики:
scripts/env-setup.tsили отдельный пакетpackages/cli-tools - Инструменты: Node.js,
commanderилиyargs(для CLI-интерфейса),inquirerилиenquirer(для интерактивных опросов),dotenv. - Логика работы:
- Считать файл
.env.exampleи составить список необходимых ключей. - Проверить наличие существующего
.env. Если файл есть, загрузить текущие значения как дефолтные. - Итерироваться по списку ключей и выводить интерактивный Prompt:
- Для стандартных строк: обычный ввод.
- Для портов: валидация на число.
- Для секретов (JWT, пароли): автоматическая генерация безопасной строки по запросу.
- Для логических флагов: переключатель (Yes/No).
- Записать итоговый результат в
.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
Labels
devopsЗадачи, связанные с автоматизацией жизненного цикла ПОЗадачи, связанные с автоматизацией жизненного цикла ПОdocumentationImprovements or additions to documentationImprovements or additions to documentationenhancementNew feature or requestNew feature or requestinfrastructureЗадачи по управлению железом или виртуальными ресурсамиЗадачи по управлению железом или виртуальными ресурсами
Activity