Skip to main content

hdiff_update_core/
manifest.rs

1use serde::{Deserialize, Serialize};
2
3pub const MANIFEST_SIGNATURE_ALGORITHM: &str = "ed25519";
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
6#[serde(rename_all = "camelCase")]
7pub struct Artifact {
8    pub url: String,
9    pub sha256: String,
10    pub size: u64,
11    #[serde(default, skip_serializing_if = "Option::is_none")]
12    pub signature: Option<String>,
13}
14
15#[derive(Debug, Clone, Serialize, Deserialize)]
16#[serde(rename_all = "camelCase")]
17pub struct ManifestSignature {
18    #[serde(default = "default_signature_algorithm")]
19    pub algorithm: String,
20    #[serde(default, skip_serializing_if = "Option::is_none")]
21    pub key_id: Option<String>,
22    pub value: String,
23}
24
25pub fn default_platform() -> String {
26    let os = if cfg!(target_os = "windows") {
27        "windows"
28    } else if cfg!(target_os = "macos") {
29        "darwin"
30    } else if cfg!(target_os = "linux") {
31        "linux"
32    } else {
33        std::env::consts::OS
34    };
35
36    let arch = if cfg!(target_arch = "x86_64") {
37        "x86_64"
38    } else if cfg!(target_arch = "aarch64") {
39        "aarch64"
40    } else {
41        std::env::consts::ARCH
42    };
43
44    format!("{os}-{arch}")
45}
46
47fn default_signature_algorithm() -> String {
48    MANIFEST_SIGNATURE_ALGORITHM.to_string()
49}