Перейти к содержанию
Mercury
Русский
Дизайн книга
Меню
Русский

Автоматизация с понятным результатом

Учитывайте структурированный результат вместе с кодом завершения процесса.

Скрипту нужно знать, выполнена ли работа и что мешает её выполнить. mg возвращает код завершения и структурированный результат. Учитывайте оба: JSON-файл может описывать как успех, так и ошибку.

Прочитайте один JSON-результат

mg version --json
mg help --json

--json записывает один объект в stdout. При успехе он содержит ok: true, command, exit_code: 0 и result. Сведения о версии находятся в result: в частности, version, revision, go_version и platform. Справка содержит доступные команды и флаги, позволяя программе определить возможности этой сборки.

При ошибке ok равно false, а error описывает проблему: kind, message, необязательный id и дальнейшие действия. Сообщение для человека может одновременно появиться в stderr. Сохраняйте stdout отдельно: перенаправление 2>&1 смешает диагностику с JSON.

if mg version --json > mg-result.json; then
  printf 'Version captured in mg-result.json\n'
else
  code=$?
  printf 'mg exited %s; inspect mg-result.json and stderr\n' "$code" >&2
fi

Получите подсказку агенту

mg help --agent
mg version --json --agent

В текстовом режиме --agent добавляет в stderr блок AGENT_PROMPT_BEGIN / AGENT_PROMPT_END. Вместе с JSON программа помещает подсказку в agent_prompt того же объекта. Переменная MG_AGENT=1 также включает подсказки. Они предлагают следующие действия, но не выполняют их и не дают разрешения на запись файлов.

Скрипт запуска может завершиться до старта программы. Его JSON-ошибка также сообщает код 3, однако обработчик должен допускать отсутствие agent_prompt и result.

Сохраните смысл ошибок

Код Значение Действие
0 Успех Используйте результат
1 Отказ, включая расхождение генерируемых файлов Изучите входные данные или список файлов
2 Неверная команда или аргументы Прочитайте предложенную справку
3 Проверку выполнить не удалось Восстановите инструмент, данные или доступ
101 Внутренняя ошибка Сохраните диагностику и mg version
128+n Остановка сигналом n Выясните причину прерывания

Невыполненная проверка не является успешной. В шаге CI сохраняйте ненулевой код, а не подменяйте его безусловным успехом. Для генерации используйте mg gen examples --check --json, предварительно убедившись, что команда доступна.

Проверьте безопасную ошибку

mg hlep --json

Ожидайте код 2, JSON с ошибкой в stdout и подсказку исправления в stderr. Сравните результат с успешным mg help --json. Обработчик должен различать их по полям и коду завершения, без разбора английского текста. Полный маршрут — на странице курса.