"use strict";
|
Object.defineProperty(exports, "__esModule", { value: true });
|
const ChildProcesses = require("child_process");
|
const Plist = require("plist");
|
function writePlist(plist, to) {
|
return new Promise((resolve, reject) => {
|
const pls = Plist.build(plist);
|
to.write(pls, "UTF-8", error => {
|
if (error)
|
reject(error);
|
else
|
to.end(resolve);
|
});
|
});
|
}
|
async function writePlistToDmg(imagePath, plist) {
|
const child = ChildProcesses.spawn("hdiutil", ["udifrez", "-xml", "/dev/fd/3", imagePath, imagePath], {
|
stdio: ["inherit", "ignore", "inherit", "pipe"]
|
});
|
const childPromise = new Promise((resolve, reject) => {
|
let exited = false;
|
const timeout = setTimeout(() => {
|
if (!exited && !child.killed) {
|
child.kill();
|
reject(new Error("Timed out waiting for child process."));
|
}
|
}, 10000);
|
child.on("error", error => {
|
exited = true;
|
clearTimeout(timeout);
|
child.unref();
|
reject(error);
|
});
|
child.on("exit", code => {
|
exited = true;
|
clearTimeout(timeout);
|
child.unref();
|
if (code) {
|
reject(new Error(`Child process exited with code ${code}.`));
|
}
|
else {
|
resolve();
|
}
|
});
|
});
|
const writing = writePlist(plist, child.stdio[3]);
|
await Promise.all([childPromise, writing]);
|
}
|
exports.default = writePlistToDmg;
|
//# sourceMappingURL=writePlistToDmg.js.map
|