pub mod archives;
use super::*;
use archives::*;
#[derive(Debug, Clone)]
pub struct AppArtifactConfig {
pub archives: ArchiveConfig,
pub extra: Vec<ExtraArtifact>,
}
#[derive(Debug, Clone)]
pub struct WorkspaceArtifactConfig {
pub source_tarball: bool,
pub recursive_tarball: bool,
pub checksum: ChecksumStyle,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub struct ArtifactLayer {
#[serde(skip_serializing_if = "Option::is_none")]
pub archives: Option<ArchiveLayer>,
#[serde(skip_serializing_if = "Option::is_none")]
pub source_tarball: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub recursive_tarball: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub extra: Option<Vec<ExtraArtifact>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub checksum: Option<ChecksumStyle>,
}
impl AppArtifactConfig {
pub fn defaults_for_package(workspaces: &WorkspaceGraph, pkg_idx: PackageIdx) -> Self {
Self {
archives: ArchiveConfig::defaults_for_package(workspaces, pkg_idx),
extra: vec![],
}
}
}
impl WorkspaceArtifactConfig {
pub fn defaults_for_workspace(_workspaces: &WorkspaceGraph) -> Self {
Self {
source_tarball: true,
recursive_tarball: false,
checksum: ChecksumStyle::Sha256,
}
}
}
impl ApplyLayer for AppArtifactConfig {
type Layer = ArtifactLayer;
fn apply_layer(
&mut self,
Self::Layer {
archives,
extra,
source_tarball: _,
recursive_tarball: _,
checksum: _,
}: Self::Layer,
) {
self.archives.apply_val_layer(archives);
self.extra.apply_val(extra);
}
}
impl ApplyLayer for WorkspaceArtifactConfig {
type Layer = ArtifactLayer;
fn apply_layer(
&mut self,
Self::Layer {
source_tarball,
recursive_tarball,
checksum,
archives: _,
extra: _,
}: Self::Layer,
) {
self.source_tarball.apply_val(source_tarball);
self.recursive_tarball.apply_val(recursive_tarball);
self.checksum.apply_val(checksum);
}
}