hdiff_update_core/
manifest.rs1use 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}