createSharedHeaders function
void
createSharedHeaders(
Implementation
void createSharedHeaders(String nitroNativePath, {String baseDir = '.'}) {
Directory(p.join(baseDir, 'src')).createSync(recursive: true);
final srcFile = File(p.join(nitroNativePath, 'nitro.h'));
// If the source nitro.h is missing the required macros, update it first.
if (srcFile.existsSync()) {
final current = srcFile.readAsStringSync();
if (!current.contains('NITRO_EXPORT')) {
srcFile.writeAsStringSync(nitroHContent);
}
} else {
// If it doesn't exist in the nitro package at all, create it.
try {
srcFile.createSync(recursive: true);
srcFile.writeAsStringSync(nitroHContent);
} catch (_) {
// Might not have write access to pub-cache; that's fine, we'll write to the local project.
}
}
// Always write the correct content to the local project directories.
File(p.join(baseDir, 'src', 'nitro.h')).writeAsStringSync(nitroHContent);
if (Directory(p.join(baseDir, 'ios', 'Classes')).existsSync()) {
File(p.join(baseDir, 'ios', 'Classes', 'nitro.h')).writeAsStringSync(nitroHContent);
}
if (Directory(p.join(baseDir, 'macos', 'Classes')).existsSync()) {
File(p.join(baseDir, 'macos', 'Classes', 'nitro.h')).writeAsStringSync(nitroHContent);
}
File(p.join(baseDir, 'src', 'dart_api_dl.c')).writeAsStringSync(dartApiDlForwarderContent(nitroNativePath));
}