public ICollection<CollectorItem> DiscoverLocalFiles(List<string> wkspcePaths) { var projects = ALProjectCollector.Discover(wkspcePaths); var srcDirs = projects.Select(s => Directory.GetParent(s.FilePath).FullName).ToArray(); var result = new List<CollectorItem>().AsQueryable(); foreach (var project in projects) { var path = Directory.GetParent(project.FilePath).FullName; var localSymbols = Directory .GetDirectories(path) .SelectMany(s => Directory.GetFiles(s, "*.al", SearchOption.AllDirectories)) .SelectMany(item => { var collectorItems = new List<CollectorItem>(); var alobjects = ALParser.Read(item); foreach (var alobject in alobjects) { collectorItems.Add(new CollectorItem { TypeId = alobject.Type, Id = alobject.Id, Type = $"{alobject.Type}", Publisher = project.publisher, //Version = project.version //Symbol = item, FsPath = item, Name = alobject.Name, Application = project.name, CanExecute = (new string[] { "Table", "Page", "PageExtension", "TableExtension", "PageCustomization", "Report" }).Contains($"{alobject.Type}"), CanDesign = (new string[] { "Table", "Page" }).Contains($"{alobject.Type}"), CanCreatePage = (new string[] { "Table", "TableExtension" }).Contains($"{alobject.Type}"), EventName = "not_an_event", IsEvent = false, SymbolData = new SymbolData { Index = alobject.Id, Path = item, Type = alobject.Type } }); } return collectorItems; }); result = result.Concat(localSymbols); } return result.ToList(); }
public static IEnumerable <ALProject> Discover(List <string> wkspcePaths) { var paths = ALProjectCollector.GetProjectInfo(wkspcePaths).Select(s => s.FullName); var projects = paths.Select(s => { var fileContent = File.ReadAllText(s); var result = JsonConvert.DeserializeObject <ALProject>(fileContent); result.FilePath = s; return(result); }); return(projects.ToList()); }