|
105 | 105 |
|
106 | 106 | // read iOS project module from cordova context
|
107 | 107 | function getProjectModule (context) {
|
108 |
| - // try pre-5.0 cordova structure |
| 108 | + var projectRoot = getProjectRoot(context) |
| 109 | + var projectPath = path.join(projectRoot, 'platforms', 'ios') |
| 110 | + |
| 111 | + // try pre 5.0 cordova structure |
109 | 112 | try {
|
110 |
| - return context.requireCordovaModule('cordova-lib/src/plugman/platforms').ios |
| 113 | + return context.requireCordovaModule('cordova-lib/src/plugman/platforms').ios.parseProjectFile(projectPath) |
111 | 114 | } catch (e) {
|
112 |
| - return context.requireCordovaModule('cordova-lib/src/plugman/platforms/ios') |
| 115 | + // try pre 7.0 cordova structure |
| 116 | + try { |
| 117 | + return context.requireCordovaModule('cordova-lib/src/plugman/platforms/ios').parseProjectFile(projectPath) |
| 118 | + } catch (e) { |
| 119 | + return getProjectModulePlugman(context) |
| 120 | + } |
113 | 121 | }
|
114 | 122 | }
|
115 | 123 |
|
| 124 | + function getProjectModulePlugman (context) { |
| 125 | + var projectRoot = getProjectRoot(context) |
| 126 | + var projectPath = path.join(projectRoot, 'platforms', 'ios') |
| 127 | + var projectFiles = context.requireCordovaModule('glob').sync(path.join(projectPath, '*.xcodeproj', 'project.pbxproj')) |
| 128 | + |
| 129 | + if (projectFiles.length === 0) { |
| 130 | + throw new Error('BRANCH SDK: Unable to locate the Xcode project file.') |
| 131 | + } |
| 132 | + |
| 133 | + var pbxPath = projectFiles[0] |
| 134 | + var xcodeproj = context.requireCordovaModule('xcode').project(pbxPath) |
| 135 | + xcodeproj.parseSync() |
| 136 | + |
| 137 | + var xCodeProjectFile = { |
| 138 | + 'xcode': xcodeproj, |
| 139 | + 'write': function () { |
| 140 | + var fs = context.requireCordovaModule('fs') |
| 141 | + var frameworksFile = path.join(projectPath, 'frameworks.json') |
| 142 | + var frameworks = {} |
| 143 | + try { |
| 144 | + frameworks = context.requireCordovaModule(frameworksFile) |
| 145 | + } catch (e) {} |
| 146 | + |
| 147 | + fs.writeFileSync(pbxPath, xcodeproj.writeSync()) |
| 148 | + if (Object.keys(frameworks).length === 0) { |
| 149 | + // If there is no framework references remain in the project, just remove this file |
| 150 | + context.requireCordovaModule('shelljs').rm('-rf', frameworksFile) |
| 151 | + return |
| 152 | + } |
| 153 | + fs.writeFileSync(frameworksFile, JSON.stringify(this.frameworks, null, 4)) |
| 154 | + } |
| 155 | + } |
| 156 | + |
| 157 | + return xCodeProjectFile |
| 158 | + } |
| 159 | + |
116 | 160 | // validate <branch-config> properties within config.xml
|
117 | 161 | function validateBranchPreferences (preferences) {
|
118 | 162 | if (preferences.projectRoot === null) {
|
|
0 commit comments