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));
            }
        }