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.Tasks; namespace Ips.DetAlgorithm { public static class DetIbsUtil { static readonly string CliFile = Path.Combine(IpsPath.CliRootDir, "detibs", "detibs.exe"); public static async Task> Get(string filename, int start = 0, int timeout = 60, CancellationToken token = default) { var cli = Cli.Wrap(CliFile) .WithArguments(args => { args.Add(filename); args.Add("-s").Add(start); }); var res = await cli.ExecuteBufferedAsync(token.LinkTimeout(timeout)); var result = new IbcResult(res.StandardOutput); return ExeResult.Create(result, cli.Arguments, res.StartTime, res.ExitTime, res.ExitCode, res.StandardError); } public static async Task> GetOne(string filename, int start = 0, int timeout = 60, CancellationToken token = default) { var res = await Get(filename, start, timeout, token); var item = res.Result.Items?.FirstOrDefault(m => m.IbsId != -1) ?? new IbsIdResult(); return ExeResult.Create(item, res.Arguments, res.StartTime, res.ExitTime, res.ExitCode, res.ExitMsg); } } }