Перейти к содержимому

Потоковый вывод команд

Передайте обработчики вывода в commands.run, если приложению нужны данные до завершения команды.

mjs
import { Sandbox } from "@abox-dev/sdk";

const sandbox = await Sandbox.create();

try {
  await sandbox.commands.run("printf 'first\\n'; sleep 1; printf 'second\\n'", {
    onStdout: (data) => process.stdout.write(data),
    onStderr: (data) => process.stderr.write(data),
  });
} finally {
  await sandbox.kill();
}

Обработчик получает фрагмент потока, а не обязательно целую строку. Выводите фрагменты сразу либо накапливайте их для построчной обработки.

commands.run по-прежнему возвращает результат только после завершения команды. Если вызывающий код должен продолжить работу сразу, запустите фоновую команду.