diff --git a/src/sudo.rs b/src/sudo.rs index 28c6fee9..85b65795 100644 --- a/src/sudo.rs +++ b/src/sudo.rs @@ -24,6 +24,7 @@ impl Sudo { pub fn detect() -> Option { which("doas") .map(|p| (p, SudoKind::Doas)) + .or_else(|| which("please").map(|p| (p, SudoKind::Please))) .or_else(|| which("sudo").map(|p| (p, SudoKind::Sudo))) .or_else(|| which("gsudo").map(|p| (p, SudoKind::Gsudo))) .or_else(|| which("pkexec").map(|p| (p, SudoKind::Pkexec))) @@ -47,6 +48,12 @@ impl Sudo { // See: https://man.openbsd.org/doas cmd.arg("echo"); } + SudoKind::Please => { + // From `man please` + // -w, --warm + // Warm the access token and exit. + cmd.arg("-w"); + } SudoKind::Sudo => { // From `man sudo` on macOS: // -v, --validate @@ -96,6 +103,7 @@ impl Sudo { #[derive(Clone, Copy, Debug)] enum SudoKind { Doas, + Please, Sudo, Gsudo, Pkexec,