public static IConfiguartion Read(SetRecord set) { if (set == null) { throw new ArgumentNullException(nameof(set)); } RecordBase record; SetRecord setIncludeItems = null; SetRecord setGlobalExcludes = null; ListRecord setScanDirectories = null; if (set.TryGetValue("scan", out record)) { setScanDirectories = record as ListRecord; } if (set.TryGetValue("include", out record)) { setIncludeItems = record as SetRecord; } if (set.TryGetValue("exclude", out record)) { setGlobalExcludes = record as SetRecord; } ItemIncludeOptions resultInclude = ReadItemIncludeOptions(setIncludeItems); ScanFilterOptions resultExclude = null; if (setGlobalExcludes == null) { resultExclude = ScanFilterOptions.CreateExcludeDefault(); } else { resultExclude = ReadFilterOptions(setGlobalExcludes); } List <DirectoryScanOptions> resultScanDirectories = new List <DirectoryScanOptions>(); if (setScanDirectories != null) { foreach (RecordBase scanOptions in setScanDirectories) { if (scanOptions is SetRecord setScanOptions) { resultScanDirectories.Add(ReadDirectoryScanOptions(resultExclude, setScanOptions)); } } } return(new Configuration(resultExclude, resultInclude, resultScanDirectories)); }
internal Configuration(ScanFilterOptions globalExclude, ItemIncludeOptions includeItems, List <DirectoryScanOptions> scanDirectories) { if (globalExclude == null) { throw new ArgumentNullException(nameof(globalExclude)); } if (includeItems == null) { throw new ArgumentNullException(nameof(includeItems)); } if (scanDirectories == null) { throw new ArgumentNullException(nameof(scanDirectories)); } GlobalExcludes = globalExclude; IncludeItems = includeItems; ScanDirectories = scanDirectories; }