fix gitignore again
This commit is contained in:
parent
ce5a1e330b
commit
5da5c2afe2
3329 changed files with 364540 additions and 3 deletions
13
electron/node_modules/@capacitor/cli/dist/ios/add.js
generated
vendored
Normal file
13
electron/node_modules/@capacitor/cli/dist/ios/add.js
generated
vendored
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.addIOS = void 0;
|
||||
const tslib_1 = require("tslib");
|
||||
const colors_1 = tslib_1.__importDefault(require("../colors"));
|
||||
const common_1 = require("../common");
|
||||
const template_1 = require("../util/template");
|
||||
async function addIOS(config) {
|
||||
await (0, common_1.runTask)(`Adding native Xcode project in ${colors_1.default.strong(config.ios.platformDir)}`, () => {
|
||||
return (0, template_1.extractTemplate)(config.cli.assets.ios.platformTemplateArchiveAbs, config.ios.platformDirAbs);
|
||||
});
|
||||
}
|
||||
exports.addIOS = addIOS;
|
||||
94
electron/node_modules/@capacitor/cli/dist/ios/build.js
generated
vendored
Normal file
94
electron/node_modules/@capacitor/cli/dist/ios/build.js
generated
vendored
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.buildiOS = void 0;
|
||||
const fs_extra_1 = require("fs-extra");
|
||||
const path_1 = require("path");
|
||||
const rimraf_1 = require("rimraf");
|
||||
const common_1 = require("../common");
|
||||
const definitions_1 = require("../definitions");
|
||||
const log_1 = require("../log");
|
||||
const subprocess_1 = require("../util/subprocess");
|
||||
async function buildiOS(config, buildOptions) {
|
||||
var _a, _b, _c, _d;
|
||||
const theScheme = (_a = buildOptions.scheme) !== null && _a !== void 0 ? _a : 'App';
|
||||
let typeOfBuild;
|
||||
let projectName;
|
||||
if ((await config.ios.packageManager) !== 'SPM') {
|
||||
typeOfBuild = '-workspace';
|
||||
projectName = (0, path_1.basename)(await config.ios.nativeXcodeWorkspaceDirAbs);
|
||||
}
|
||||
else {
|
||||
typeOfBuild = '-project';
|
||||
projectName = (0, path_1.basename)(await config.ios.nativeXcodeProjDirAbs);
|
||||
}
|
||||
if (buildOptions.xcodeSigningType == 'manual' &&
|
||||
(!buildOptions.xcodeSigningCertificate || !buildOptions.xcodeProvisioningProfile)) {
|
||||
throw 'Manually signed Xcode builds require a signing certificate and provisioning profile.';
|
||||
}
|
||||
const buildArgs = [
|
||||
typeOfBuild,
|
||||
projectName,
|
||||
'-scheme',
|
||||
`${theScheme}`,
|
||||
'-destination',
|
||||
`generic/platform=iOS`,
|
||||
'-archivePath',
|
||||
`${theScheme}.xcarchive`,
|
||||
'archive',
|
||||
'-configuration',
|
||||
buildOptions.configuration,
|
||||
];
|
||||
if (buildOptions.xcodeTeamId) {
|
||||
buildArgs.push(`DEVELOPMENT_TEAM=${buildOptions.xcodeTeamId}`);
|
||||
}
|
||||
if (buildOptions.xcodeSigningType == 'manual') {
|
||||
buildArgs.push(`PROVISIONING_PROFILE_SPECIFIER=${buildOptions.xcodeProvisioningProfile}`);
|
||||
}
|
||||
await (0, common_1.runTask)('Building xArchive', async () => (0, subprocess_1.runCommand)('xcodebuild', buildArgs, {
|
||||
cwd: config.ios.nativeProjectDirAbs,
|
||||
}));
|
||||
const manualSigningContents = `<key>provisioningProfiles</key>
|
||||
<dict>
|
||||
<key>${config.app.appId}</key>
|
||||
<string>${(_b = buildOptions.xcodeProvisioningProfile) !== null && _b !== void 0 ? _b : ''}</string>
|
||||
</dict>
|
||||
<key>signingCertificate</key>
|
||||
<string>${(_c = buildOptions.xcodeSigningCertificate) !== null && _c !== void 0 ? _c : ''}</string>`;
|
||||
const archivePlistContents = `<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>method</key>
|
||||
<string>${(_d = buildOptions.xcodeExportMethod) !== null && _d !== void 0 ? _d : definitions_1.XcodeExportMethod.AppStoreConnect}</string>
|
||||
<key>signingStyle</key>
|
||||
<string>${buildOptions.xcodeSigningType}</string>
|
||||
${buildOptions.xcodeSigningType == 'manual' ? manualSigningContents : ''}
|
||||
</dict>
|
||||
</plist>`;
|
||||
const archivePlistPath = (0, path_1.join)(`${config.ios.nativeProjectDirAbs}`, 'archive.plist');
|
||||
(0, fs_extra_1.writeFileSync)(archivePlistPath, archivePlistContents);
|
||||
const archiveArgs = [
|
||||
'archive',
|
||||
'-archivePath',
|
||||
`${theScheme}.xcarchive`,
|
||||
'-exportArchive',
|
||||
'-exportOptionsPlist',
|
||||
'archive.plist',
|
||||
'-exportPath',
|
||||
'output',
|
||||
'-configuration',
|
||||
buildOptions.configuration,
|
||||
];
|
||||
if (buildOptions.xcodeSigningType == 'automatic') {
|
||||
archiveArgs.push('-allowProvisioningUpdates');
|
||||
}
|
||||
await (0, common_1.runTask)('Building IPA', async () => (0, subprocess_1.runCommand)('xcodebuild', archiveArgs, {
|
||||
cwd: config.ios.nativeProjectDirAbs,
|
||||
}));
|
||||
await (0, common_1.runTask)('Cleaning up', async () => {
|
||||
(0, fs_extra_1.unlinkSync)(archivePlistPath);
|
||||
rimraf_1.rimraf.sync((0, path_1.join)(config.ios.nativeProjectDirAbs, `${theScheme}.xcarchive`));
|
||||
});
|
||||
(0, log_1.logSuccess)(`Successfully generated an IPA at: ${(0, path_1.join)(config.ios.nativeProjectDirAbs, 'output')}`);
|
||||
}
|
||||
exports.buildiOS = buildiOS;
|
||||
125
electron/node_modules/@capacitor/cli/dist/ios/common.js
generated
vendored
Normal file
125
electron/node_modules/@capacitor/cli/dist/ios/common.js
generated
vendored
Normal file
|
|
@ -0,0 +1,125 @@
|
|||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.getMajoriOSVersion = exports.editProjectSettingsIOS = exports.resolvePlugin = exports.getIOSPlugins = exports.checkCocoaPods = exports.checkBundler = exports.getCommonChecks = exports.checkIOSPackage = void 0;
|
||||
const tslib_1 = require("tslib");
|
||||
const child_process_1 = require("child_process");
|
||||
const fs_extra_1 = require("fs-extra");
|
||||
const path_1 = require("path");
|
||||
const colors_1 = tslib_1.__importDefault(require("../colors"));
|
||||
const common_1 = require("../common");
|
||||
const cordova_1 = require("../cordova");
|
||||
const log_1 = require("../log");
|
||||
const plugin_1 = require("../plugin");
|
||||
const spm_1 = require("../util/spm");
|
||||
const subprocess_1 = require("../util/subprocess");
|
||||
async function checkIOSPackage(config) {
|
||||
return (0, common_1.checkCapacitorPlatform)(config, 'ios');
|
||||
}
|
||||
exports.checkIOSPackage = checkIOSPackage;
|
||||
function execBundler() {
|
||||
try {
|
||||
const bundleOutput = (0, child_process_1.execSync)('bundle &> /dev/null ; echo $?');
|
||||
return parseInt(bundleOutput.toString());
|
||||
}
|
||||
catch (e) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
async function getCommonChecks(config) {
|
||||
var _a, _b, _c;
|
||||
const checks = [];
|
||||
if ((await config.ios.packageManager) === 'bundler') {
|
||||
checks.push(() => checkBundler(config));
|
||||
}
|
||||
else if ((await config.ios.packageManager) === 'Cocoapods') {
|
||||
checks.push(() => checkCocoaPods(config));
|
||||
}
|
||||
else if ((await config.ios.packageManager) === 'SPM') {
|
||||
const swiftToolsVersion = (_c = (_b = (_a = config.app.extConfig.experimental) === null || _a === void 0 ? void 0 : _a.ios) === null || _b === void 0 ? void 0 : _b.spm) === null || _c === void 0 ? void 0 : _c.swiftToolsVersion;
|
||||
if (swiftToolsVersion) {
|
||||
checks.push(() => (0, spm_1.checkSwiftToolsVersion)(config, swiftToolsVersion));
|
||||
}
|
||||
checks.push(() => (0, spm_1.checkPackageTraitsRequirements)(config));
|
||||
}
|
||||
return checks;
|
||||
}
|
||||
exports.getCommonChecks = getCommonChecks;
|
||||
async function checkBundler(config) {
|
||||
if (config.cli.os === "mac" /* OS.Mac */) {
|
||||
let bundlerResult = execBundler();
|
||||
if (bundlerResult === 1) {
|
||||
// Bundler version is outdated
|
||||
log_1.logger.info(`Using ${colors_1.default.strong('Gemfile')}: Bundler update needed...`);
|
||||
await (0, subprocess_1.runCommand)('gem', ['install', 'bundler']);
|
||||
bundlerResult = execBundler();
|
||||
}
|
||||
if (bundlerResult === 0) {
|
||||
// Bundler in use, all gems current
|
||||
log_1.logger.info(`Using ${colors_1.default.strong('Gemfile')}: RubyGems bundle installed`);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
exports.checkBundler = checkBundler;
|
||||
async function checkCocoaPods(config) {
|
||||
if (!(await (0, subprocess_1.isInstalled)(await config.ios.podPath)) && config.cli.os === "mac" /* OS.Mac */) {
|
||||
return (`CocoaPods is not installed.\n` +
|
||||
`See this install guide: ${colors_1.default.strong('https://capacitorjs.com/docs/getting-started/environment-setup#homebrew')}`);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
exports.checkCocoaPods = checkCocoaPods;
|
||||
async function getIOSPlugins(allPlugins) {
|
||||
const resolved = await Promise.all(allPlugins.map(async (plugin) => await resolvePlugin(plugin)));
|
||||
return resolved.filter((plugin) => !!plugin);
|
||||
}
|
||||
exports.getIOSPlugins = getIOSPlugins;
|
||||
async function resolvePlugin(plugin) {
|
||||
var _a, _b;
|
||||
const platform = 'ios';
|
||||
if ((_a = plugin.manifest) === null || _a === void 0 ? void 0 : _a.ios) {
|
||||
plugin.ios = {
|
||||
name: plugin.name,
|
||||
type: 0 /* PluginType.Core */,
|
||||
path: (_b = plugin.manifest.ios.src) !== null && _b !== void 0 ? _b : platform,
|
||||
};
|
||||
}
|
||||
else if (plugin.xml) {
|
||||
plugin.ios = {
|
||||
name: plugin.name,
|
||||
type: 1 /* PluginType.Cordova */,
|
||||
path: 'src/' + platform,
|
||||
};
|
||||
if ((0, cordova_1.getIncompatibleCordovaPlugins)(platform).includes(plugin.id) || !(0, plugin_1.getPluginPlatform)(plugin, platform)) {
|
||||
plugin.ios.type = 2 /* PluginType.Incompatible */;
|
||||
}
|
||||
}
|
||||
else {
|
||||
return null;
|
||||
}
|
||||
return plugin;
|
||||
}
|
||||
exports.resolvePlugin = resolvePlugin;
|
||||
/**
|
||||
* Update the native project files with the desired app id and app name
|
||||
*/
|
||||
async function editProjectSettingsIOS(config) {
|
||||
const appId = config.app.appId;
|
||||
const appName = config.app.appName.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
|
||||
const pbxPath = `${config.ios.nativeXcodeProjDirAbs}/project.pbxproj`;
|
||||
const plistPath = (0, path_1.resolve)(config.ios.nativeTargetDirAbs, 'Info.plist');
|
||||
let plistContent = await (0, fs_extra_1.readFile)(plistPath, { encoding: 'utf-8' });
|
||||
plistContent = plistContent.replace(/<key>CFBundleDisplayName<\/key>[\s\S]?\s+<string>([^<]*)<\/string>/, `<key>CFBundleDisplayName</key>\n <string>${appName}</string>`);
|
||||
let pbxContent = await (0, fs_extra_1.readFile)(pbxPath, { encoding: 'utf-8' });
|
||||
pbxContent = pbxContent.replace(/PRODUCT_BUNDLE_IDENTIFIER = ([^;]+)/g, `PRODUCT_BUNDLE_IDENTIFIER = ${appId}`);
|
||||
await (0, fs_extra_1.writeFile)(plistPath, plistContent, { encoding: 'utf-8' });
|
||||
await (0, fs_extra_1.writeFile)(pbxPath, pbxContent, { encoding: 'utf-8' });
|
||||
}
|
||||
exports.editProjectSettingsIOS = editProjectSettingsIOS;
|
||||
function getMajoriOSVersion(config) {
|
||||
const pbx = (0, fs_extra_1.readFileSync)((0, path_1.join)(config.ios.nativeXcodeProjDirAbs, 'project.pbxproj'), 'utf-8');
|
||||
const searchString = 'IPHONEOS_DEPLOYMENT_TARGET = ';
|
||||
const iosVersion = pbx.substring(pbx.indexOf(searchString) + searchString.length, pbx.indexOf(searchString) + searchString.length + 2);
|
||||
return iosVersion;
|
||||
}
|
||||
exports.getMajoriOSVersion = getMajoriOSVersion;
|
||||
45
electron/node_modules/@capacitor/cli/dist/ios/doctor.js
generated
vendored
Normal file
45
electron/node_modules/@capacitor/cli/dist/ios/doctor.js
generated
vendored
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.doctorIOS = void 0;
|
||||
const common_1 = require("../common");
|
||||
const errors_1 = require("../errors");
|
||||
const log_1 = require("../log");
|
||||
const subprocess_1 = require("../util/subprocess");
|
||||
const common_2 = require("./common");
|
||||
async function doctorIOS(config) {
|
||||
var _a;
|
||||
// DOCTOR ideas for iOS:
|
||||
// plugin specific warnings
|
||||
// check cocoapods installed
|
||||
// check projects exist
|
||||
// check content in www === ios/www
|
||||
// check CLI versions
|
||||
// check plugins versions
|
||||
// check native project deps are up-to-date === npm install
|
||||
// check if npm install was updated
|
||||
// check online datebase of common errors
|
||||
// check if www folder is empty (index.html does not exist)
|
||||
try {
|
||||
await (0, common_1.check)([() => (0, common_1.checkWebDir)(config), checkXcode, ...(await (0, common_2.getCommonChecks)(config))]);
|
||||
(0, log_1.logSuccess)('iOS looking great! 👌');
|
||||
}
|
||||
catch (e) {
|
||||
(0, errors_1.fatal)((_a = e.stack) !== null && _a !== void 0 ? _a : e);
|
||||
}
|
||||
}
|
||||
exports.doctorIOS = doctorIOS;
|
||||
async function checkXcode() {
|
||||
if (!(await (0, subprocess_1.isInstalled)('xcodebuild'))) {
|
||||
return `Xcode is not installed`;
|
||||
}
|
||||
// const matches = output.match(/^Xcode (.*)/);
|
||||
// if (matches && matches.length === 2) {
|
||||
// const minVersion = '9.0.0';
|
||||
// const semver = await import('semver');
|
||||
// console.log(matches[1]);
|
||||
// if (semver.gt(minVersion, matches[1])) {
|
||||
// return `Xcode version is too old, ${minVersion} is required`;
|
||||
// }
|
||||
// }
|
||||
return null;
|
||||
}
|
||||
16
electron/node_modules/@capacitor/cli/dist/ios/open.js
generated
vendored
Normal file
16
electron/node_modules/@capacitor/cli/dist/ios/open.js
generated
vendored
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.openIOS = void 0;
|
||||
const tslib_1 = require("tslib");
|
||||
const open_1 = tslib_1.__importDefault(require("open"));
|
||||
const common_1 = require("../common");
|
||||
async function openIOS(config) {
|
||||
if ((await config.ios.packageManager) == 'SPM') {
|
||||
await (0, open_1.default)(config.ios.nativeXcodeProjDirAbs, { wait: false });
|
||||
}
|
||||
else {
|
||||
await (0, open_1.default)(await config.ios.nativeXcodeWorkspaceDirAbs, { wait: false });
|
||||
}
|
||||
await (0, common_1.wait)(3000);
|
||||
}
|
||||
exports.openIOS = openIOS;
|
||||
50
electron/node_modules/@capacitor/cli/dist/ios/run.js
generated
vendored
Normal file
50
electron/node_modules/@capacitor/cli/dist/ios/run.js
generated
vendored
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.runIOS = void 0;
|
||||
const tslib_1 = require("tslib");
|
||||
const debug_1 = tslib_1.__importDefault(require("debug"));
|
||||
const path_1 = require("path");
|
||||
const colors_1 = tslib_1.__importDefault(require("../colors"));
|
||||
const common_1 = require("../common");
|
||||
const native_run_1 = require("../util/native-run");
|
||||
const subprocess_1 = require("../util/subprocess");
|
||||
const debug = (0, debug_1.default)('capacitor:ios:run');
|
||||
async function runIOS(config, { target: selectedTarget, targetName: selectedTargetName, targetNameSdkVersion: selectedTargetSdkVersion, scheme: selectedScheme, configuration: selectedConfiguration, }) {
|
||||
const target = await (0, common_1.promptForPlatformTarget)(await (0, native_run_1.getPlatformTargets)('ios'), selectedTarget !== null && selectedTarget !== void 0 ? selectedTarget : selectedTargetName, selectedTargetSdkVersion, selectedTargetName !== undefined);
|
||||
const runScheme = selectedScheme || config.ios.scheme;
|
||||
const configuration = selectedConfiguration || 'Debug';
|
||||
const derivedDataPath = (0, path_1.resolve)(config.ios.platformDirAbs, 'DerivedData', target.id);
|
||||
const packageManager = await config.ios.packageManager;
|
||||
let typeOfBuild;
|
||||
let projectName;
|
||||
if (packageManager !== 'SPM') {
|
||||
typeOfBuild = '-workspace';
|
||||
projectName = (0, path_1.basename)(await config.ios.nativeXcodeWorkspaceDirAbs);
|
||||
}
|
||||
else {
|
||||
typeOfBuild = '-project';
|
||||
projectName = (0, path_1.basename)(await config.ios.nativeXcodeProjDirAbs);
|
||||
}
|
||||
const xcodebuildArgs = [
|
||||
typeOfBuild,
|
||||
projectName,
|
||||
'-scheme',
|
||||
runScheme,
|
||||
'-configuration',
|
||||
configuration,
|
||||
'-destination',
|
||||
`id=${target.id}`,
|
||||
'-derivedDataPath',
|
||||
derivedDataPath,
|
||||
];
|
||||
debug('Invoking xcodebuild with args: %O', xcodebuildArgs);
|
||||
await (0, common_1.runTask)('Running xcodebuild', async () => (0, subprocess_1.runCommand)('xcrun', ['xcodebuild', ...xcodebuildArgs], {
|
||||
cwd: config.ios.nativeProjectDirAbs,
|
||||
}));
|
||||
const appName = `${runScheme}.app`;
|
||||
const appPath = (0, path_1.resolve)(derivedDataPath, 'Build/Products', target.virtual ? `${configuration}-iphonesimulator` : `${configuration}-iphoneos`, appName);
|
||||
const nativeRunArgs = ['ios', '--app', appPath, '--target', target.id];
|
||||
debug('Invoking native-run with args: %O', nativeRunArgs);
|
||||
await (0, common_1.runTask)(`Deploying ${colors_1.default.strong(appName)} to ${colors_1.default.input(target.id)}`, async () => (0, native_run_1.runNativeRun)(nativeRunArgs));
|
||||
}
|
||||
exports.runIOS = runIOS;
|
||||
446
electron/node_modules/@capacitor/cli/dist/ios/update.js
generated
vendored
Normal file
446
electron/node_modules/@capacitor/cli/dist/ios/update.js
generated
vendored
Normal file
|
|
@ -0,0 +1,446 @@
|
|||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.installCocoaPodsPlugins = exports.updateIOS = void 0;
|
||||
const tslib_1 = require("tslib");
|
||||
const fs_extra_1 = require("fs-extra");
|
||||
const path_1 = require("path");
|
||||
const colors_1 = tslib_1.__importDefault(require("../colors"));
|
||||
const common_1 = require("../common");
|
||||
const cordova_1 = require("../cordova");
|
||||
const errors_1 = require("../errors");
|
||||
const log_1 = require("../log");
|
||||
const plugin_1 = require("../plugin");
|
||||
const copy_1 = require("../tasks/copy");
|
||||
const fs_1 = require("../util/fs");
|
||||
const iosplugin_1 = require("../util/iosplugin");
|
||||
const node_1 = require("../util/node");
|
||||
const spm_1 = require("../util/spm");
|
||||
const subprocess_1 = require("../util/subprocess");
|
||||
const template_1 = require("../util/template");
|
||||
const common_2 = require("./common");
|
||||
const platform = 'ios';
|
||||
async function updateIOS(config, deployment) {
|
||||
const plugins = await getPluginsTask(config);
|
||||
const capacitorPlugins = plugins.filter((p) => (0, plugin_1.getPluginType)(p, platform) === 0 /* PluginType.Core */);
|
||||
await updatePluginFiles(config, plugins, deployment);
|
||||
await (0, common_1.checkPlatformVersions)(config, platform);
|
||||
(0, iosplugin_1.generateIOSPackageJSON)(config, plugins);
|
||||
(0, plugin_1.printPlugins)(capacitorPlugins, 'ios');
|
||||
}
|
||||
exports.updateIOS = updateIOS;
|
||||
async function updatePluginFiles(config, plugins, deployment) {
|
||||
var _a;
|
||||
await removePluginsNativeFiles(config);
|
||||
const cordovaPlugins = plugins.filter((p) => (0, plugin_1.getPluginType)(p, platform) === 1 /* PluginType.Cordova */);
|
||||
if (cordovaPlugins.length > 0) {
|
||||
await copyPluginsNativeFiles(config, cordovaPlugins);
|
||||
}
|
||||
if (!(await (0, fs_extra_1.pathExists)(await config.ios.webDirAbs))) {
|
||||
await (0, copy_1.copy)(config, platform);
|
||||
}
|
||||
await (0, cordova_1.handleCordovaPluginsJS)(cordovaPlugins, config, platform);
|
||||
await (0, cordova_1.checkPluginDependencies)(plugins, platform, (_a = config.app.extConfig.cordova) === null || _a === void 0 ? void 0 : _a.failOnUninstalledPlugins);
|
||||
if ((await config.ios.packageManager) === 'SPM') {
|
||||
await generateCordovaPackageFiles(cordovaPlugins, config);
|
||||
const validSPMPackages = await (0, spm_1.checkPluginsForPackageSwift)(config, plugins);
|
||||
await (0, spm_1.generatePackageFile)(config, validSPMPackages.concat(cordovaPlugins));
|
||||
}
|
||||
else {
|
||||
await generateCordovaPodspecs(cordovaPlugins, config);
|
||||
await installCocoaPodsPlugins(config, plugins, deployment);
|
||||
}
|
||||
await (0, cordova_1.logCordovaManualSteps)(cordovaPlugins, config, platform);
|
||||
const incompatibleCordovaPlugins = plugins.filter((p) => (0, plugin_1.getPluginType)(p, platform) === 2 /* PluginType.Incompatible */);
|
||||
(0, plugin_1.printPlugins)(incompatibleCordovaPlugins, platform, 'incompatible');
|
||||
}
|
||||
async function generateCordovaPackageFiles(cordovaPlugins, config) {
|
||||
cordovaPlugins.map((plugin) => {
|
||||
generateCordovaPackageFile(plugin, config);
|
||||
});
|
||||
}
|
||||
async function generateCordovaPackageFile(p, config) {
|
||||
const iosPlatformVersion = await (0, common_1.getCapacitorPackageVersion)(config, config.ios.name);
|
||||
const iosVersion = (0, common_2.getMajoriOSVersion)(config);
|
||||
const headerFiles = (0, plugin_1.getPlatformElement)(p, platform, 'header-file');
|
||||
let headersText = '';
|
||||
if (headerFiles.length > 0) {
|
||||
headersText = `,
|
||||
publicHeadersPath: "."`;
|
||||
}
|
||||
const content = `// swift-tools-version: 5.9
|
||||
|
||||
import PackageDescription
|
||||
|
||||
let package = Package(
|
||||
name: "${p.name}",
|
||||
platforms: [.iOS(.v${iosVersion})],
|
||||
products: [
|
||||
.library(
|
||||
name: "${p.name}",
|
||||
targets: ["${p.name}"]
|
||||
)
|
||||
],
|
||||
dependencies: [
|
||||
.package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", from: "${iosPlatformVersion}")
|
||||
],
|
||||
targets: [
|
||||
.target(
|
||||
name: "${p.name}",
|
||||
dependencies: [
|
||||
.product(name: "Cordova", package: "capacitor-swift-pm")
|
||||
],
|
||||
path: "."${headersText}
|
||||
)
|
||||
]
|
||||
)`;
|
||||
await (0, fs_extra_1.writeFile)((0, path_1.join)(config.ios.cordovaPluginsDirAbs, 'sources', p.name, 'Package.swift'), content);
|
||||
}
|
||||
async function installCocoaPodsPlugins(config, plugins, deployment) {
|
||||
await (0, common_1.runTask)(`Updating iOS native dependencies with ${colors_1.default.input(`${await config.ios.podPath} install`)}`, () => {
|
||||
return updatePodfile(config, plugins, deployment);
|
||||
});
|
||||
}
|
||||
exports.installCocoaPodsPlugins = installCocoaPodsPlugins;
|
||||
async function updatePodfile(config, plugins, deployment) {
|
||||
const dependenciesContent = await generatePodFile(config, plugins);
|
||||
const relativeCapacitoriOSPath = await getRelativeCapacitoriOSPath(config);
|
||||
const podfilePath = (0, path_1.join)(config.ios.nativeProjectDirAbs, 'Podfile');
|
||||
let podfileContent = await (0, fs_extra_1.readFile)(podfilePath, { encoding: 'utf-8' });
|
||||
podfileContent = podfileContent.replace(/(def capacitor_pods)[\s\S]+?(\nend)/, `$1${dependenciesContent}$2`);
|
||||
podfileContent = podfileContent.replace(/(require_relative)[\s\S]+?(@capacitor\/ios\/scripts\/pods_helpers')/, `require_relative '${relativeCapacitoriOSPath}/scripts/pods_helpers'`);
|
||||
await (0, fs_extra_1.writeFile)(podfilePath, podfileContent, { encoding: 'utf-8' });
|
||||
const podPath = await config.ios.podPath;
|
||||
const useBundler = (await config.ios.packageManager) === 'bundler';
|
||||
if (useBundler) {
|
||||
await (0, subprocess_1.runCommand)('bundle', ['exec', 'pod', 'install', ...(deployment ? ['--deployment'] : [])], {
|
||||
cwd: config.ios.nativeProjectDirAbs,
|
||||
});
|
||||
}
|
||||
else if (await (0, subprocess_1.isInstalled)('pod')) {
|
||||
await (0, subprocess_1.runCommand)(podPath, ['install', ...(deployment ? ['--deployment'] : [])], {
|
||||
cwd: config.ios.nativeProjectDirAbs,
|
||||
});
|
||||
}
|
||||
else {
|
||||
log_1.logger.warn('Skipping pod install because CocoaPods is not installed');
|
||||
}
|
||||
const isXcodebuildAvailable = await (0, subprocess_1.isInstalled)('xcodebuild');
|
||||
if (isXcodebuildAvailable) {
|
||||
await (0, subprocess_1.runCommand)('xcodebuild', ['-project', (0, path_1.basename)(`${config.ios.nativeXcodeProjDirAbs}`), 'clean'], {
|
||||
cwd: config.ios.nativeProjectDirAbs,
|
||||
});
|
||||
}
|
||||
else {
|
||||
log_1.logger.warn('Unable to find "xcodebuild". Skipping xcodebuild clean step...');
|
||||
}
|
||||
}
|
||||
async function getRelativeCapacitoriOSPath(config) {
|
||||
const capacitoriOSPath = (0, node_1.resolveNode)(config.app.rootDir, '@capacitor/ios', 'package.json');
|
||||
if (!capacitoriOSPath) {
|
||||
(0, errors_1.fatal)(`Unable to find ${colors_1.default.strong('node_modules/@capacitor/ios')}.\n` +
|
||||
`Are you sure ${colors_1.default.strong('@capacitor/ios')} is installed?`);
|
||||
}
|
||||
return (0, fs_1.convertToUnixPath)((0, path_1.relative)(config.ios.nativeProjectDirAbs, await (0, fs_extra_1.realpath)((0, path_1.dirname)(capacitoriOSPath))));
|
||||
}
|
||||
async function generatePodFile(config, plugins) {
|
||||
const relativeCapacitoriOSPath = await getRelativeCapacitoriOSPath(config);
|
||||
const capacitorPlugins = plugins.filter((p) => (0, plugin_1.getPluginType)(p, platform) === 0 /* PluginType.Core */);
|
||||
const pods = await Promise.all(capacitorPlugins.map(async (p) => {
|
||||
if (!p.ios) {
|
||||
return '';
|
||||
}
|
||||
return ` pod '${p.ios.name}', :path => '${(0, fs_1.convertToUnixPath)((0, path_1.relative)(config.ios.nativeProjectDirAbs, await (0, fs_extra_1.realpath)(p.rootPath)))}'\n`;
|
||||
}));
|
||||
const cordovaPlugins = plugins.filter((p) => (0, plugin_1.getPluginType)(p, platform) === 1 /* PluginType.Cordova */);
|
||||
cordovaPlugins.map(async (p) => {
|
||||
const podspecs = (0, plugin_1.getPlatformElement)(p, platform, 'podspec');
|
||||
podspecs.map((podspec) => {
|
||||
podspec.pods.map((pPods) => {
|
||||
pPods.pod.map((pod) => {
|
||||
if (pod.$.git) {
|
||||
let gitRef = '';
|
||||
if (pod.$.tag) {
|
||||
gitRef = `, :tag => '${pod.$.tag}'`;
|
||||
}
|
||||
else if (pod.$.branch) {
|
||||
gitRef = `, :branch => '${pod.$.branch}'`;
|
||||
}
|
||||
else if (pod.$.commit) {
|
||||
gitRef = `, :commit => '${pod.$.commit}'`;
|
||||
}
|
||||
pods.push(` pod '${pod.$.name}', :git => '${pod.$.git}'${gitRef}\n`);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
const staticPlugins = cordovaPlugins.filter((p) => (0, cordova_1.needsStaticPod)(p));
|
||||
const noStaticPlugins = cordovaPlugins.filter((el) => !staticPlugins.includes(el));
|
||||
if (noStaticPlugins.length > 0) {
|
||||
pods.push(` pod 'CordovaPlugins', :path => '../capacitor-cordova-ios-plugins'\n`);
|
||||
}
|
||||
if (staticPlugins.length > 0) {
|
||||
pods.push(` pod 'CordovaPluginsStatic', :path => '../capacitor-cordova-ios-plugins'\n`);
|
||||
}
|
||||
const resourcesPlugins = cordovaPlugins.filter(filterResources);
|
||||
if (resourcesPlugins.length > 0) {
|
||||
pods.push(` pod 'CordovaPluginsResources', :path => '../capacitor-cordova-ios-plugins'\n`);
|
||||
}
|
||||
return `
|
||||
pod 'Capacitor', :path => '${relativeCapacitoriOSPath}'
|
||||
pod 'CapacitorCordova', :path => '${relativeCapacitoriOSPath}'
|
||||
${pods.join('').trimRight()}`;
|
||||
}
|
||||
function getFrameworkName(framework) {
|
||||
if (isFramework(framework)) {
|
||||
if (framework.$.custom && framework.$.custom === 'true') {
|
||||
return framework.$.src;
|
||||
}
|
||||
return framework.$.src.substr(0, framework.$.src.indexOf('.'));
|
||||
}
|
||||
return framework.$.src.substr(0, framework.$.src.indexOf('.')).replace('lib', '');
|
||||
}
|
||||
function isFramework(framework) {
|
||||
return framework.$.src.split('.').pop().includes('framework');
|
||||
}
|
||||
async function generateCordovaPodspecs(cordovaPlugins, config) {
|
||||
const staticPlugins = cordovaPlugins.filter((p) => (0, cordova_1.needsStaticPod)(p));
|
||||
const noStaticPlugins = cordovaPlugins.filter((el) => !staticPlugins.includes(el));
|
||||
generateCordovaPodspec(noStaticPlugins, config, false);
|
||||
generateCordovaPodspec(staticPlugins, config, true);
|
||||
}
|
||||
async function generateCordovaPodspec(cordovaPlugins, config, isStatic) {
|
||||
const weakFrameworks = [];
|
||||
const linkedFrameworks = [];
|
||||
const customFrameworks = [];
|
||||
const systemLibraries = [];
|
||||
const sourceFrameworks = [];
|
||||
const frameworkDeps = [];
|
||||
const compilerFlags = [];
|
||||
let prefsArray = [];
|
||||
let name = 'CordovaPlugins';
|
||||
let sourcesFolderName = 'sources';
|
||||
if (isStatic) {
|
||||
name += 'Static';
|
||||
frameworkDeps.push('s.static_framework = true');
|
||||
sourcesFolderName += 'static';
|
||||
}
|
||||
cordovaPlugins.map((plugin) => {
|
||||
const frameworks = (0, plugin_1.getPlatformElement)(plugin, platform, 'framework');
|
||||
frameworks.map((framework) => {
|
||||
if (!framework.$.type) {
|
||||
const name = getFrameworkName(framework);
|
||||
if (isFramework(framework)) {
|
||||
if (framework.$.weak && framework.$.weak === 'true') {
|
||||
if (!weakFrameworks.includes(name)) {
|
||||
weakFrameworks.push(name);
|
||||
}
|
||||
}
|
||||
else if (framework.$.custom && framework.$.custom === 'true') {
|
||||
const frameworktPath = (0, path_1.join)(sourcesFolderName, plugin.name, name);
|
||||
if (!customFrameworks.includes(frameworktPath)) {
|
||||
customFrameworks.push(frameworktPath);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (!linkedFrameworks.includes(name)) {
|
||||
linkedFrameworks.push(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (!systemLibraries.includes(name)) {
|
||||
systemLibraries.push(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (framework.$.type && framework.$.type === 'podspec') {
|
||||
let depString = `s.dependency '${framework.$.src}'`;
|
||||
if (framework.$.spec && framework.$.spec !== '') {
|
||||
depString += `, '${framework.$.spec}'`;
|
||||
}
|
||||
if (!frameworkDeps.includes(depString)) {
|
||||
frameworkDeps.push(depString);
|
||||
}
|
||||
}
|
||||
});
|
||||
prefsArray = prefsArray.concat((0, plugin_1.getAllElements)(plugin, platform, 'preference'));
|
||||
const podspecs = (0, plugin_1.getPlatformElement)(plugin, platform, 'podspec');
|
||||
podspecs.map((podspec) => {
|
||||
podspec.pods.map((pods) => {
|
||||
pods.pod.map((pod) => {
|
||||
let depString = `s.dependency '${pod.$.name}'`;
|
||||
if (pod.$.spec && pod.$.spec !== '') {
|
||||
depString += `, '${pod.$.spec}'`;
|
||||
}
|
||||
if (!frameworkDeps.includes(depString)) {
|
||||
frameworkDeps.push(depString);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
const sourceFiles = (0, plugin_1.getPlatformElement)(plugin, platform, 'source-file');
|
||||
sourceFiles.map((sourceFile) => {
|
||||
if (sourceFile.$.framework && sourceFile.$.framework === 'true') {
|
||||
let fileName = sourceFile.$.src.split('/').pop();
|
||||
if (!fileName.startsWith('lib')) {
|
||||
fileName = 'lib' + fileName;
|
||||
}
|
||||
const frameworktPath = (0, path_1.join)(sourcesFolderName, plugin.name, fileName);
|
||||
if (!sourceFrameworks.includes(frameworktPath)) {
|
||||
sourceFrameworks.push(frameworktPath);
|
||||
}
|
||||
}
|
||||
else if (sourceFile.$['compiler-flags']) {
|
||||
const cFlag = sourceFile.$['compiler-flags'];
|
||||
if (!compilerFlags.includes(cFlag)) {
|
||||
compilerFlags.push(cFlag);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
const onlySystemLibraries = systemLibraries.filter((library) => removeNoSystem(library, sourceFrameworks));
|
||||
if (weakFrameworks.length > 0) {
|
||||
frameworkDeps.push(`s.weak_frameworks = '${weakFrameworks.join(`', '`)}'`);
|
||||
}
|
||||
if (linkedFrameworks.length > 0) {
|
||||
frameworkDeps.push(`s.frameworks = '${linkedFrameworks.join(`', '`)}'`);
|
||||
}
|
||||
if (onlySystemLibraries.length > 0) {
|
||||
frameworkDeps.push(`s.libraries = '${onlySystemLibraries.join(`', '`)}'`);
|
||||
}
|
||||
if (customFrameworks.length > 0) {
|
||||
frameworkDeps.push(`s.vendored_frameworks = '${customFrameworks.join(`', '`)}'`);
|
||||
frameworkDeps.push(`s.exclude_files = 'sources/**/*.framework/Headers/*.h', 'sources/**/*.framework/PrivateHeaders/*.h'`);
|
||||
}
|
||||
if (sourceFrameworks.length > 0) {
|
||||
frameworkDeps.push(`s.vendored_libraries = '${sourceFrameworks.join(`', '`)}'`);
|
||||
}
|
||||
if (compilerFlags.length > 0) {
|
||||
frameworkDeps.push(`s.compiler_flags = '${compilerFlags.join(' ')}'`);
|
||||
}
|
||||
const arcPlugins = cordovaPlugins.filter(filterARCFiles);
|
||||
if (arcPlugins.length > 0) {
|
||||
frameworkDeps.push(`s.subspec 'noarc' do |sna|
|
||||
sna.requires_arc = false
|
||||
sna.source_files = 'noarc/**/*.{swift,h,m,c,cc,mm,cpp}'
|
||||
end`);
|
||||
}
|
||||
let frameworksString = frameworkDeps.join('\n ');
|
||||
frameworksString = await replaceFrameworkVariables(config, prefsArray, frameworksString);
|
||||
const content = `
|
||||
Pod::Spec.new do |s|
|
||||
s.name = '${name}'
|
||||
s.version = '${config.cli.package.version}'
|
||||
s.summary = 'Autogenerated spec'
|
||||
s.license = 'Unknown'
|
||||
s.homepage = 'https://example.com'
|
||||
s.authors = { 'Capacitor Generator' => 'hi@example.com' }
|
||||
s.source = { :git => 'https://github.com/ionic-team/does-not-exist.git', :tag => '${config.cli.package.version}' }
|
||||
s.source_files = '${sourcesFolderName}/**/*.{swift,h,m,c,cc,mm,cpp}'
|
||||
s.ios.deployment_target = '${config.ios.minVersion}'
|
||||
s.xcconfig = {'GCC_PREPROCESSOR_DEFINITIONS' => '$(inherited) COCOAPODS=1 WK_WEB_VIEW_ONLY=1' }
|
||||
s.dependency 'CapacitorCordova'${getLinkerFlags(config)}
|
||||
s.swift_version = '5.1'
|
||||
${frameworksString}
|
||||
end`;
|
||||
await (0, fs_extra_1.writeFile)((0, path_1.join)(config.ios.cordovaPluginsDirAbs, `${name}.podspec`), content);
|
||||
}
|
||||
function getLinkerFlags(config) {
|
||||
var _a;
|
||||
if ((_a = config.app.extConfig.ios) === null || _a === void 0 ? void 0 : _a.cordovaLinkerFlags) {
|
||||
return `\n s.pod_target_xcconfig = { 'OTHER_LDFLAGS' => '${config.app.extConfig.ios.cordovaLinkerFlags.join(' ')}' }`;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
async function copyPluginsNativeFiles(config, cordovaPlugins) {
|
||||
for (const p of cordovaPlugins) {
|
||||
const sourceFiles = (0, plugin_1.getPlatformElement)(p, platform, 'source-file');
|
||||
const headerFiles = (0, plugin_1.getPlatformElement)(p, platform, 'header-file');
|
||||
const codeFiles = sourceFiles.concat(headerFiles);
|
||||
const frameworks = (0, plugin_1.getPlatformElement)(p, platform, 'framework');
|
||||
let sourcesFolderName = 'sources';
|
||||
if ((0, cordova_1.needsStaticPod)(p)) {
|
||||
sourcesFolderName += 'static';
|
||||
}
|
||||
const sourcesFolder = (0, path_1.join)(config.ios.cordovaPluginsDirAbs, sourcesFolderName, p.name);
|
||||
for (const codeFile of codeFiles) {
|
||||
let fileName = codeFile.$.src.split('/').pop();
|
||||
const fileExt = codeFile.$.src.split('.').pop();
|
||||
if (fileExt === 'a' && !fileName.startsWith('lib')) {
|
||||
fileName = 'lib' + fileName;
|
||||
}
|
||||
let destFolder = sourcesFolderName;
|
||||
if (codeFile.$['compiler-flags'] && codeFile.$['compiler-flags'] === '-fno-objc-arc') {
|
||||
destFolder = 'noarc';
|
||||
}
|
||||
const filePath = (0, plugin_1.getFilePath)(config, p, codeFile.$.src);
|
||||
const fileDest = (0, path_1.join)(config.ios.cordovaPluginsDirAbs, destFolder, p.name, fileName);
|
||||
await (0, fs_extra_1.copy)(filePath, fileDest);
|
||||
if (!codeFile.$.framework) {
|
||||
let fileContent = await (0, fs_extra_1.readFile)(fileDest, { encoding: 'utf-8' });
|
||||
if (fileExt === 'swift') {
|
||||
fileContent = 'import Cordova\n' + fileContent;
|
||||
await (0, fs_extra_1.writeFile)(fileDest, fileContent, { encoding: 'utf-8' });
|
||||
}
|
||||
else {
|
||||
if (fileContent.includes('@import Firebase;')) {
|
||||
fileContent = fileContent.replace('@import Firebase;', '#import <Firebase/Firebase.h>');
|
||||
await (0, fs_extra_1.writeFile)(fileDest, fileContent, { encoding: 'utf-8' });
|
||||
}
|
||||
if (fileContent.includes('[NSBundle bundleForClass:[self class]]') ||
|
||||
fileContent.includes('[NSBundle bundleForClass:[CDVCapture class]]')) {
|
||||
fileContent = fileContent.replace('[NSBundle bundleForClass:[self class]]', '[NSBundle mainBundle]');
|
||||
fileContent = fileContent.replace('[NSBundle bundleForClass:[CDVCapture class]]', '[NSBundle mainBundle]');
|
||||
await (0, fs_extra_1.writeFile)(fileDest, fileContent, { encoding: 'utf-8' });
|
||||
}
|
||||
if (fileContent.includes('[self.webView superview]') || fileContent.includes('self.webView.superview')) {
|
||||
fileContent = fileContent.replace(/\[self.webView superview\]/g, 'self.viewController.view');
|
||||
fileContent = fileContent.replace(/self.webView.superview/g, 'self.viewController.view');
|
||||
await (0, fs_extra_1.writeFile)(fileDest, fileContent, { encoding: 'utf-8' });
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
const resourceFiles = (0, plugin_1.getPlatformElement)(p, platform, 'resource-file');
|
||||
for (const resourceFile of resourceFiles) {
|
||||
const fileName = resourceFile.$.src.split('/').pop();
|
||||
await (0, fs_extra_1.copy)((0, plugin_1.getFilePath)(config, p, resourceFile.$.src), (0, path_1.join)(config.ios.cordovaPluginsDirAbs, 'resources', fileName));
|
||||
}
|
||||
for (const framework of frameworks) {
|
||||
if (framework.$.custom && framework.$.custom === 'true') {
|
||||
await (0, fs_extra_1.copy)((0, plugin_1.getFilePath)(config, p, framework.$.src), (0, path_1.join)(sourcesFolder, framework.$.src));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
async function removePluginsNativeFiles(config) {
|
||||
await (0, fs_extra_1.remove)(config.ios.cordovaPluginsDirAbs);
|
||||
await (0, template_1.extractTemplate)(config.cli.assets.ios.cordovaPluginsTemplateArchiveAbs, config.ios.cordovaPluginsDirAbs);
|
||||
}
|
||||
function filterResources(plugin) {
|
||||
const resources = (0, plugin_1.getPlatformElement)(plugin, platform, 'resource-file');
|
||||
return resources.length > 0;
|
||||
}
|
||||
function filterARCFiles(plugin) {
|
||||
const sources = (0, plugin_1.getPlatformElement)(plugin, platform, 'source-file');
|
||||
const sourcesARC = sources.filter((sourceFile) => sourceFile.$['compiler-flags'] && sourceFile.$['compiler-flags'] === '-fno-objc-arc');
|
||||
return sourcesARC.length > 0;
|
||||
}
|
||||
function removeNoSystem(library, sourceFrameworks) {
|
||||
const libraries = sourceFrameworks.filter((framework) => framework.includes(library));
|
||||
return libraries.length === 0;
|
||||
}
|
||||
async function getPluginsTask(config) {
|
||||
return await (0, common_1.runTask)('Updating iOS plugins', async () => {
|
||||
const allPlugins = await (0, plugin_1.getPlugins)(config, 'ios');
|
||||
const iosPlugins = await (0, common_2.getIOSPlugins)(allPlugins);
|
||||
return iosPlugins;
|
||||
});
|
||||
}
|
||||
async function replaceFrameworkVariables(config, prefsArray, frameworkString) {
|
||||
prefsArray.map((preference) => {
|
||||
frameworkString = frameworkString.replace(new RegExp(('$' + preference.$.name).replace('$', '\\$&'), 'g'), preference.$.default);
|
||||
});
|
||||
return frameworkString;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue