use std::path::PathBuf;
use bon::Builder;
use crate::UbuntuVersionSignature;
#[derive(Builder, Debug)]
pub struct UbuntuSymbolRequest {
pub version_signature: UbuntuVersionSignature,
pub linux_image: Option<ArtifactPolicy>,
pub linux_image_dbgsym: Option<ArtifactPolicy>,
pub linux_modules: Option<ArtifactPolicy>,
}
#[derive(Builder, Debug, Clone)]
pub struct ArtifactPolicy {
pub deb: FilenamePolicy,
pub extract: Option<FilenamePolicy>,
}
#[derive(Debug, Clone)]
pub enum FilenamePolicy {
Original,
Custom(PathBuf),
}
impl FilenamePolicy {
pub fn original() -> Self {
Self::Original
}
pub fn custom(path: impl Into<PathBuf>) -> Self {
Self::Custom(path.into())
}
}
#[derive(Debug, Default, Clone)]
pub struct UbuntuSymbolPaths {
pub output_directory: PathBuf,
pub linux_image: Option<ArtifactPaths>,
pub linux_image_dbgsym: Option<ArtifactPaths>,
pub linux_modules: Option<ArtifactPaths>,
}
#[derive(Debug, Clone)]
pub struct ArtifactPaths {
pub deb: PathBuf,
pub extracted: Option<PathBuf>,
}