Mountain/IPC/WindServiceHandlers/Git/
HandleCancel.rs1#![allow(non_snake_case)]
2
3use serde_json::Value;
10
11use crate::{IPC::WindServiceHandlers::Git::Shared::TakePid, dev_log};
12
13pub async fn HandleCancel(Arguments:Vec<Value>) -> Result<Value, String> {
14 let OperationId = Arguments.first().and_then(Value::as_str).unwrap_or("").to_string();
15
16 if let Some(Pid) = TakePid(&OperationId) {
17 dev_log!("git", "[Git] cancel op={} pid={}", OperationId, Pid);
18
19 #[cfg(unix)]
20 {
21 let _ = std::process::Command::new("kill").args(["-TERM", &Pid.to_string()]).output();
22 }
23
24 #[cfg(windows)]
25 {
26 let _ = std::process::Command::new("taskkill")
27 .args(["/PID", &Pid.to_string(), "/T", "/F"])
28 .output();
29 }
30 } else {
31 dev_log!("git", "[Git] cancel op={} pid=<unknown>", OperationId);
32 }
33
34 Ok(Value::Null)
35}