use crate::{Command, CommandExt};
use std::io;
#[cfg(feature = "version")]
#[cfg_attr(doc_cfg, doc(cfg(feature = "version")))]
pub fn version() -> io::Result<crate::Version> {
Command::new("cargo").arg("about").arg("--version").stdout0()?.parse()
}
#[cfg(feature = "version")]
#[cfg_attr(doc_cfg, doc(cfg(feature = "version")))]
pub fn install_at_least(requested: &str) -> io::Result<()> {
let requested = semver::Version::parse(requested).map_err(|err| io::Error::new(io::ErrorKind::InvalidInput, err))?;
if let Ok(installed) = version() {
if requested >= installed.version { return Ok(()); }
}
Command::new("cargo").arg("install").arg("--version").arg(format!("^{}", requested)).arg("cargo-about").status0()
}