Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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());
        }