use std::collections::BTreeMap;
use crate::drop::{
source::Git,
version::SemVer,
};
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub struct Meta {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
pub description: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub exe_path: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub license: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub authors: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub readme: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub changelog: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub homepage: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub documentation: Option<String>,
pub version: SemVer,
#[serde(skip_serializing_if = "Option::is_none")]
pub git: Option<Git>,
#[serde(skip_serializing_if = "Option::is_none")]
pub conflicts: Option<BTreeMap<String, String>>,
}
impl Meta {
pub fn exe_path(&self) -> &str {
match &self.exe_path {
Some(path) => path,
None => &self.name,
}
}
}