use serde::{Deserialize, Serialize};
pub const MANIFEST_SIGNATURE_ALGORITHM: &str = "ed25519";
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Artifact {
pub url: String,
pub sha256: String,
pub size: u64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub signature: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ManifestSignature {
#[serde(default = "default_signature_algorithm")]
pub algorithm: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub key_id: Option<String>,
pub value: String,
}
pub fn default_platform() -> String {
let os = if cfg!(target_os = "windows") {
"windows"
} else if cfg!(target_os = "macos") {
"darwin"
} else if cfg!(target_os = "linux") {
"linux"
} else {
std::env::consts::OS
};
let arch = if cfg!(target_arch = "x86_64") {
"x86_64"
} else if cfg!(target_arch = "aarch64") {
"aarch64"
} else {
std::env::consts::ARCH
};
format!("{os}-{arch}")
}
fn default_signature_algorithm() -> String {
MANIFEST_SIGNATURE_ALGORITHM.to_string()
}