DevelopmentNodeEnvironment_MicrosoftVSCodeDependency_22NodeVersion_Bundle_Clean_Debug_ElectronProfile_EsbuildCompiler_Mountain/IPC/WindServiceHandlers/Git/
HandleCheckout.rs1use serde_json::Value;
6
7use crate::IPC::WindServiceHandlers::{
8 Git::Shared::RunGit::Fn as RunGit,
9 Utilities::JsonValueHelpers::{arg_bool, arg_string},
10};
11
12pub async fn Fn(Arguments:Vec<Value>) -> Result<Value, String> {
13 let OperationId = arg_string(&Arguments, 0);
14
15 let RepoPath = arg_string(&Arguments, 1);
16
17 let Treeish = arg_string(&Arguments, 2);
18
19 let Detached = arg_bool(&Arguments, 3);
20
21 if RepoPath.is_empty() || Treeish.is_empty() {
22 return Err("git:checkout requires repoPath and treeish".to_string());
23 }
24
25 let Argv:Vec<String> = if Detached {
26 vec!["checkout".to_string(), "--detach".to_string(), Treeish]
27 } else {
28 vec!["checkout".to_string(), Treeish]
29 };
30
31 let (ExitCode, _, Stderr) = RunGit(&OperationId, &Argv, Some(&RepoPath)).await?;
32
33 if ExitCode != 0 {
34 return Err(format!("git checkout failed: {}", Stderr));
35 }
36
37 Ok(Value::Null)
38}