applyFilter method

Future<PackageMap> applyFilter(
  1. PackageFilter? filter
)

Detect packages in the workspace with the provided filters.

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

Implementation

Future<PackageMap> applyFilter(PackageFilter? filter) async {
  if (filter == null) return this;

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

  final updatedSince = filter.updatedSince;
  if (updatedSince != null) {
    packageList = await packageList.applySince(updatedSince, _logger);
  }

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

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

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