Mountain/IPC/WindServiceHandlers/Git/
HandleRevListCount.rs1#![allow(non_snake_case)]
2
3use serde_json::{Value, json};
9
10use crate::IPC::WindServiceHandlers::Git::Shared::{Generated, RunGit};
11
12pub async fn HandleRevListCount(Arguments:Vec<Value>) -> Result<Value, String> {
13 let RepoPath = Arguments.first().and_then(Value::as_str).unwrap_or("").to_string();
14
15 let FromRef = Arguments.get(1).and_then(Value::as_str).unwrap_or("").to_string();
16
17 let ToRef = Arguments.get(2).and_then(Value::as_str).unwrap_or("").to_string();
18
19 if RepoPath.is_empty() || FromRef.is_empty() || ToRef.is_empty() {
20 return Err("git:revListCount requires repoPath, fromRef, toRef".to_string());
21 }
22
23 let Range = format!("{}..{}", FromRef, ToRef);
24
25 let (ExitCode, Stdout, Stderr) = RunGit(
26 &Generated(),
27 &["rev-list".to_string(), "--count".to_string(), Range],
28 Some(&RepoPath),
29 )
30 .await?;
31
32 if ExitCode != 0 {
33 return Err(format!("git rev-list failed: {}", Stderr));
34 }
35
36 Ok(json!(Stdout.trim().parse::<u64>().unwrap_or(0)))
37}