[ https://issues.apache.org/jira/browse/CB-9825?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15361956#comment-15361956 ]
ASF GitHub Bot commented on CB-9825: ------------------------------------ Github user shazron commented on a diff in the pull request: https://github.com/apache/cordova-ios/pull/234#discussion_r69504555 --- Diff: bin/templates/scripts/cordova/Api.js --- @@ -217,6 +214,90 @@ Api.prototype.addPlugin = function (plugin, installOptions) { return PluginManager.get(this.platform, this.locations, xcodeproj) .addPlugin(plugin, installOptions) + .then(function() { + var project_dir = this.locations.root; + var project_path = this.locations.xcodeProjDir; + var project_name = this.locations.xcodeCordovaProj.split('/').pop(); + var array_of_pod_objects = []; + + if (plugin.getFrameworks(this.platform).length === 0) return; + events.emit('verbose', 'Looking into adding pods since the plugin contained <framework>'); + + var pods_file = path.join(project_dir, 'pods.json'); + var pods = {}; + + try { + delete require.cache[require.resolve(pods_file)]; + pods = require(pods_file); + } catch (e) { + /* no pods.json exists */ + // create an empty pods.json file + fs.writeFileSync(pods_file, JSON.stringify({})); + delete require.cache[require.resolve(pods_file)]; + pods = require(pods_file); + } + + var podMod = require('./lib/podMod'); + var frameworkTags = plugin.getFrameworks(this.platform); + + // check if any of the framework tags are of type "podspec" + frameworkTags.forEach(function (obj) { + if (obj.type == 'podspec') { + array_of_pod_objects.push(obj); + } + }); + + var podIsAlreadyInPodfile; + + array_of_pod_objects.forEach(function (obj) { + //check if pod already exists, if so if spec has changed + //if pods.json does not exist yet, create it + // if it does not exist, only overwrite the type and spec, NOT the count + var nameOfPod = obj.src; + + if(!pods[nameOfPod]) { + pods[nameOfPod] = {'type': obj.type, 'spec': obj.spec}; + podIsAlreadyInPodfile = false; + } else { + pods[nameOfPod].type = obj.type; + pods[nameOfPod].spec = obj.spec; + podIsAlreadyInPodfile = true; + } + + // add a count incase multiple plugins depend on it. + if (pods[nameOfPod].count) { + pods[nameOfPod].count = pods[nameOfPod].count + 1; + } else { + pods[nameOfPod].count = 1; + } + + function addToPodfile (callback) { --- End diff -- see corresponding note below. Function does not need a callback since the contents are synchronous. > Support third-party package managers like Cocoapods and Nuget > ------------------------------------------------------------- > > Key: CB-9825 > URL: https://issues.apache.org/jira/browse/CB-9825 > Project: Apache Cordova > Issue Type: New Feature > Components: CordovaLib > Reporter: Shazron Abdullah > Assignee: Julia Geist > Labels: cordova-ios-5.0.x > > ML discussion: > http://markmail.org/message/5qvg6rwr4nz4q7mc > cordova-discuss proposal (to be brought back to the list when finalized): > https://github.com/cordova/cordova-discuss/blob/master/proposals/ThirdPartyPackageManagers.md > From Steve Gill in the ML: > At the Cordova F2F, everyone seemed to agree that we should bring CocoaPods > support to plugins as dependencies for iOS. > Cordova-android currently uses Gradle as a way to enable external > dependency resolution for plugins using the framework tag. > A suggestion about using the engine tag to fetch cocoapods-cli (mac) & > NuGet (windows) followed by using the framework tag was discussed. > The minutes[1] show Carlos, Shaz and Raghav as looking into the design. > Someone should write up a proposal on cordova-discuss[2] and create the > issues. Post them in this thread. > This shouldn't take priority over cordova-ios 4 issues. > [1] > https://docs.google.com/document/d/1MArKRmnLS052LBbhPxJF57_4ZivghOj8znWo5sTCkbU/edit?usp=sharing > [2] https://github.com/cordova/cordova-discuss -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@cordova.apache.org For additional commands, e-mail: issues-h...@cordova.apache.org