use anyhow::{Context, Result};
use tokio::process::Command;
pub async fn fix() -> Result<()> {
if let Ok(user) = std::env::var("USER") {
if user != "root" {
return Ok(()); }
if let Ok(user) = std::env::var("SUDO_USER") {
log::debug!("Running as SUDO, using home of `{user}`");
let home = Command::new("sh")
.arg("-c")
.arg(format!("eval echo ~{user}"))
.output()
.await
.with_context(|| format!("Failed to get home path of `{user}`"))?
.stdout;
let home = String::from_utf8(home)?;
log::debug!("Setting home to `{home}`");
std::env::set_var("HOME", home.trim());
} else {
log::debug!("Running as root without sudo, using home `{user}`");
}
}
Ok(())
}