private async Task UpdateFSTab(HashSet <FSTabRecord> oldRecords, HashSet <FSTabRecord> newRecords) { var newContent = new StringBuilder(); var oldContent = await File.ReadAllLinesAsync(fsTabFilename); int added = newRecords.Count; int removed = 0; foreach (var line in oldContent) { if (line.StartsWith(commentStart) || !FSTabRecord.TryParse(line, out var rec) || oldRecords.Contains(rec)) { newContent.AppendLine(line); } else { removed++; } } foreach (var rec in newRecords) { newContent.AppendLine(rec.ToString()); } await File.WriteAllTextAsync(fsTabFilename, newContent.ToString()); logger.LogInformation($"Changed {fsTabFilename}, {added} lines added, {removed} lines removed"); }
private async Task <HashSet <FSTabRecord> > ReadFSTab() { var lines = await File.ReadAllLinesAsync(fsTabFilename); var res = new HashSet <FSTabRecord>(); foreach (var line in lines.Where(l => !string.IsNullOrWhiteSpace(l))) { if (!line.StartsWith(commentStart) && FSTabRecord.TryParse(line, out var rec)) { res.Add(rec); } } foreach (var record in res) { logger.LogDebug($"FSTab line: {record}"); } return(res); }