flatpak_rs/
architecture.rs1use serde::{Deserialize, Deserializer, Serializer};
2
3pub const I386: &str = "i386";
4pub const X86: &str = "x86_64";
5pub const AARCH64: &str = "aarch64";
6pub const ARM: &str = "arm";
7pub const ARMEB: &str = "armeb";
8pub const MIPSEL: &str = "mipsel";
9pub const MIPS64EL: &str = "mips64el";
10
11#[derive(Clone)]
12#[derive(Deserialize)]
13#[derive(Debug)]
14#[derive(Hash)]
15#[derive(PartialEq)]
16pub enum FlatpakArchitecture {
20 I386,
21 X86,
22 AARCH64,
23 ARM,
24 ARMEB,
26 MIPSEL,
28 MIPS64EL,
30}
31
32impl Default for FlatpakArchitecture {
33 fn default() -> Self {
34 FlatpakArchitecture::X86
35 }
36}
37impl FlatpakArchitecture {
38 pub fn to_string(&self) -> String {
39 match &self {
40 FlatpakArchitecture::X86 => X86.to_string(),
41 FlatpakArchitecture::I386 => I386.to_string(),
42 FlatpakArchitecture::AARCH64 => AARCH64.to_string(),
43 FlatpakArchitecture::ARM => ARM.to_string(),
44 FlatpakArchitecture::ARMEB => ARMEB.to_string(),
45 FlatpakArchitecture::MIPSEL => MIPSEL.to_string(),
46 FlatpakArchitecture::MIPS64EL => MIPS64EL.to_string(),
47 }
48 }
49
50 pub fn from_string(arch: &str) -> Result<FlatpakArchitecture, String> {
51 if arch == X86 {
52 return Ok(FlatpakArchitecture::X86);
53 }
54 if arch == I386 {
55 return Ok(FlatpakArchitecture::I386);
56 }
57 if arch == AARCH64 {
58 return Ok(FlatpakArchitecture::AARCH64);
59 }
60 if arch == ARM {
61 return Ok(FlatpakArchitecture::ARM);
62 }
63 if arch == ARMEB {
64 return Ok(FlatpakArchitecture::ARMEB);
65 }
66 if arch == MIPSEL {
67 return Ok(FlatpakArchitecture::MIPSEL);
68 }
69 if arch == MIPS64EL {
70 return Ok(FlatpakArchitecture::MIPS64EL);
71 }
72 Err(format!("Invalid architecture {}.", arch))
73 }
74}