Esempio n. 1
0
        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");
        }
Esempio n. 2
0
        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);
        }