File size: 1,649 Bytes
e4a10af
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
"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