use odpi::structs::ODPIVersionInfo;
use std::fmt;
#[derive(Clone, Debug)]
pub struct Info {
version: String,
version_num: u32,
release: Option<String>,
}
impl Info {
pub fn version(&self) -> &str {
&self.version
}
pub fn version_num(&self) -> u32 {
self.version_num
}
pub fn release(&self) -> &str {
if let Some(ref release) = self.release {
release
} else {
""
}
}
pub fn set_release(&mut self, release: Option<String>) -> &mut Self {
self.release = release;
self
}
}
impl From<ODPIVersionInfo> for Info {
fn from(ovi: ODPIVersionInfo) -> Self {
let version = format!(
"{}.{}.{}.{}.{}",
ovi.version_num,
ovi.release_num,
ovi.update_num,
ovi.port_release_num,
ovi.port_update_num
);
Self {
version,
version_num: ovi.full_version_num,
release: None,
}
}
}
impl fmt::Display for Info {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{} ({})", self.version, self.version_num)?;
if let Some(ref release) = self.release {
write!(f, "{}", release)?;
}
Ok(())
}
}