#[cfg(test)]
use std::path::PathBuf;
pub(crate) fn git_ssh_hardening() -> String {
let home = std::env::var("HOME").unwrap_or_else(|_| "/root".to_string());
format!(
"env -u SSH_ASKPASS ssh -o BatchMode=yes -F {home}/.dracon/secrets/ssh/config -o ConnectTimeout=10 -o ConnectionAttempts=1 -o ServerAliveInterval=5 -o ServerAliveCountMax=2"
)
}
#[cfg(test)]
#[allow(dead_code)]
pub(crate) fn real_git_path() -> PathBuf {
if let Ok(custom) = std::env::var("DRACON_SYNC_GIT_BIN") {
let trimmed = custom.trim();
if !trimmed.is_empty() {
return PathBuf::from(trimmed);
}
}
static REAL_GIT: std::sync::OnceLock<PathBuf> = std::sync::OnceLock::new();
REAL_GIT
.get_or_init(|| {
for candidate in ["/run/current-system/sw/bin/git", "/usr/bin/git", "/bin/git"] {
let path = PathBuf::from(candidate);
if path.exists() {
return path;
}
}
PathBuf::from("git")
})
.clone()
}