applyFilters method

Future<PackageMap> applyFilters(
  1. PackageFilters? filters
)

Detect packages in the workspace with the provided filters.

This is the default packages behaviour when a workspace is loaded.

Implementation

Future<PackageMap> applyFilters(PackageFilters? filters) async {
  if (filters == null) return this;

  var packageList = await values
      .applyIgnore(filters.ignore)
      .applyDirExists(filters.dirExists)
      .applyFileExists(filters.fileExists)
      .filterPrivatePackages(include: filters.includePrivatePackages)
      .applyScope(filters.scope)
      .applyDependsOn(filters.dependsOn)
      .applyNoDependsOn(filters.noDependsOn)
      .filterNullSafe(nullSafe: filters.nullSafe)
      .filterPublishedPackages(published: filters.published);

  final diff = filters.diff;
  if (diff != null) {
    packageList = await packageList.applyDiff(diff, _logger);
  }

  packageList = packageList.applyIncludeDependentsOrDependencies(
    includeDependents: filters.includeDependents,
    includeDependencies: filters.includeDependencies,
  );

  return PackageMap(
    {
      for (final package in packageList) package.name: package,
    },
    _logger,
  );
}