perform method

  1. @override
DepsUnusedResults perform()
override

Resolves O after execution.

Throws a PubspecNotFoundError when pubspec.yaml was not found. Throws a PubspecNotValidError when pubspec.yaml contents were invalid.

Implementation

@override
DepsUnusedResults perform() {
  final yamlFile = YamlFileFinder.from(params.path);
  final yamlMap = YamlMapLoader.from(yamlFile);

  final declaredInMain = yamlMap
      .packages(DependencyType.mainDependencies)
      .difference(params.mainIgnores);

  final declaredInDev = yamlMap
      .packages(DependencyType.devDependencies)
      .difference(params.devIgnores);

  final results = DepsUnusedResults(
    mainDependencies: _unusedPackages(
      DependencyType.mainDependencies,
      declaredInMain,
    ),
    devDependencies: {
      ..._unusedPackages(
        DependencyType.devDependencies,
        declaredInDev,
      ),
      // if any declared dev dep exists in main, mark it for removal from dev.
      ...declaredInMain.intersection(declaredInDev),
    },
  );

  if (!results.isEmpty && params.fix) {
    DepsCleaner.clean(
      yamlFile,
      mainDependencies: results.mainDependencies,
      devDependencies: results.devDependencies,
    );
  }

  return results;
}