Пользовательский конфиг
Пользовательские настройки DWE лежат вне любого проекта — в плоском файле формата key = value. Они читаются при каждом запуске dwe независимо от текущей директории и никогда не коммитятся в git.
Этот файл хранит то, что по своей природе персонально: предпочитаемый язык, тему mermaid-диаграмм для TUI dwe docs, условия для desktop-уведомлений и переопределения абсолютных путей к внешним бинарникам (docker, git, dwe, shell, mmdc). Ничему из перечисленного не место в проектных workspace.yml, defaults.yml или local.yml — те описывают форму проекта, а не локальное состояние машины разработчика.
Содержание
Заголовок раздела «Содержание»Расположение файлов
Заголовок раздела «Расположение файлов»Два файла читаются в таком порядке приоритета (от низкого к высокому), потом env-переменные поверх:
-
Глобальный пользовательский конфиг в
~/.config/dwe/configна каждой ОС (Linux, macOS, Windows). Один путь везде — никаких platform-native локаций, никакого XDG-фолбэка. Отсутствие файла трактуется как пустой. Если DWE когда-либо пишет этот файл, права —0600. -
Переопределение для конкретного проекта в
<project>/.dwe/config. Директория.dwe/уже gitignored DWE’ом; этот файл нужен, чтобы разработчик мог зафиксировать переопределения для одного проекта, не трогая глобальный файл. Отсутствие файла трактуется как пустой. -
Переменные окружения перекрывают оба файла.
Ошибка парсинга в любом из файлов выводится как warning (уведомления для этого запуска отключаются, локаль и тема падают на дефолты). Сама операция никогда не блокируется кривым пользовательским конфигом.
Синтаксис
Заголовок раздела «Синтаксис»Плоские строки key = value:
- Полнострочные комментарии с
#— inline#это parse error (символ#после пробела/таба внутри значения отвергается; голый#без предшествующего пробела допустим — например, для якорей в URL). - Пустые строки игнорируются.
- Ключи — строчные буквы, цифры и подчёркивания. Ключи с точкой отвергаются — пишите
notify_telegram_token, а неnotify.telegram.token. - Булевы значения:
1/true/yes— правда;0/false/no— ложь. - Списки: через запятую, пробелы вокруг элементов обрезаются.
- Неизвестные ключи дают warning, а не ошибку.
Переопределения бинарей
Заголовок раздела «Переопределения бинарей»Переопределяет абсолютный путь, который DWE использует при вызове внешнего бинарника. Полезно, когда инструмент лежит в нестандартном месте или нужно зафиксировать конкретную версию.
| Ключ | Дефолт | Где используется |
|---|---|---|
binary_docker | docker | каждый вызов Docker / Compose |
binary_git | git | git-зависимые операции (рендер git-хуков, status-пробы) |
binary_dwe | dwe | самоупоминания, выводимые DWE’ом (tip-строки, сгенерированные wrapper-скрипты) |
binary_shell | sh | shell, используемый для вычисления when: и встроенных скриптов |
binary_mmdc | mmdc | рендер mermaid-диаграмм в TUI dwe docs |
Паттерн binary_<name> = <абсолютный путь> также подхватывается runtime-линтерами — любой бинарник, который ищет env/runtime-чек (shellcheck, yamllint и т.д.), переопределяется этим же способом.
Примечание: предикаты
when:в шагах deploy и в условиях намеренно используют жёстко зафиксированныйshради переносимости и игнорируютbinary_shell. Переопределение применяется ко всем остальным shell-вызовам.
Пустые пути отвергаются на этапе парсинга. Отсутствующие файлы / неисполняемые пути выводятся как диагностики dwe validate (severity error) с подсказкой, указывающей на запись с переопределением.
binary_docker = /opt/homebrew/bin/dockerbinary_git = /usr/local/bin/gitbinary_mmdc = /Users/me/.npm-global/bin/mmdc| Ключ | Тип | Дефолт | Назначение |
|---|---|---|---|
language | string | unset → $LANG → en | Предпочитаемая локаль для переведённых строк |
Двухбуквенный код языка (en, ru, de, …). Управляет разрешением локали для user-команд, UI-строк и dwe docs. Полную лестницу разрешения и правила фолбэка по неймспейсам см. в Локализация (i18n).
Тема mermaid
Заголовок раздела «Тема mermaid»| Ключ | Тип | Дефолт | Назначение |
|---|---|---|---|
mermaid_theme | enum | auto | Тема для рендеринга mermaid-диаграмм в TUI dwe docs |
Допустимые значения: auto (следовать фону терминала), dark, light. Пустая строка также резолвится в auto. Любое другое значение — ошибка парсинга.
Уведомления
Заголовок раздела «Уведомления»Ключи, относящиеся к уведомлениям (notify_enabled, notify_run_enabled, notify_deploy_enabled, notify_commands_enabled, notify_channels), находятся в этом же файле. Подробно — вместе с матрицей условий, детектом non-interactive и backend’ами уведомлений на каждой ОС — описаны в Уведомления.
Переменные окружения
Заголовок раздела «Переменные окружения»Каждому типизированному ключу соответствует DWE_<UPPER_SNAKE>, перекрывающий значение из файлов:
| Env-переменная | Перекрывает |
|---|---|
DWE_LANGUAGE | language |
DWE_MERMAID_THEME | mermaid_theme |
DWE_NOTIFY_ENABLED | notify_enabled |
DWE_NOTIFY_RUN_ENABLED | notify_run_enabled |
DWE_NOTIFY_DEPLOY_ENABLED | notify_deploy_enabled |
DWE_NOTIFY_COMMANDS_ENABLED | notify_commands_enabled |
DWE_NOTIFY_CHANNELS | notify_channels |
У переопределений бинарей env-аналога нет — задавайте их в файле конфига.
Приоритет
Заголовок раздела «Приоритет»embedded defaults → глобальный ~/.config/dwe/config → per-project <project>/.dwe/config → переменные окруженияПоздние слои перекрывают предыдущие. Карты мержатся по ключам; ключи-списки (notify_channels) заменяются целиком.
Пример конфига
Заголовок раздела «Пример конфига»# ~/.config/dwe/config — один путь на всех ОС
# Локаль и TUIlanguage = rumermaid_theme = dark
# Переопределения бинарейbinary_docker = /opt/homebrew/bin/dockerbinary_mmdc = /Users/me/.npm-global/bin/mmdc
# Уведомления: громко на deploy, тихо на inner-loop runnotify_enabled = truenotify_deploy_enabled = truenotify_run_enabled = falsenotify_commands_enabled = truenotify_channels = nativePer-project файл, фиксирующий только одну настройку иначе:
# <project>/.dwe/config
notify_run_enabled = false