Скрипту нужно знать, выполнена ли работа и что мешает её выполнить. 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. Обработчик должен различать их по полям и коду завершения, без разбора английского текста. Полный маршрут — на странице курса.