Add a fallback to which pkexec on Linux

Fixes: https://github.com/jorangreef/sudo-prompt/issues/77
This commit is contained in:
Joran Dirk Greef 2018-12-10 18:37:25 +02:00
parent b07e6a87ca
commit 0e933b77c3

View file

@ -124,9 +124,7 @@ function LinuxBinary(instance, end) {
// However, gksudo cannot run multiple commands concurrently.
var paths = ['/usr/bin/kdesudo', '/usr/bin/pkexec'];
function test() {
if (index === paths.length) {
return end(new Error('Unable to find pkexec or kdesudo.'));
}
if (index === paths.length) return which();
var path = paths[index++];
Node.fs.stat(path,
function(error) {
@ -140,6 +138,17 @@ function LinuxBinary(instance, end) {
}
);
}
function which() {
// Operating system paths are not always predictable.
// Fallback to a best-effort search for pkexec.
Node.child.exec('which pkexec',
function(error, stdout, stderr) {
if (error) return end(new Error('Unable to find pkexec or kdesudo.'));
var path = stdout.toString('utf-8').trim(); // Remove trailing newline.
end(undefined, path);
}
);
}
test();
}