Vine/Server/Notification/
RegisterScmResourceGroup.rs1use serde_json::{Value, json};
12
13use crate::{Host::VineHost, dev_log};
14
15pub async fn RegisterScmResourceGroup(Host:&dyn VineHost, Parameter:&Value) {
16 let ScmHandle = Parameter
17 .get("scmHandle")
18 .or_else(|| Parameter.get("scm_handle"))
19 .and_then(Value::as_u64)
20 .unwrap_or(0) as u32;
21
22 let GroupHandleStr = Parameter
23 .get("groupHandle")
24 .or_else(|| Parameter.get("group_handle"))
25 .and_then(Value::as_str)
26 .unwrap_or("")
27 .to_string();
28
29 let GroupId = Parameter
30 .get("groupId")
31 .or_else(|| Parameter.get("group_id"))
32 .and_then(Value::as_str)
33 .unwrap_or("")
34 .to_string();
35
36 let Label = Parameter.get("label").and_then(Value::as_str).unwrap_or(&GroupId).to_string();
37
38 if GroupId.is_empty() {
39 dev_log!("provider-register", "[ProviderRegister] scm-group skip: missing group_id");
40
41 return;
42 }
43
44 let GroupData = json!({
46 "providerHandle": ScmHandle,
47 "groupId": &GroupId,
48 "label": &Label,
49 "resourceStates": [],
50 });
51
52 Host.UpdateSourceControlGroup(ScmHandle, GroupData).await;
54
55 Host.EmitToRenderer(
57 "sky://scm/registerGroup",
58 json!({
59 "scmHandle": ScmHandle,
60 "groupHandle": &GroupHandleStr,
61 "groupId": &GroupId,
62 "label": &Label,
63 }),
64 );
65
66 dev_log!(
67 "grpc",
68 "[Scm] register group scm_handle={} group_id={} label={}",
69 ScmHandle,
70 GroupId,
71 Label
72 );
73}