createSharedHeaders function

void createSharedHeaders(
  1. String nitroNativePath, {
  2. String baseDir = '.',
})

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));
}