@bigin/ns-firebase
Version:
60 lines (51 loc) • 3.49 kB
JavaScript
var fs = require('fs');
var path = require('path');
var fsextra = require('fs-extra');
function patchPluginsFile(pluginsFile) {
if (fs.existsSync(pluginsFile)) {
var xcconfigContent = fs.readFileSync(pluginsFile).toString();
xcconfigContent = xcconfigContent.replace('$(inherited) ${SRCROOT}/Pods/TensorFlowLite/Frameworks/tensorflow_lite.framework -L ', '$(inherited) -L ${SRCROOT}/Pods/TensorFlowLite/Frameworks/tensorflow_lite.framework ');
fs.writeFileSync(pluginsFile, xcconfigContent);
}
}
function patchPodsBundlesPlugins(podsFile) {
if (fs.existsSync(podsFile)) {
var content = fs.readFileSync(podsFile).toString();
content = content.replace('${PODS_CONFIGURATION_BUILD_DIR}/GoogleMobileVision/GoogleMVTextDetectorResources.bundle', '${PODS_ROOT}/GoogleMobileVision/TextDetector/Resources/GoogleMVTextDetectorResources.bundle');
content = content.replace('${PODS_CONFIGURATION_BUILD_DIR}/GoogleMobileVision/GoogleMVFaceDetectorResources.bundle', '${PODS_ROOT}/GoogleMobileVision/FaceDetector/Resources/GoogleMVFaceDetectorResources.bundle');
fs.writeFileSync(podsFile, content);
}
}
module.exports = function (projectData, hookArgs) {
var platform = (hookArgs.platform || (hookArgs.prepareData && hookArgs.prepareData.platform)).toLowerCase(),
appResourcesDirectoryPath = projectData.appResourcesDirectoryPath,
entitlementsFile = path.join(appResourcesDirectoryPath, 'iOS', projectData.projectName + '.entitlements'),
projectRoot = path.join(projectData.platformsDir, 'ios'),
project = path.join(projectRoot, projectData.projectName);
// TensorFlowLite needs a little patch that currently can't be done in any other way than with this hook
patchPluginsFile(path.join(projectRoot, 'plugins-debug.xcconfig'));
patchPluginsFile(path.join(projectRoot, 'plugins-release.xcconfig'));
// These bundlse need a kick as well for the {N} CLI when building for a device
patchPodsBundlesPlugins(path.join(projectRoot, 'Pods', 'Target Support Files', 'Pods-' + projectData.projectName, 'Pods-' + projectData.projectName + '-resources.sh'));
patchPodsBundlesPlugins(path.join(projectRoot, 'Pods', 'Target Support Files', 'Pods-' + projectData.projectName, 'Pods-' + projectData.projectName + '-resources.sh'));
var mobileVisionPod = path.join(projectRoot, 'Pods', 'GoogleMobileVision');
if (fs.existsSync(mobileVisionPod)) {
if (fs.existsSync(path.join(mobileVisionPod, 'TextDetector', 'Resources', 'GoogleMVTextDetectorResources'))) {
fsextra.copy(path.join(mobileVisionPod, 'TextDetector', 'Resources', 'GoogleMVTextDetectorResources'), path.join(mobileVisionPod, 'TextDetector', 'Resources', 'GoogleMVTextDetectorResources.bundle'));
}
if (fs.existsSync(path.join(mobileVisionPod, 'FaceDetector', 'Resources', 'GoogleMVFaceDetectorResources'))) {
fsextra.copy(path.join(mobileVisionPod, 'FaceDetector', 'Resources', 'GoogleMVFaceDetectorResources'), path.join(mobileVisionPod, 'FaceDetector', 'Resources', 'GoogleMVFaceDetectorResources.bundle'));
}
}
// look for both <projectname.entitlements and app.entitlements
if (!fs.existsSync(entitlementsFile)) {
entitlementsFile = path.join(appResourcesDirectoryPath, 'iOS', 'app.entitlements');
}
return new Promise(function (resolve, reject) {
if (platform === 'ios' && fs.existsSync(entitlementsFile)) {
var dest = path.join(project, projectData.projectName + '.entitlements');
fs.createReadStream(entitlementsFile).pipe(fs.createWriteStream(dest));
}
resolve();
});
};