// ReSharper disable ClassNeverInstantiated.Global namespace TeamCity.CSharpInteractive; internal class SettingCommandRunner : ICommandRunner where TOption: struct, Enum { private readonly ILog> _log; private readonly ISettingSetter _settingSetter; public SettingCommandRunner( ILog> log, ISettingSetter settingSetter) { _log = log; _settingSetter = settingSetter; } public CommandResult TryRun(ICommand command) { if (command is not SettingCommand settingCommand) { return new CommandResult(command, default); } var previousValue = _settingSetter.SetSetting(settingCommand.Value); _log.Trace(() => { return new[] {new Text($"Change the {typeof(TOption).Name} from {previousValue} to {settingCommand.Value}.")}; }); return new CommandResult(command, true); } }