private void ProcessAnalyzeFolderMessage(AnalyzeFolderMessage message) { if (message == null) { return; } this.initiator = UntypedActor.Context.Sender; this.childActors = new List <IActorRef>(); List <string> packageConfigFiles = this.FindPackageConfigFiles(message.Path); if (!packageConfigFiles.Any()) { Console.WriteLine($"No packages.config files found in folder <{message.Path}>."); this.initiator.Tell(new WorkCompletedMessage()); return; } foreach (string packageConfigPath in packageConfigFiles) { AnalyzePackageConfigMessage configMessage = new AnalyzePackageConfigMessage(packageConfigPath, this.processResultActor); IActorRef actor = UntypedActor.Context.ActorOf(Props.Create <PackageConfigActor>()); this.childActors.Add(actor); actor.Tell(configMessage); } }
private void ProcessAnalyzePackageConfigMessage(AnalyzePackageConfigMessage message) { this.initiator = UntypedActor.Context.Sender; string packageConfigPath = message.PackageConfigPath; if (!File.Exists(packageConfigPath)) { Console.Error.WriteLine($"PackageConfigActor: File {packageConfigPath} not found."); this.initiator.Tell(new PackageConfigProcessedMessage()); return; } string projectPath = Path.GetDirectoryName(packageConfigPath); string solutionPath = Path.GetDirectoryName(projectPath); string projectName = Path.GetFileName(projectPath); XDocument document = XDocument.Load(packageConfigPath); IEnumerable <NugetPackageInfo> packages = from XElement element in document.Descendants() where element.Name == "package" select new NugetPackageInfo( packageConfigPath, solutionPath, projectName, element.Attribute("id")?.Value, element.Attribute("version")?.Value, element.Attribute("targetFramework")?.Value, element.Attribute("developDependency")?.Value); this.childActors = new List <IActorRef>(); foreach (NugetPackageInfo nugetPackageInfo in packages) { IActorRef packageActor = UntypedActor.Context.ActorOf(Props.Create <PackageActor>()); this.childActors.Add(packageActor); packageActor.Tell(new WritePackageMessage(nugetPackageInfo, message.ProcessResultActor)); } }