Поддержка YAML-конфига в ~/.config/redmine-reporter/config.yml #46
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Контекст
Текущий способ настройки —
.envв рабочей директории. Он хорош для секретов и CI/CD, но плохо масштабируется, когда в проекте появляются:--commit, #44);datetime, #47).Всё это в
.envпревращается в длинный плоский список без структуры, неудобный для редактирования и версионирования.Предложение
Ввести YAML-конфиг как основное хранилище постоянных настроек пользователя:
.envостаётся для секретов и временных переопределений, но перестаёт быть единственным источником правды.Структура конфига (черновик)
Конкретные поля и секции будут уточнены при реализации связанных задач (#43, #44, #45, #47). Этот issue — фундамент, от которого они зависят.
Приоритеты наслоения
То есть флаги командной строки всегда побеждают,
.envможет доопределять секреты, а YAML отвечает за постоянные пользовательские настройки.Безопасность
~/.config/redmine-reporter/создаётся с правами0700.config.ymlсоздаётся с правами0600.api_key,smtp.password) в YAML допустимы, но не рекомендуются. Предпочтительнее:.env, переменные окружения или подстановка вида${VAR}.Поддержка
${VAR}в YAMLОткрытый вопрос: поддерживать ли подстановку переменных окружения прямо в значениях YAML, например:
Это удобно для секретов, но добавляет сложность парсинга. Нужно решить при реализации.
Миграция с
.env~/.config/redmine-reporter/config.ymlсуществует — использовать его..env— использовать его (обратная совместимость).При желании можно добавить команду генерации шаблона конфига, но это не обязательно в рамках этого issue.
Связанные задачи
output).--commit, фиксация периода (писать вperiod.last_usedYAML-конфига).emailиsmtp).datetimeв периоде (полеperiod.precision).Критерии приёмки
~/.config/redmine-reporter/config.yml, если он есть..env< CLI-флаги.0700/0600..envпродолжает работать без изменений.