5 / 8
TUI
CLI из прошлой главы хорош для скриптов и для агента. А если вам самим
нужно быстро глянуть, что вообще есть в проекте, добавить пару секретов
подряд и тут же их проверить — для этого есть athanor tui.
Экран
Athanor — secrets for this project
> DB_PASSWORD [hidden]
STRIPE_TEST_KEY [exposable] sk-test-...
↑/↓ move · enter reveal · y copy · a add · d delete · r run · q quit
Каждая строка — имя секрета, тег [hidden]/[exposable] (та же
Exposable() из главы 3, просто
отрисованная), и — если значение раскрыто — оно само рядом.
Клавиши
↑/↓(илиk/j) — перемещение по списку.enter/space— раскрыть значение выбранного секрета. Раскрыт всегда только один секрет за раз — при переходе на другую строку прежнее значение исчезает из памяти TUI.y— скопировать значение выбранного секрета в буфер обмена, не выводя его на экран вовсе.d— запросить удаление выбранного секрета из зашифрованного файла и манифеста; подтвердить клавишейy, отменить черезnилиesc.r— переключиться в режим ввода команды: набрать её,enterзапускает через тот жеStore.Run, что иathanor run, вывод показывается прямо в TUI;escотменяет и возвращает к списку.q/ctrl+c— выйти.
Почему a временно закрывает TUI
Клавиша a (добавить секрет) устроена иначе, чем остальные. Она
завершает текущий bubbletea-цикл, показывает отдельную форму на чистом
терминале (имя → значение скрытым вводом → флаг expose → подтверждение) и
после сохранения заново открывает список.
Это не побочный эффект, а сознательное решение: библиотека форм (huh),
которой Athanor пользуется для ввода, лучше всего работает как
самостоятельная программа на "чистом" терминале, а не встроенной в другой
активный экран bubbletea. Городить сложную интеграцию двух UI-циклов в
одном процессе смысла нет — проще и надёжнее выйти из одного, показать
другой и вернуться. Пользователь почти не замечает разницы (короткое
мигание экрана), а код остаётся простым.
Контрольный вопрос. Что происходит с раскрытыми через enter
значениями, когда вы переключаетесь на другую строку списка?
Ответ: предыдущее раскрытое значение скрывается — TUI держит в памяти не больше одного раскрытого значения за раз, а не накапливает их по мере навигации.