#![allow(missing_docs)] use crate::config::AssetReference;
#[derive(
Debug,
Default,
derive_builder::Builder,
Clone,
PartialEq,
derive_asset_container::AssetManager,
property::Property,
serde::Serialize,
)]
#[property(get(public), set(private), mut(disable))]
#[builder(setter(into))]
#[asset(asset(AssetReference))]
pub struct Metadata {
#[asset(skip)]
pub(crate) version: String,
#[asset(skip)]
#[builder(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub(crate) authors: Vec<String>,
#[asset(skip)]
#[builder(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub(crate) vendors: Vec<String>,
#[asset(skip)]
#[builder(default)]
#[serde(skip_serializing_if = "Option::is_none")]
pub(crate) description: Option<String>,
#[asset(skip)]
#[builder(default)]
#[serde(skip_serializing_if = "Option::is_none")]
pub(crate) documentation: Option<String>,
#[asset(skip)]
#[builder(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub(crate) licenses: Vec<String>,
#[builder(default)]
#[serde(skip_serializing_if = "Option::is_none")]
pub(crate) icon: Option<AssetReference>,
}
impl Metadata {
pub fn new<T: Into<String>>(version: T) -> Self {
Self {
version: version.into(),
..Default::default()
}
}
}