1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
use anyhow::Context as _;

use crate::{Error, Result};

pub fn open_in_browser(url: &str) -> Result<()> {
    if cfg!(test) {
        unreachable!("Cannot open url in browser during test");
    }
    match webbrowser::open(url) {
        Err(err) => Err(err.into()),
        Ok(output) if !output.status.success() => {
            Err(Error::msg("Process returned non-zero exit code"))
        }
        _ => Ok(()),
    }
    .with_context(|| format!("Could not open url in browser : {}", url))
}