use super::*;
#[derive(Debug, Clone)]
pub struct ArchiveConfig {
pub include: Vec<Utf8PathBuf>,
pub auto_includes: bool,
pub windows_archive: ZipStyle,
pub unix_archive: ZipStyle,
pub package_libraries: Vec<LibraryStyle>,
pub binaries: SortedMap<String, Vec<String>>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub struct ArchiveLayer {
#[serde(skip_serializing_if = "Option::is_none")]
pub include: Option<Vec<Utf8PathBuf>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub auto_includes: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub windows_archive: Option<ZipStyle>,
#[serde(skip_serializing_if = "Option::is_none")]
pub unix_archive: Option<ZipStyle>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default, with = "opt_string_or_vec")]
pub package_libraries: Option<Vec<LibraryStyle>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub binaries: Option<SortedMap<String, Vec<String>>>,
}
impl ArchiveConfig {
pub fn defaults_for_package(_workspaces: &WorkspaceGraph, _pkg_idx: PackageIdx) -> Self {
Self {
include: vec![],
auto_includes: true,
windows_archive: ZipStyle::Zip,
unix_archive: ZipStyle::Tar(CompressionImpl::Xzip),
package_libraries: vec![],
binaries: SortedMap::default(),
}
}
}
impl ApplyLayer for ArchiveConfig {
type Layer = ArchiveLayer;
fn apply_layer(
&mut self,
Self::Layer {
include,
auto_includes,
windows_archive,
unix_archive,
package_libraries,
binaries,
}: Self::Layer,
) {
self.include.apply_val(include);
self.auto_includes.apply_val(auto_includes);
self.windows_archive.apply_val(windows_archive);
self.unix_archive.apply_val(unix_archive);
self.package_libraries.apply_val(package_libraries);
self.binaries.apply_val(binaries);
}
}
impl ApplyLayer for ArchiveLayer {
type Layer = ArchiveLayer;
fn apply_layer(
&mut self,
Self::Layer {
include,
auto_includes,
windows_archive,
unix_archive,
package_libraries,
binaries,
}: Self::Layer,
) {
self.include.apply_opt(include);
self.auto_includes.apply_opt(auto_includes);
self.windows_archive.apply_opt(windows_archive);
self.unix_archive.apply_opt(unix_archive);
self.package_libraries.apply_opt(package_libraries);
self.binaries.apply_opt(binaries);
}
}