resolveNitroNativePath function
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')));
}