vopono_core 0.1.16

Library code for running VPN connections in network namespaces
Documentation
use anyhow::anyhow;
use log::debug;
use regex::Regex;
use std::process::Command;

pub fn get_pulseaudio_server() -> anyhow::Result<String> {
    let output = Command::new("pactl")
        .args(["-f", "json", "info"])
        .output()?
        .stdout;
    let re = Regex::new("\"server_string\":\"([^\"]+)\"").unwrap();
    let output = std::str::from_utf8(&output)?;

    let caps = re.captures(output);
    if caps.is_none() {
        return Err(anyhow!("Could not parse pactl output!:\n{output}"));
    }
    let caps = caps.unwrap().get(1);
    if caps.is_none() {
        return Err(anyhow!("Could not parse pactl output!:\n{output}"));
    }

    let out = caps.unwrap().as_str().to_string();
    debug!("Setting PULSE_SERVER to {out}");
    Ok(out)
}