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.
|
// However, gksudo cannot run multiple commands concurrently.
|
||||||
var paths = ['/usr/bin/kdesudo', '/usr/bin/pkexec'];
|
var paths = ['/usr/bin/kdesudo', '/usr/bin/pkexec'];
|
||||||
function test() {
|
function test() {
|
||||||
if (index === paths.length) {
|
if (index === paths.length) return which();
|
||||||
return end(new Error('Unable to find pkexec or kdesudo.'));
|
|
||||||
}
|
|
||||||
var path = paths[index++];
|
var path = paths[index++];
|
||||||
Node.fs.stat(path,
|
Node.fs.stat(path,
|
||||||
function(error) {
|
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();
|
test();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue