etcher-sdk
Version:
73 lines • 2.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const child_process = require("child_process");
const process = require("process");
const checkPlatform = () => {
if (process.platform !== 'win32') {
throw Error('This command can be run only on windows.');
}
};
/**
* Runs mountvol on windows; user has to be administrator
* @param desiredLetter - the label to give to the mounted volume default "M"
*/
const mountEfi = (desiredLetter = 'M') => {
checkPlatform();
// unmount the letter
// fails silently if not present, umounts if occupied
try {
child_process.execSync(`mountvol ${desiredLetter}: /D`);
}
catch (error) {
// noop
}
finally {
console.log(`Cleared up mount ${desiredLetter}: for EFI`);
}
try {
child_process.execSync(`mountvol ${desiredLetter}: /S`);
}
catch (error) {
throw new Error(`mountEfi: ${error}`);
}
};
/**
* Runs 'bcedit' to set the boot file; user has to be administrator
* @param path - the file path to set; default: '\BOOT\bootx64.efi'
* @returns the child process
*/
const setBoot = async (path = '\\EFI\\Boot\\bootx64.efi') => {
checkPlatform();
return new Promise((resolve, reject) => {
child_process.exec(`bcdedit /set {bootmgr} path ${path}`, (err, stdout) => {
if (err) {
reject(`setBoot: ${err}${stdout ? `\n${stdout}` : ''}`);
}
resolve(stdout);
});
});
};
const shutdown = {
reboot: (delay = 0) => {
child_process.exec(`shutdown /r /t ${delay}`, function (err) {
if (err) {
throw Error(err.message);
}
console.log(`Rebooting in ${delay} seconds...`);
});
},
now: () => {
child_process.exec('shutdown /s /t 0', function (err) {
if (err) {
throw Error(err.message);
}
console.log('Shutting down');
});
},
};
exports.default = {
mountEfi,
setBoot,
shutdown,
};
//# sourceMappingURL=windows-commands.js.map