4a118a0c9c
This improves reliability for commands which expect the current working directory to be preserved. This may not always be the case on Linux as yet.
41 lines
1.1 KiB
JavaScript
41 lines
1.1 KiB
JavaScript
var fs = require('fs');
|
|
var sudo = require('./');
|
|
var exec = require('child_process').exec;
|
|
|
|
function kill(end) {
|
|
exec('sudo -k', end);
|
|
}
|
|
function icns() {
|
|
if (process.platform !== 'darwin') return undefined;
|
|
var path = '/Applications/Chess.app/Contents/Resources/Chess.icns';
|
|
try {
|
|
fs.statSync(path);
|
|
return path;
|
|
} catch (error) {}
|
|
return undefined;
|
|
}
|
|
kill(
|
|
function() {
|
|
var options = {
|
|
icns: icns(),
|
|
name: 'Chess'
|
|
};
|
|
var command = 'echo hello';
|
|
console.log('sudo.exec(' + JSON.stringify(command) + ', ' + JSON.stringify(options) + ')');
|
|
sudo.exec(command, options,
|
|
function(error, stdout, stderr) {
|
|
console.log('error: ' + error);
|
|
console.log('stdout: ' + JSON.stringify(stdout));
|
|
console.log('stderr: ' + JSON.stringify(stderr));
|
|
kill(
|
|
function() {
|
|
if (error) throw error;
|
|
if (stdout !== 'hello\n') throw new Error('stdout != "hello\n"');
|
|
if (stderr !== "") throw new Error('stderr != ""');
|
|
console.log('OK');
|
|
}
|
|
);
|
|
}
|
|
);
|
|
}
|
|
);
|