using CliWrap; using CliWrap.Buffered; using Ips.Library.Basic; using Ips.Library.Entity; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace Ips.Ddc { public static class DdcUtil { static readonly string CliFile = Path.Combine(IpsPath.CliRootDir, "ddc", "ddc.exe"); public static async Task> ExecAsync(string fileIn, long fs, string outDir, IEnumerable items, bool real = false, bool useGpu = false, CancellationToken token = default) { var ddcItems = string.Join(" ", items); var cli = Cli.Wrap(CliFile) .WithArguments(args => { args.Add(fileIn, true); args.Add(fs); args.Add(outDir); args.Add("--items").Add(ddcItems, false); if(real) { args.Add("--real"); } if (useGpu) { args.Add("--gpu"); } }); var res = await cli.ExecuteBufferedAsync(token); return ExeResult.Create(res.StandardOutput, cli.Arguments, res.StartTime, res.ExitTime, res.ExitCode, res.StandardError); } } }