linkClangd function

void linkClangd(
  1. String pluginName, {
  2. List<ModuleInfo>? moduleInfos,
  3. String baseDir = '.',
})

Implementation

void linkClangd(
  String pluginName, {
  List<ModuleInfo>? moduleInfos,
  String baseDir = '.',
}) {
  final sb = StringBuffer()
    ..writeln('CompileFlags:')
    ..writeln('  Add:')
    ..writeln('    - -I\${PWD}/src')
    ..writeln('    - -I\${PWD}/lib/src/generated/cpp')
    ..writeln('    - -I\${PWD}/../packages/nitro/src/native');

  // For C++ modules also expose the test/ directory so IDEs resolve mock headers
  if (moduleInfos != null && moduleInfos.any((m) => m.isCpp)) {
    sb.writeln('    - -I\${PWD}/lib/src/generated/cpp/test');
  }
  File(p.join(baseDir, '.clangd')).writeAsStringSync(sb.toString());
}