Потоковый вывод команд
Передайте обработчики вывода в 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 по-прежнему возвращает результат только после завершения команды. Если вызывающий код должен продолжить работу сразу, запустите фоновую команду.