httpd: improve error message for missing browser

If `open` or `xdg-open` fail the error is:

    No such file or directory (os error 2)

This generally means that the command could not open the browser on
the OS. To provide better help, improve the error message by informing
the user what went wrong and that they can run `rad web --no-open`
instead, while still printing the URL to visit.

Signed-off-by: Fintan Halpenny <fintan.halpenny@gmail.com>
X-Clacks-Overhead: GNU Terry Pratchett
This commit is contained in:
Fintan Halpenny 2024-02-16 13:50:08 +00:00 committed by cloudhead
parent ccec3f80dc
commit b6e1385e39
No known key found for this signature in database
1 changed files with 13 additions and 7 deletions

View File

@ -198,16 +198,22 @@ pub fn run(options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
let cmd_name = "xdg-open";
let mut cmd = Command::new(cmd_name);
match cmd.arg(auth_url.as_str()).spawn()?.wait() {
Ok(exit_status) => {
if exit_status.success() {
term::success!("Opened {auth_url}");
} else {
match cmd.arg(auth_url.as_str()).spawn() {
Ok(mut child) => match child.wait() {
Ok(exit_status) => {
if exit_status.success() {
term::success!("Opened {auth_url}");
} else {
term::info!("Visit {auth_url} to connect");
}
}
Err(_) => {
term::info!("Visit {auth_url} to connect");
}
}
},
Err(_) => {
term::error(format!("Could not open web browser via `{cmd_name}`"));
term::hint("Use `rad web --no-open` if this continues");
term::info!("Visit {auth_url} to connect");
}
}