pub mod aha;
pub mod dns_tools;
pub mod openssl_client;
pub mod xxd;
use crate::Result;
use std::process::Command;
pub fn check_tool_available(tool: &str) -> bool {
Command::new("which")
.arg(tool)
.output()
.map(|output| output.status.success())
.unwrap_or(false)
}
pub fn get_tool_version(tool: &str) -> Result<String> {
let output = Command::new(tool).arg("--version").output()?;
if output.status.success() {
Ok(String::from_utf8_lossy(&output.stdout).to_string())
} else {
Err(crate::error::TlsError::Other(format!(
"Failed to get version for {}",
tool
)))
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_check_tool_available() {
assert!(check_tool_available("ls"));
assert!(!check_tool_available("nonexistent_tool_xyz123"));
}
}