From 6dedba9e3cedf6463f25460eba84111d6a0bd0dd Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Fri, 9 Jan 2026 23:48:17 +0800 Subject: Add command line wrapper for JVCS operations --- CommandLineWrapper/JVCSCommandInvoker.cs | 41 ++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 CommandLineWrapper/JVCSCommandInvoker.cs (limited to 'CommandLineWrapper/JVCSCommandInvoker.cs') diff --git a/CommandLineWrapper/JVCSCommandInvoker.cs b/CommandLineWrapper/JVCSCommandInvoker.cs new file mode 100644 index 0000000..56d67ca --- /dev/null +++ b/CommandLineWrapper/JVCSCommandInvoker.cs @@ -0,0 +1,41 @@ +using System.Diagnostics; +using CommandLineWrapper; + +public static class JVCSCommandInvoker +{ + // Structure to hold the result of a command invocation + public struct InvokeResult + { + public int ExitCode { get; set; } + public string StandardOutput { get; set; } + } + + // Invokes a command-line process with the given arguments and optional working directory + public static async Task Invoke(string[] args, string? workingDirectory = null) + { + var startInfo = new ProcessStartInfo + { + FileName = Constants.CommandLinePath.FullName, + Arguments = string.Join(" ", args), + RedirectStandardOutput = true, + UseShellExecute = false, + CreateNoWindow = true + }; + + if (!string.IsNullOrEmpty(workingDirectory)) + startInfo.WorkingDirectory = workingDirectory; + + using (var process = new Process { StartInfo = startInfo }) + { + process.Start(); + string output = await process.StandardOutput.ReadToEndAsync(); + await process.WaitForExitAsync(); + + return new InvokeResult + { + ExitCode = process.ExitCode, + StandardOutput = output.Trim() + }; + } + } +} -- cgit