unity_hub/unity/hub/
module.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Deserialize, Serialize)]
4#[serde(rename_all = "camelCase")]
5pub struct Module {
6 #[serde(flatten)]
7 pub base: uvm_live_platform::Module,
8 #[serde(default)]
9 pub is_installed: bool,
10 #[serde(flatten)]
11 module_backwards_compatible: ModuleBackwardsCompatible,
12}
13
14impl Module {
15 pub fn id(&self) -> &str {
16 &self.base.id()
17 }
18}
19
20#[derive(Debug, Deserialize, Serialize)]
21#[serde(rename_all = "camelCase")]
22pub struct ModuleBackwardsCompatible {
23 #[serde(default)]
24 rename_from: String,
25 #[serde(default)]
26 rename_to: String,
27 #[serde(default)]
28 sync: String,
29 #[serde(default)]
30 parent: String,
31 #[serde(default)]
32 visible: bool,
33 #[serde(default)]
34 preselected: bool,
35 #[serde(default)]
36 eula_url_1: String,
37 #[serde(default)]
38 eula_label_1: String,
39 #[serde(default)]
40 eula_message: String,
41}
42
43impl From<&uvm_live_platform::Module> for ModuleBackwardsCompatible {
44 fn from(value: &uvm_live_platform::Module) -> Self {
45 let (rename_from, rename_to) = value
46 .extracted_path_rename().as_ref()
47 .map(|e| {
48 (
49 e.from.to_path_buf().display().to_string(),
50 e.to.to_path_buf().display().to_string(),
51 )
52 })
53 .unwrap_or(("".to_string(), "".to_string()));
54 let visible = !value.hidden();
55 let preselected = value.pre_selected();
56
57 let (eula_url_1, eula_label_1, eula_message) = value.eula().first().map(|eula| {
58 (eula.release_file.url.to_owned(), eula.label.to_owned(), eula.message.to_owned())
59 }).unwrap_or(("".to_string(), "".to_string(), "".to_string()));
60
61
62 Self {
63 rename_from,
64 rename_to,
65 visible,
66 preselected,
67 sync: "".to_string(),
68 parent: "".to_string(),
69 eula_url_1,
70 eula_label_1,
71 eula_message,
72 }
73 }
74}
75
76impl From<uvm_live_platform::Module> for Module {
77 fn from(mut value: uvm_live_platform::Module) -> Self {
78 value.download_size.as_bytes_representation();
79 value.installed_size.as_bytes_representation();
80 let module_backwards_compatible = ModuleBackwardsCompatible::from(&value);
81 Self {
82 base: value,
83 is_installed: false,
84 module_backwards_compatible
85 }
86 }
87}