fromElement static method

PackageMeta? fromElement(
  1. LibraryElement libraryElement,
  2. String sdkDir,
  3. ResourceProvider resourceProvider
)

Use this instead of fromDir where possible.

Implementation

static PackageMeta? fromElement(
  LibraryElement libraryElement,
  String sdkDir,
  ResourceProvider resourceProvider,
) {
  if (libraryElement.isInSdk) {
    return PubPackageMeta.fromDir(
      resourceProvider.getFolder(sdkDir),
      resourceProvider,
    );
  }
  final pathContext = resourceProvider.pathContext;
  final sourcePath = pathContext.canonicalize(
    libraryElement.firstFragment.source.fullName,
  );
  final sourceFile = resourceProvider.getFile(sourcePath);

  if (sourceFile.exists) {
    return PubPackageMeta.fromDir(sourceFile.parent, resourceProvider);
  }

  var current = pathContext.dirname(sourcePath);
  while (current.isNotEmpty && current != pathContext.dirname(current)) {
    final folder = resourceProvider.getFolder(current);
    if (folder.exists) {
      return PubPackageMeta.fromDir(folder, resourceProvider);
    }
    current = pathContext.dirname(current);
  }

  return null;
}