linkPodspec function

void linkPodspec(
  1. String pluginName,
  2. List<String> moduleLibs, {
  3. String baseDir = '.',
})

Implementation

void linkPodspec(String pluginName, List<String> moduleLibs, {String baseDir = '.'}) {
  final podspecFile = File(p.join(baseDir, 'ios', '$pluginName.podspec'));
  if (!podspecFile.existsSync()) return;
  var content = podspecFile.readAsStringSync();
  bool modified = false;
  if (!content.contains("s.swift_version = '5.9'")) {
    content = content.replaceFirst(RegExp(r"s\.swift_version\s*=\s*'.+?'"), "s.swift_version = '5.9'");
    modified = true;
  }
  if (!content.contains("s.platform = :ios, '13.0'")) {
    content = content.replaceFirst(RegExp(r"s\.platform\s*=\s*:ios,\s*'.+?'"), "s.platform = :ios, '13.0'");
    modified = true;
  }
  if (!content.contains('HEADER_SEARCH_PATHS')) {
    content = content.replaceFirst(
        's.pod_target_xcconfig = {', "s.pod_target_xcconfig = {\n    'HEADER_SEARCH_PATHS' => '\$(inherited) \"\${PODS_ROOT}/../.symlinks/plugins/nitro/src/native\"',");
    modified = true;
  }
  if (!content.contains("'DEFINES_MODULE' => 'YES'")) {
    content = content.replaceFirst('s.pod_target_xcconfig = {', "s.pod_target_xcconfig = {\n    'DEFINES_MODULE' => 'YES',");
    modified = true;
  }
  if (modified) podspecFile.writeAsStringSync(content);
  final nitroNativePath = resolveNitroNativePath(baseDir);
  createSharedHeaders(nitroNativePath, baseDir: baseDir);
  final classesDir = Directory(p.join(baseDir, 'ios', 'Classes'))..createSync(recursive: true);
  File(p.join(classesDir.path, 'dart_api_dl.c')).writeAsStringSync('#include "../../src/dart_api_dl.c"\n');
  syncBridgeFiles(baseDir);
  File(p.join(classesDir.path, '$pluginName.cpp')).writeAsStringSync('// Generated by nitrogen link — do not edit.\n');
  ensureIosPackageSwift(pluginName, baseDir: baseDir);
}