resolveNitroNativePath function

String resolveNitroNativePath(
  1. String pluginDir
)

Resolves the absolute path to the installed nitro package's src/native directory by reading .dart_tool/package_config.json inside pluginDir.

Implementation

String resolveNitroNativePath(String pluginDir) {
  final configFile = File(p.join(pluginDir, '.dart_tool', 'package_config.json'));
  if (configFile.existsSync()) {
    try {
      final config = jsonDecode(configFile.readAsStringSync()) as Map<String, dynamic>;
      final packages = (config['packages'] as List<dynamic>?) ?? [];
      for (final pkg in packages) {
        final pkgMap = pkg as Map<String, dynamic>;
        if (pkgMap['name'] == 'nitro') {
          final rootUri = pkgMap['rootUri'] as String;
          final uri = Uri.parse(rootUri);
          if (uri.scheme == 'file') {
            return p.join(uri.toFilePath(), 'src', 'native');
          } else {
            final dartToolDir = p.join(pluginDir, '.dart_tool');
            final resolved = p.normalize(p.join(dartToolDir, rootUri));
            return p.join(resolved, 'src', 'native');
          }
        }
      }
    } catch (_) {}
  }
  return p.normalize(p.absolute(p.join(pluginDir, '..', 'packages', 'nitro', 'src', 'native')));
}