def ShowRequirementList(log: Log, basicConfig: BasicConfig, topLevelPackage: Package, requestedFiles: Optional[List[str]], showFeaturesOnly: bool = False) -> None: message = "Requirements" if not showFeaturesOnly else "Features" filterName = None if not showFeaturesOnly else PackageRequirementTypeString.Feature # As the packages in requestedFiles might have been filtered at this point (and any issues already caught), we just ignore not found requestedPackages = PackageUtil.GetPackageListFromFilenames( topLevelPackage, requestedFiles, True) requirements = RequirementFilter.GetRequirementList( topLevelPackage, requestedPackages, filterName) if len(requirements) <= 0: log.DoPrint("{0}: None".format(message)) return log.DoPrint("{0}:".format(message)) rootNode = RequirementTree(requirements).RootNode strAddIndent = " " # We only show the type group info when there is more than one #showTypeGroup = len(rootNode.Children) > 1 baseIndent = "" #strAddIndent if len(rootNode.Children) > 1 else "" sortedFeatures = list(rootNode.Children) sortedFeatures.sort( key=lambda s: None if s.Content is None else s.Content.Id) for sortedFeature in sortedFeatures: __PrintRequirementsNode(log, sortedFeature, baseIndent, strAddIndent)
def ShowExtensionList(log: Log, topLevelPackage: Package, requestedFiles: Optional[List[str]]) -> None: # As the packages in requestedFiles might have been filtered at this point (and any issues already caught), we just ignore not found requestedPackages = PackageUtil.GetPackageListFromFilenames( topLevelPackage, requestedFiles, True) requirements = RequirementFilter.GetRequirementList( topLevelPackage, requestedPackages, PackageRequirementTypeString.Extension) if len(requirements) <= 0: log.DoPrint("Extensions: None") return log.DoPrint("Extensions:") # Pretty print useful information in name sorted order requirements.sort(key=lambda s: s.Id) currentIndent = " " for requirement in requirements: strFormat = "{0}- '{1}'" if len(requirement.Version) > 0: strFormat += " V{2}" if len(requirement.Extends) > 0: strFormat += " extends '{3}'" strFormat += " (introduced by package: {4})" log.DoPrint( strFormat.format(currentIndent, requirement.Name, requirement.Version, requirement.Extends, ", ".join(requirement.IntroducedByPackages)))
def __Filter(log: Log, sourcePackageBuildOrder: List[PreResolvePackageResult], packageManagerFilter: PackageManagerFilter) -> List[PreResolvePackageResult]: log.LogPrint("- Filtering") log.PushIndent() try: #topLevelPackage = PackageListUtil.GetTopLevelPackage(sourcePackageBuildOrder) requestedPackages = PreResolvePackageResultUtil.TryGetPackageListFromFilenames(sourcePackageBuildOrder, packageManagerFilter.RequestedFiles, False) # Remove all packages that were not imported because of a user requirement sourcePackageBuildOrder = PackageManager.__FilterNotUserRequested(log, sourcePackageBuildOrder, requestedPackages) if not packageManagerFilter.PackageFilters.ContainsFilters(): return sourcePackageBuildOrder #requirements = RequirementFilter.GetRequirementList(topLevelPackage, None) requirements = RequirementFilter.GetRequirementListFromPackages(sourcePackageBuildOrder) return PackageFilter.Filter2(log, sourcePackageBuildOrder, requirements, requestedPackages, packageManagerFilter.PackageFilters) finally: log.PopIndent()