Типы задач 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внутри задач. - Убирайте метку завершения, если она не нужна. Для
FuncTaskиспользуйтеWithoutSuccessLabel()или опциюWithoutSuccessLabelOption(), чтобы скрыть подпись «ГОТОВО». - Сохраняйте ссылки на задачи. Это единственный способ получить результаты после завершения очереди.