ensureIosPackageSwift function
void
ensureIosPackageSwift(
- String pluginName, {
- String baseDir = '.',
- List<
ModuleInfo> ? moduleInfos,
Implementation
void ensureIosPackageSwift(String pluginName, {String baseDir = '.', List<ModuleInfo>? moduleInfos}) {
final packageSwift = File(p.join(baseDir, 'ios', 'Package.swift'));
if (packageSwift.existsSync()) {
// Package.swift already exists — sync C/C++ module sources into Sources/<MainCpp>/.
_syncCppModuleSourcesToSpm(pluginName, moduleInfos: moduleInfos, baseDir: baseDir);
return;
}
final className = pluginName.split('_').map((w) => w.isEmpty ? '' : w[0].toUpperCase() + w.substring(1)).join('');
Directory(p.join(baseDir, 'ios', 'Sources', className)).createSync(recursive: true);
Directory(p.join(baseDir, 'ios', 'Sources', '${className}Cpp')).createSync(recursive: true);
packageSwift.writeAsStringSync(
'// swift-tools-version: 5.9\n'
'import PackageDescription\n'
'\n'
'let package = Package(\n'
' name: "$pluginName",\n'
' platforms: [.iOS(.v13)],\n'
' products: [\n'
' .library(name: "$pluginName", targets: ["$pluginName"])\n'
' ],\n'
' targets: [\n'
' .target(\n'
' name: "${className}Cpp",\n'
' path: "Sources/${className}Cpp",\n'
' publicHeadersPath: "include",\n'
' cxxSettings: [\n'
' .headerSearchPath("include"),\n'
' .unsafeFlags(["-std=c++17", "-I.symlinks/plugins/nitro/src/native"])\n'
' ]\n'
' ),\n'
' .target(\n'
' name: "$pluginName",\n'
' dependencies: ["${className}Cpp"],\n'
' path: "Sources/$className"\n'
' )\n'
' ]\n'
')\n',
);
_syncCppModuleSourcesToSpm(pluginName, moduleInfos: moduleInfos, baseDir: baseDir);
}