onlyHaveDependenciesFromFolders static method

Validation<DartLibrary> onlyHaveDependenciesFromFolders(
  1. List<String> folders
)

Implementation

static Validation<DartLibrary> onlyHaveDependenciesFromFolders(
  List<String> folders,
) {
  return Validation(
    (lib, package, addViolation) {
      final invalidDependencies = lib.dependencies.where((dep) {
        final isFromOtherPackage = dep.targetPackage != package.name;
        if (isFromOtherPackage) {
          return false;
        }
        final depFolders = dep.targetLibrary.split('/')..removeLast();
        return !folders.any((folder) => depFolders.contains(folder));
      });
      if (invalidDependencies.isNotEmpty) {
        addViolation(
          'Can only have dependencies from folders $folders.\n' +
              _buildInvalidImports(invalidDependencies),
        );
      }
    },
    description: 'only have dependencies from folders $folders',
  );
}