use std::fmt;
use crate::render::chrome_fetcher::Revision;
#[derive(Debug, Clone)]
pub struct BuildInfo {
pub revision: Option<Revision>,
pub version: Option<String>,
pub id: String,
}
impl fmt::Display for BuildInfo {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "ID: {}", self.id)?;
if let Some(revision) = &self.revision {
write!(f, ", Revision: {}", revision)?;
}
if let Some(version) = &self.version {
write!(f, ", Version: {}", version)?;
}
Ok(())
}
}
impl BuildInfo {
#[doc(hidden)] pub fn revision(revision: Revision) -> Self {
Self {
revision: Some(revision),
version: None,
id: revision.to_string(),
}
}
#[doc(hidden)] pub fn version(version: String) -> Self {
Self {
revision: None,
version: Some(version.clone()),
id: version,
}
}
#[doc(hidden)] pub fn both(version: String, revision: Revision) -> Self {
Self {
revision: Some(revision),
version: Some(version.clone()),
id: version,
}
}
}