Add a fallback to which pkexec
on Linux
Fixes: https://github.com/jorangreef/sudo-prompt/issues/77
This commit is contained in:
parent
b07e6a87ca
commit
0e933b77c3
1 changed files with 12 additions and 3 deletions
15
index.js
15
index.js
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue