public void PopulateDependencies(FzServiceDirectory serviceDirectory, FzFileCache fileCache) { // For each route-builder... // 1.Find referenced sub-components // 2.Add referenced sub-components to the starting component // 3.Recurseivly for each sub-component, start again from #1 var flatFileCache = GetFlatFileCache(fileCache); var cursorLeft = Console.CursorLeft; var cursorTop = Console.CursorTop; var currentJob = 1; var totalJobs = serviceDirectory.Services.Count; _deadline = DateTime.Now.AddMinutes(2); foreach (var service in serviceDirectory.Services) { // TODO: REMOVE THIS FOR FINAL VERSION if (!service.File.FileName.Contains("PrepareForIdCards")) { continue; } Console.SetCursorPosition(cursorLeft, cursorTop); Console.WriteLine($"Working on {currentJob} of {totalJobs} ({service.Name})..."); currentJob++; FindSubComponentsOfComponent(service, flatFileCache); } }
public FzServiceDirectory GetAllServices(FzFileCache fileCache) { var serviceDirectory = new FzServiceDirectory(); PopulateRouteBuilders(serviceDirectory, fileCache.BaseDirectory); return(serviceDirectory); }
public void WriteSummary(FzServiceDirectory serviceDirectory) { var outputText = new StringBuilder(); foreach (var service in serviceDirectory.Services) { AppendGivenComponent(service, outputText); outputText.Append("\r\n\r\n"); } // Write output to file if (File.Exists(_summaryOutputPath)) { File.Delete(_summaryOutputPath); } File.WriteAllText(_summaryOutputPath, outputText.ToString()); }
public static void FindAllComponents(FzServiceDirectory serviceDirectory, FzFileCache fileCache) { var taskList = new List <Task>(); var serviceComponentList = new List <FzServiceComponent>(); // Setup each service component foreach (var serviceComponent in serviceDirectory.Services) { var newServiceComponent = new FzServiceComponent { File = serviceComponent.File, Name = serviceComponent.Name, OutboundUrl = serviceComponent.OutboundUrl, PreviousReferencedComponent = serviceComponent.PreviousReferencedComponent, SubComponents = new List <FzServiceComponent>() }; serviceComponentList.Add(newServiceComponent); } // Find each service component as a task foreach (var serviceComponent in serviceComponentList) { taskList.Add(Task.Run(() => FindSubComponentsOfComponent(serviceComponent, fileCache))); } // Await for each service to finish foreach (var runningTask in taskList) { runningTask.GetAwaiter().GetResult(); } // Populate all finished service components back into the service directory foreach (var serviceDirectoryServiceComponent in serviceDirectory.Services) { foreach (var serviceComponent in serviceComponentList) { if (serviceDirectoryServiceComponent.Name.Equals(serviceComponent.Name)) { serviceDirectoryServiceComponent.SubComponents.AddRange(serviceComponent.SubComponents); } } } }
private void PopulateRouteBuilders(FzServiceDirectory serviceDirectory, FzDirectory directory) { foreach (var file in directory.Files) { if (file.FileType == FzFileType.RouteBuilder) { var newService = new FzService(); newService.File = file; newService.Name = file.FileName; newService.RouteBuilderFileContent = file.Content; newService.RouteBuilderFilePath = file.FullPath; serviceDirectory.Services.Add(newService); } } foreach (var subDirectory in directory.SubDirectories) { PopulateRouteBuilders(serviceDirectory, subDirectory); } }