getAllPackageVersionsForPackageInCache static method

Map<Version, String> getAllPackageVersionsForPackageInCache(
  1. String packageName
)

Implementation

static Map<Version, String> getAllPackageVersionsForPackageInCache(
    String packageName) {
  final cacheDir = pubCacheDir;
  final hostedDir = path.join(cacheDir, 'hosted');

  final versions = <Version, String>{};

  final repositoryDirs =
      Directory(hostedDir).listSync().whereType<Directory>().toList();

  for (final repositoryDir in repositoryDirs) {
    for (final potentialPackageDir
        in repositoryDir.listSync().whereType<Directory>()) {
      final packageDirName = path.basename(potentialPackageDir.path);

      if (!packageDirName.startsWith('$packageName-')) {
        continue;
      }

      final versionPart = packageDirName.substring(packageName.length + 1);

      final version = Version.parse(versionPart);
      versions[version] = potentialPackageDir.path;
    }
  }
  return versions;
}