use super::BinObject;
use crate::Bin;
#[derive(Debug, Default, Clone)]
pub struct Builder<M> {
is_override: bool,
objects: Vec<BinObject<M>>,
dependencies: Vec<String>,
}
impl<M> Builder<M> {
pub fn new() -> Self
where
M: Default,
{
Self::default()
}
pub fn is_override(mut self, is_override: bool) -> Self {
self.is_override = is_override;
self
}
pub fn dependency(mut self, dep: impl Into<String>) -> Self {
self.dependencies.push(dep.into());
self
}
pub fn dependencies(mut self, deps: impl IntoIterator<Item = impl Into<String>>) -> Self {
self.dependencies.extend(deps.into_iter().map(Into::into));
self
}
pub fn object(mut self, obj: BinObject<M>) -> Self {
self.objects.push(obj);
self
}
pub fn objects(mut self, objs: impl IntoIterator<Item = BinObject<M>>) -> Self {
self.objects.extend(objs);
self
}
pub fn build(self) -> Bin<M> {
Bin {
version: 3,
is_override: self.is_override,
objects: self.objects.into_iter().map(|o| (o.path_hash, o)).collect(),
dependencies: self.dependencies,
data_overrides: Vec::new(),
}
}
}