use semver::Version;
use tracing::debug;
use crate::chain::exec::simple_exec;
use crate::error::{handle_generic_error, Error};
pub fn get_chain_command_version(command: &str) -> Result<Option<Version>, Error> {
let output = simple_exec("version-command", command, &["version"])?;
let raw_version_str = if output.stdout.is_empty() {
output.stderr
} else {
output.stdout
};
let version_str = match raw_version_str.trim().strip_prefix('v') {
Some(str) => str.trim(),
None => raw_version_str.trim(),
};
debug!("parsing version string: {}", version_str);
let version = Version::parse(version_str)
.map_err(handle_generic_error)
.ok();
Ok(version)
}