// ReSharper disable ClassNeverInstantiated.Global // ReSharper disable InvertIf namespace TeamCity.CSharpInteractive; internal class CommandsRunner : ICommandsRunner { private readonly ICommandRunner[] _commandRunners; private readonly IStatistics _statistics; public CommandsRunner( ICommandRunner[] commandRunners, IStatistics statistics) { _commandRunners = commandRunners; _statistics = statistics; } public IEnumerable Run(IEnumerable commands) { using (_statistics.Start()) { foreach (var command in commands) { var processed = false; foreach (var runner in _commandRunners) { var result = runner.TryRun(command); if (result.Success.HasValue) { processed = true; yield return result; break; } } if (!processed) { yield return new CommandResult(command, default); } } } } }