findPackagePath static method

Future<String> findPackagePath()

Implementation

static Future<String> findPackagePath() async {
  final packageConfigFile =
      File(path.join('.dart_tool', 'package_config.json').fixPath);
  if (!packageConfigFile.existsSync()) {
    throw CopierException("`${packageConfigFile.path}` not found.");
  }

  final packageConfigContent =
      jsonDecode(await packageConfigFile.readAsString());
  final packages = packageConfigContent['packages'] as List;
  final package = packages.firstWhere((pkg) => pkg['name'] == 'fontresoft',
      orElse: () => null);

  if (package == null) {
    throw Exception("Package fontresoft not found in package_config.json.");
  }

  final rootUri = package['rootUri'] as String;
  final packageConfigDir = packageConfigFile.parent.path;
  print(packageConfigDir);
  final resolvedRootUri = rootUri.contains('file:///')
      ? Uri.parse(rootUri).toFilePath(windows: Platform.isWindows).fixPath
      : path.normalize(path.join(packageConfigDir, rootUri)).fixPath;

  return resolvedRootUri;
}