ensureMacosPackageSwift function
void
ensureMacosPackageSwift(
- String pluginName, {
- String baseDir = '.',
- List<
ModuleInfo> ? moduleInfos,
Mirrors ensureIosPackageSwift for macos/. Creates the Flutter 3.41+
nested SPM layout (macos/<pluginName>/Package.swift) if not present,
then syncs C/C++ module sources into SPM Sources directories.
Implementation
void ensureMacosPackageSwift(
String pluginName, {
String baseDir = '.',
List<ModuleInfo>? moduleInfos,
}) {
final spmStatus = spm.detectSpmStatus(baseDir);
if (spmStatus.macosHasSpm) {
_syncCppModuleSourcesToSpm(pluginName, moduleInfos: moduleInfos, baseDir: baseDir);
return;
}
final className = pluginName
.split('_')
.map((w) => w.isEmpty ? '' : w[0].toUpperCase() + w.substring(1))
.join('');
final packageRoot = p.join(baseDir, 'macos', pluginName);
Directory(p.join(packageRoot, 'Sources', className)).createSync(recursive: true);
Directory(p.join(packageRoot, 'Sources', '${className}Cpp')).createSync(recursive: true);
File(p.join(packageRoot, 'Package.swift')).writeAsStringSync(
st.macosPackageSwiftContent(pluginName, className),
);
_syncCppModuleSourcesToSpm(pluginName, moduleInfos: moduleInfos, baseDir: baseDir);
}