async Task IActionProvider.ProcessDeltaCommandsAsync( bool doNotProcessIfDataLoss, CommandCollection commands, CancellationToken ct) { var commandGroups = commands .AllCommands .GroupBy(c => c.ScriptPath); foreach (var group in commandGroups) { var fullPath = Path.Combine(_folderPath, $"{group.Key}.kql"); var builder = new StringBuilder(); foreach (var command in group) { var script = command.ToScript(); builder.Append(script); builder.AppendLine(); builder.AppendLine(); } await _fileGateway.SetFileContentAsync(fullPath, builder.ToString(), ct); } }
async Task IActionProvider.ProcessDeltaCommandsAsync( bool doNotProcessIfDataLoss, CommandCollection commands, CancellationToken ct) { var builder = new StringBuilder(); foreach (var group in commands.CommandGroups) { builder.Append("// "); builder.Append(group.HeaderComment); builder.AppendLine(); builder.AppendLine(); foreach (var command in group.Commands) { var script = command.ToScript(); builder.Append(script); builder.AppendLine(); builder.AppendLine(); } } await _fileGateway.SetFileContentAsync( _filePath, builder.ToString(), ct); }
async Task IActionProvider.ProcessDeltaCommandsAsync( bool doNotProcessIfDataLoss, CommandCollection commands, CancellationToken ct) { using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) using (var csvWriter = new CsvWriter(writer, CultureInfo.InvariantCulture)) { csvWriter.WriteHeader <CommandRow>(); csvWriter.NextRecord(); foreach (var group in commands.CommandGroups) { foreach (var command in group.Commands) { var row = new CommandRow { Command = command.CommandFriendlyName, ScriptPath = command.ScriptPath, Script = command.ToScript() }; csvWriter.WriteRecord(row); } } csvWriter.Flush(); writer.Flush(); stream.Flush(); var csvContent = ASCIIEncoding.UTF8.GetString(stream.ToArray()); await _fileGateway.SetFileContentAsync( _filePath, csvContent, ct); } }