Add shell.sudoSync()

This commit is contained in:
Johannes Zellner
2017-03-07 15:14:37 +01:00
parent 6023c0e5dc
commit 7995c664ed
+19 -1
View File
@@ -3,7 +3,8 @@
exports = module.exports = {
exec: exec,
execSync: execSync,
sudo: sudo
sudo: sudo,
sudoSync: sudoSync
};
var assert = require('assert'),
@@ -70,3 +71,20 @@ function sudo(tag, args, callback) {
var cp = exec(tag, SUDO, [ '-S' ].concat(args), callback);
cp.stdin.end();
}
function sudoSync(tag, cmd, callback) {
assert.strictEqual(typeof tag, 'string');
assert.strictEqual(typeof cmd, 'string');
// -S makes sudo read stdin for password
cmd = 'sudo -S ' + cmd;
debug(cmd);
try {
child_process.execSync(cmd, { stdio: 'inherit' });
} catch (e) {
if (callback) return callback(e);
throw e;
}
if (callback) callback();
}