loadLockedDependencies static method

Future<List<LockedDependency>> loadLockedDependencies(
  1. ProjectContext context
)

Implementation

static Future<List<LockedDependency>> loadLockedDependencies(
  ProjectContext context,
) async {
  final lockFile = context.pubspecLock;

  if (!await lockFile.exists()) {
    return [];
  }

  final dynamic document;
  try {
    document = loadYaml(await lockFile.readAsString());
  } catch (_) {
    return [];
  }

  if (document is! YamlMap) {
    return [];
  }

  final packages = document['packages'];

  if (packages is! YamlMap) {
    return [];
  }

  final result = <LockedDependency>[];

  for (final entry in packages.entries) {
    final name = entry.key.toString();
    final details = entry.value;

    if (details is! YamlMap) {
      continue;
    }

    final version = details['version'];
    final source = details['source'];
    final dependencyType = details['dependency'];

    if (version is! String ||
        source is! String ||
        dependencyType is! String) {
      continue;
    }

    result.add(
      LockedDependency(
        name: name,
        version: version,
        source: source,
        dependencyType: dependencyType,
      ),
    );
  }

  return result;
}