Типы задач Ziva
Ziva предоставляет пять готовых типов задач. Каждая из них решает конкретный сценарий пользовательского ввода и интегрируется в очередь без ручного управления состоянием.YesNoTask
Быстрый бинарный выбор (Да/Нет) с поддержкой таймаута
SingleSelectTask
Выбор одного варианта из списка с подсказками и отключением пунктов
MultiSelectTask
Множественный выбор с пунктом «Выбрать все» и предзаполненными значениями
InputTask
Текстовый ввод с типами полей, таймаутами и встроенной валидацией
FuncTask
Запуск произвольной функции с отображением прогресса и сводки
Общие возможности
Таймауты
Каждая задача поддерживает таймаут с автоматическим значением по умолчанию:[]string
, bool
и т.д.). YesNoTask также предоставляет специальные методы WithTimeoutYes()
/ WithTimeoutNo()
.
Подсказки и разделители
В списковых задачах можно добавлять вспомогательный текст через разделитель (по умолчанию::
). Новый разделитель задаётся глобально:
Отключение элементов
SingleSelectTask
и MultiSelectTask
умеют блокировать пункты по значению, индексу или списку:
Viewport
Для длинных списков ограничьте видимую часть:Хранение результатов
Послеqueue.Run()
данные остаются в объектах задач:
Не пытайтесь читать результаты внутри очереди. Дождитесь окончания
Run()
и работайте с сохранёнными ссылками на задачи.Реализация собственного типа задачи
ziva.Task
— это алиас интерфейса common.Task
. Если встроенных типов недостаточно, можно реализовать его самостоятельно:
FuncTask
для побочных действий.
Шаблон структуры приложения
Лучшие практики
- Группируйте задачи по смыслу. Пользователю проще пройти несколько небольших очередей, чем одну огромную.
- Используйте таймауты аккуратно. Всегда выбирайте fallback, безопасный для вашей системы.
- Показывайте подсказки. Разделитель помогает объяснить значения вроде
prod
,staging
,cli
. - Не дублируйте вывод. Ziva сам управляет TUI-рендерингом; избегайте
fmt.Println
внутри задач. - Сохраняйте ссылки на задачи. Это единственный способ получить результаты после завершения очереди.