(config: Config, plugins: Plugin[], deployment: boolean)
| 45 | } |
| 46 | |
| 47 | async function updatePluginFiles(config: Config, plugins: Plugin[], deployment: boolean) { |
| 48 | await removePluginsNativeFiles(config); |
| 49 | const cordovaPlugins = plugins.filter((p) => getPluginType(p, platform) === PluginType.Cordova); |
| 50 | if (cordovaPlugins.length > 0) { |
| 51 | await copyPluginsNativeFiles(config, cordovaPlugins); |
| 52 | } |
| 53 | if (!(await pathExists(await config.ios.webDirAbs))) { |
| 54 | await copyTask(config, platform); |
| 55 | } |
| 56 | await handleCordovaPluginsJS(cordovaPlugins, config, platform); |
| 57 | await checkPluginDependencies(plugins, platform, config.app.extConfig.cordova?.failOnUninstalledPlugins); |
| 58 | if ((await config.ios.packageManager) === 'SPM') { |
| 59 | await generateCordovaPackageFiles(cordovaPlugins, config); |
| 60 | |
| 61 | const validSPMPackages = await checkPluginsForPackageSwift(config, plugins); |
| 62 | await Promise.all( |
| 63 | validSPMPackages.map(async (plugin) => { |
| 64 | const iosPlatformVersion = await getCapacitorPackageVersion(config, config.ios.name); |
| 65 | const packageSwiftPath = join(plugin.rootPath, 'Package.swift'); |
| 66 | let content = await readFile(packageSwiftPath, { encoding: 'utf-8' }); |
| 67 | const regex = new RegExp( |
| 68 | 'url:\\s*"https://github.com/ionic-team/capacitor-swift-pm\\.git",\\s*from:\\s*"([^"]+)"', |
| 69 | ); |
| 70 | const version = content.match(regex)?.[1]; |
| 71 | const majorCapVersion = major(iosPlatformVersion); |
| 72 | if (version && major(version) != majorCapVersion) { |
| 73 | const preCapVersion = prerelease(iosPlatformVersion); |
| 74 | const forceVersion = preCapVersion ? iosPlatformVersion : `${majorCapVersion}.0.0`; |
| 75 | content = setAllStringIn( |
| 76 | content, |
| 77 | `url: "https://github.com/ionic-team/capacitor-swift-pm.git",`, |
| 78 | `)`, |
| 79 | ` from: "${forceVersion}"`, |
| 80 | ); |
| 81 | await writeFile(packageSwiftPath, content); |
| 82 | logger.warn(`${plugin.id} is built for Capacitor ${major(version)}, it might cause issues`); |
| 83 | } |
| 84 | }), |
| 85 | ); |
| 86 | |
| 87 | await generatePackageFile(config, validSPMPackages.concat(cordovaPlugins)); |
| 88 | } else { |
| 89 | await generateCordovaPodspecs(cordovaPlugins, config); |
| 90 | await installCocoaPodsPlugins(config, plugins, deployment); |
| 91 | } |
| 92 | await logCordovaManualSteps(cordovaPlugins, config, platform); |
| 93 | |
| 94 | const incompatibleCordovaPlugins = plugins.filter((p) => getPluginType(p, platform) === PluginType.Incompatible); |
| 95 | printPlugins(incompatibleCordovaPlugins, platform, 'incompatible'); |
| 96 | } |
| 97 | |
| 98 | async function generateCordovaPackageFiles(cordovaPlugins: Plugin[], config: Config) { |
| 99 | cordovaPlugins.map((plugin: any) => { |
no test coverage detected