motion-cocoapods 1.8.1 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +14 -8
- data/lib/motion/project/cocoapods.rb +306 -120
- data/lib/motion/project/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 35460145e8bb31279e20fde2db7ec5b3757d3ddb
|
4
|
+
data.tar.gz: f0f50eb4bcef6fe747e279dccc068a513907334f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9bd98db8e107aadc86c3968887e1a354cb62180e5c7be107f333f5165e3118ae4ae39f4129310ee8f507921558254381ae5383447c58117c986ef427db5978a8
|
7
|
+
data.tar.gz: 3124becb9828db0004cea2d9929dc51a2c7f57e12e4a441817bbce79a7c19de462b4027f0f1384f46123833ef7594a0d7847ef0b17b90a22147163db81fb1e6a
|
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# motion-cocoapods
|
2
2
|
|
3
|
+
[](https://travis-ci.org/HipByte/motion-cocoapods) [](https://badge.fury.io/rb/motion-cocoapods)
|
4
|
+
|
3
5
|
motion-cocoapods allows RubyMotion projects to integrate with the
|
4
6
|
[CocoaPods](https://cocoapods.org/) dependency manager.
|
5
7
|
|
@@ -39,6 +41,18 @@ gem 'motion-cocoapods'
|
|
39
41
|
end
|
40
42
|
```
|
41
43
|
|
44
|
+
You can use `use_frameworks!` to install pods as frameworks (**NOTE** This feature requires RubyMotion 4.18+).
|
45
|
+
|
46
|
+
```ruby
|
47
|
+
Motion::Project::App.setup do |app|
|
48
|
+
# ...
|
49
|
+
app.pods do
|
50
|
+
use_frameworks!
|
51
|
+
pod 'AFNetworking'
|
52
|
+
end
|
53
|
+
end
|
54
|
+
```
|
55
|
+
|
42
56
|
3. If this is the first time using CocoaPods on your machine, you'll need to
|
43
57
|
let CocoaPods do some setup work with the following command:
|
44
58
|
|
@@ -91,14 +105,6 @@ would like to see the output, you can set the `COCOAPODS_VERBOSE` env variable:
|
|
91
105
|
$ [bundle exec] rake pod:install COCOAPODS_VERBOSE=1
|
92
106
|
```
|
93
107
|
|
94
|
-
As part of the install and update tasks, the specification repostories will get
|
95
|
-
updated. You can disable this with the `COCOAPODS_NO_REPO_UPDATE` env variable:
|
96
|
-
|
97
|
-
```
|
98
|
-
$ [bundle exec] rake pod:install COCOAPODS_NO_REPO_UPDATE=1
|
99
|
-
```
|
100
|
-
|
101
|
-
|
102
108
|
## Contribute
|
103
109
|
|
104
110
|
1. Setup a local development environment.
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# coding: utf-8
|
1
2
|
# Copyright (c) 2012-2014, Laurent Sansonetti <lrz@hipbyte.com>
|
2
3
|
# All rights reserved.
|
3
4
|
#
|
@@ -28,7 +29,6 @@ end
|
|
28
29
|
|
29
30
|
require 'xcodeproj'
|
30
31
|
require 'cocoapods'
|
31
|
-
require 'yaml'
|
32
32
|
|
33
33
|
module Motion::Project
|
34
34
|
class Config
|
@@ -39,6 +39,7 @@ module Motion::Project
|
|
39
39
|
if block
|
40
40
|
@pods.instance_eval(&block)
|
41
41
|
end
|
42
|
+
@pods.configure_project
|
42
43
|
@pods
|
43
44
|
end
|
44
45
|
end
|
@@ -51,6 +52,15 @@ module Motion::Project
|
|
51
52
|
exit 1
|
52
53
|
end
|
53
54
|
build_without_cocoapods(platform, opts)
|
55
|
+
|
56
|
+
# Install the resource which will be generated after built
|
57
|
+
installed_resources = App.config.pods.install_resources
|
58
|
+
unless installed_resources.empty?
|
59
|
+
app_resources_dir = config.app_resources_dir(platform)
|
60
|
+
installed_resources.each do |path|
|
61
|
+
App.builder.copy_resource(path.to_s, File.join(app_resources_dir, path.basename.to_s))
|
62
|
+
end
|
63
|
+
end
|
54
64
|
end
|
55
65
|
|
56
66
|
alias_method "build_without_cocoapods", "build"
|
@@ -70,6 +80,7 @@ module Motion::Project
|
|
70
80
|
def initialize(config, vendor_options)
|
71
81
|
@config = config
|
72
82
|
@vendor_options = vendor_options
|
83
|
+
@use_frameworks = false
|
73
84
|
|
74
85
|
case @config.deploy_platform
|
75
86
|
when 'MacOSX'
|
@@ -93,144 +104,91 @@ module Motion::Project
|
|
93
104
|
if cp_config.verbose = !!ENV['COCOAPODS_VERBOSE']
|
94
105
|
require 'claide'
|
95
106
|
end
|
96
|
-
|
97
|
-
configure_project
|
98
107
|
end
|
99
108
|
|
100
109
|
# Adds the Pods project to the RubyMotion config as a vendored project and
|
101
110
|
#
|
102
111
|
def configure_project
|
103
|
-
@config.resources_dirs << resources_dir.to_s
|
104
|
-
|
105
|
-
# TODO replace this all once Xcodeproj has the proper xcconfig parser.
|
106
112
|
if (xcconfig = self.pods_xcconfig_hash) && ldflags = xcconfig['OTHER_LDFLAGS']
|
107
|
-
|
108
|
-
lib_search_paths = []
|
109
|
-
lib_search_path_flags = lib_search_path_flags.split(/\s/).map do |path|
|
110
|
-
if path =~ /(\$\(inherited\))|(\$\{inherited\})|(\$CONFIGURATION_BUILD_DIR)|(\$PODS_CONFIGURATION_BUILD_DIR)/
|
111
|
-
nil
|
112
|
-
else
|
113
|
-
path = path.gsub(/(\$\(PODS_ROOT\))|(\$\{PODS_ROOT\})/, File.join(@config.project_dir, PODS_ROOT))
|
114
|
-
lib_search_paths << path.gsub('"', '')
|
115
|
-
'-L ' << path
|
116
|
-
end
|
117
|
-
end.compact.join(' ')
|
118
|
-
|
119
|
-
# Get the name of all static libraries that come pre-built with pods
|
120
|
-
pre_built_static_libs = lib_search_paths.map do |path|
|
121
|
-
Dir[File.join(path, '**/*.a')].map { |f| File.basename(f) }
|
122
|
-
end.flatten
|
113
|
+
@config.resources_dirs << resources_dir.to_s
|
123
114
|
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
next if lib_name.nil?
|
130
|
-
if lib_name.start_with?('Pods-')
|
131
|
-
# For CocoaPods 0.37.x or below. This block is marked as deprecated.
|
132
|
-
pods_libs << lib_name
|
133
|
-
nil
|
134
|
-
elsif pre_built_static_libs.include?("lib#{lib_name}.a")
|
135
|
-
"#{lib_search_path_flags} -ObjC -l#{lib_name}"
|
136
|
-
elsif File.exist?("/usr/lib/lib#{lib_name}.dylib")
|
137
|
-
"/usr/lib/lib#{lib_name}.dylib"
|
138
|
-
else
|
139
|
-
pods_libs << lib_name
|
140
|
-
nil
|
141
|
-
end
|
142
|
-
}.compact)
|
143
|
-
@config.libs.uniq!
|
115
|
+
frameworks = installed_frameworks[:pre_built]
|
116
|
+
if frameworks
|
117
|
+
@config.embedded_frameworks += frameworks
|
118
|
+
@config.embedded_frameworks.uniq!
|
119
|
+
end
|
144
120
|
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
search_paths.scan(/"([^"]+)"/) do |search_path|
|
150
|
-
path = search_path.first.gsub!(/(\$\(PODS_ROOT\))|(\$\{PODS_ROOT\})/, "#{@config.project_dir}/#{PODS_ROOT}")
|
151
|
-
framework_search_paths << path if path
|
152
|
-
end
|
153
|
-
# If we couldn't parse any search paths, then presumably nothing was properly quoted, so
|
154
|
-
# fallback to just assuming the whole value is one path.
|
155
|
-
if framework_search_paths.empty?
|
156
|
-
path = search_paths.gsub!(/(\$\(PODS_ROOT\))|(\$\{PODS_ROOT\})/, "#{@config.project_dir}/#{PODS_ROOT}")
|
157
|
-
framework_search_paths << path if path
|
158
|
-
end
|
159
|
-
end
|
121
|
+
if @use_frameworks
|
122
|
+
configure_project_frameworks
|
123
|
+
else
|
124
|
+
configure_project_static_libraries
|
160
125
|
end
|
126
|
+
end
|
127
|
+
end
|
161
128
|
|
162
|
-
|
129
|
+
def configure_project_frameworks
|
130
|
+
if (xcconfig = self.pods_xcconfig_hash) && ldflags = xcconfig['OTHER_LDFLAGS']
|
131
|
+
# Add libraries to @config.libs
|
132
|
+
pods_libraries
|
163
133
|
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
unless search_paths.empty?
|
169
|
-
search_paths.scan(/"([^"]+)"/) do |search_path|
|
170
|
-
path = search_path.first.gsub!(/(\$\(PODS_ROOT\))|(\$\{PODS_ROOT\})/, "#{@config.project_dir}/#{PODS_ROOT}")
|
171
|
-
header_search_paths << File.expand_path(path) if path
|
172
|
-
end
|
173
|
-
# If we couldn't parse any search paths, then presumably nothing was properly quoted, so
|
174
|
-
# fallback to just assuming the whole value is one path.
|
175
|
-
if header_search_paths.empty?
|
176
|
-
path = search_paths.gsub!(/(\$\(PODS_ROOT\))|(\$\{PODS_ROOT\})/, "#{@config.project_dir}/#{PODS_ROOT}")
|
177
|
-
header_search_paths << File.expand_path(path) if path
|
178
|
-
end
|
179
|
-
end
|
134
|
+
frameworks = ldflags.scan(/-framework\s+"?([^\s"]+)"?/).map { |m| m[0] }
|
135
|
+
if build_frameworks = installed_frameworks[:build]
|
136
|
+
build_frameworks = build_frameworks.map { |path| File.basename(path, ".framework") }
|
137
|
+
frameworks.delete_if { |f| build_frameworks.include?(f) }
|
180
138
|
end
|
181
|
-
|
182
|
-
|
139
|
+
static_frameworks = pods_frameworks(frameworks)
|
140
|
+
static_frameworks_paths = static_frameworks_paths(static_frameworks)
|
141
|
+
search_path = static_frameworks_paths.inject("") { |s, path|
|
142
|
+
s += " -I'#{path}' -I'#{path}/Headers'"
|
143
|
+
}
|
183
144
|
@vendor_options[:bridgesupport_cflags] ||= ''
|
184
|
-
@vendor_options[:bridgesupport_cflags] << " #{
|
145
|
+
@vendor_options[:bridgesupport_cflags] << " #{header_search_path} #{framework_search_path} #{search_path}"
|
185
146
|
|
186
|
-
|
147
|
+
@config.weak_frameworks.concat(ldflags.scan(/-weak_framework\s+([^\s]+)/).map { |m| m[0] })
|
148
|
+
@config.weak_frameworks.uniq!
|
187
149
|
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
pods_root = cp_config.installation_root + 'Pods'
|
205
|
-
# If we would really specify these as ‘frameworks’ then the linker
|
206
|
-
# would not link the archive into the application, because it does not
|
207
|
-
# see any references to any of the symbols in the archive. Treating it
|
208
|
-
# as a static library (which it is) with `-ObjC` fixes this.
|
209
|
-
#
|
210
|
-
framework_search_paths.each do |framework_search_path|
|
211
|
-
frameworks.reject! do |framework|
|
212
|
-
path = File.join(framework_search_path, "#{framework}.framework")
|
213
|
-
if File.exist?(path)
|
214
|
-
@config.libs << "-ObjC '#{File.join(path, framework)}'"
|
215
|
-
true
|
216
|
-
else
|
217
|
-
false
|
218
|
-
end
|
219
|
-
end
|
150
|
+
vendors = @config.vendor_project(PODS_ROOT, :xcode, {
|
151
|
+
:target => "Pods-#{TARGET_NAME}",
|
152
|
+
:products => build_frameworks.map { |name| "#{name}.framework" },
|
153
|
+
:allow_empty_products => build_frameworks.empty?,
|
154
|
+
}.merge(@vendor_options))
|
155
|
+
|
156
|
+
vendor = vendors.last
|
157
|
+
if vendor.respond_to?(:build_bridgesupport)
|
158
|
+
static_frameworks_paths.each do |path|
|
159
|
+
path = File.expand_path(path)
|
160
|
+
bs_file = File.join(Builder.common_build_dir, "#{path}.bridgesupport")
|
161
|
+
headers = Dir.glob(File.join(path, '**{,/*/**}/*.h'))
|
162
|
+
@config.vendor_project(PODS_ROOT, :bridgesupport, {
|
163
|
+
:bs_file => bs_file,
|
164
|
+
:headers => headers,
|
165
|
+
}.merge(@vendor_options))
|
220
166
|
end
|
221
167
|
end
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
def configure_project_static_libraries
|
172
|
+
# TODO replace this all once Xcodeproj has the proper xcconfig parser.
|
173
|
+
if (xcconfig = self.pods_xcconfig_hash) && ldflags = xcconfig['OTHER_LDFLAGS']
|
174
|
+
# Collect the Pod products
|
175
|
+
pods_libs = pods_libraries
|
222
176
|
|
223
|
-
|
224
|
-
@
|
177
|
+
# Initialize ':bridgesupport_cflags', in case the use
|
178
|
+
@vendor_options[:bridgesupport_cflags] ||= ''
|
179
|
+
@vendor_options[:bridgesupport_cflags] << " #{header_search_path} #{framework_search_path}"
|
180
|
+
|
181
|
+
frameworks = ldflags.scan(/-framework\s+"?([^\s"]+)"?/).map { |m| m[0] }
|
182
|
+
pods_frameworks(frameworks)
|
225
183
|
|
226
184
|
@config.weak_frameworks.concat(ldflags.scan(/-weak_framework\s+([^\s]+)/).map { |m| m[0] })
|
227
185
|
@config.weak_frameworks.uniq!
|
228
186
|
|
229
187
|
@config.vendor_project(PODS_ROOT, :xcode, {
|
230
188
|
:target => "Pods-#{TARGET_NAME}",
|
231
|
-
:headers_dir => "
|
189
|
+
:headers_dir => "Headers/Public",
|
232
190
|
:products => pods_libs.map { |lib_name| "lib#{lib_name}.a" },
|
233
|
-
:allow_empty_products =>
|
191
|
+
:allow_empty_products => pods_libs.empty?,
|
234
192
|
}.merge(@vendor_options))
|
235
193
|
end
|
236
194
|
end
|
@@ -255,6 +213,11 @@ module Motion::Project
|
|
255
213
|
@podfile.post_install(&block)
|
256
214
|
end
|
257
215
|
|
216
|
+
def use_frameworks!(flag = true)
|
217
|
+
@use_frameworks = flag
|
218
|
+
@podfile.use_frameworks!(flag)
|
219
|
+
end
|
220
|
+
|
258
221
|
# Installation
|
259
222
|
#-------------------------------------------------------------------------#
|
260
223
|
|
@@ -271,6 +234,8 @@ module Motion::Project
|
|
271
234
|
# installed pods changes.
|
272
235
|
#
|
273
236
|
def install!(update)
|
237
|
+
FileUtils.rm_rf(resources_dir)
|
238
|
+
|
274
239
|
pods_installer.update = update
|
275
240
|
pods_installer.installation_options.integrate_targets = false
|
276
241
|
pods_installer.install!
|
@@ -281,17 +246,24 @@ module Motion::Project
|
|
281
246
|
# TODO this probably breaks in cases like resource bundles etc, need to test.
|
282
247
|
#
|
283
248
|
def install_resources
|
284
|
-
FileUtils.rm_rf(resources_dir)
|
285
249
|
FileUtils.mkdir_p(resources_dir)
|
250
|
+
|
251
|
+
installed_resources = []
|
286
252
|
resources.each do |file|
|
287
253
|
begin
|
288
|
-
|
254
|
+
dst = resources_dir + file.basename
|
255
|
+
if file.exist? && !dst.exist?
|
256
|
+
FileUtils.cp_r(file, resources_dir)
|
257
|
+
installed_resources << dst
|
258
|
+
end
|
289
259
|
rescue ArgumentError => exc
|
290
260
|
unless exc.message =~ /same file/
|
291
261
|
raise
|
292
262
|
end
|
293
263
|
end
|
294
264
|
end
|
265
|
+
|
266
|
+
installed_resources
|
295
267
|
end
|
296
268
|
|
297
269
|
PUBLIC_HEADERS_ROOT = File.join(PODS_ROOT, 'Headers/Public')
|
@@ -331,8 +303,11 @@ module Motion::Project
|
|
331
303
|
end
|
332
304
|
|
333
305
|
def pods_xcconfig
|
334
|
-
|
335
|
-
|
306
|
+
@pods_xcconfig ||= begin
|
307
|
+
path = Pathname.new(@config.project_dir) + SUPPORT_FILES + "Pods-#{TARGET_NAME}.release.xcconfig"
|
308
|
+
Xcodeproj::Config.new(path) if path.exist?
|
309
|
+
end
|
310
|
+
@pods_xcconfig
|
336
311
|
end
|
337
312
|
|
338
313
|
def pods_xcconfig_hash
|
@@ -341,6 +316,185 @@ module Motion::Project
|
|
341
316
|
end
|
342
317
|
end
|
343
318
|
|
319
|
+
def pods_libraries
|
320
|
+
xcconfig = pods_xcconfig_hash
|
321
|
+
ldflags = xcconfig['OTHER_LDFLAGS']
|
322
|
+
|
323
|
+
# Get the name of all static libraries that come pre-built with pods
|
324
|
+
pre_built_static_libs = lib_search_paths.map do |path|
|
325
|
+
Dir[File.join(path, '**/*.a')].map { |f| File.basename(f) }
|
326
|
+
end.flatten
|
327
|
+
|
328
|
+
pods_libs = []
|
329
|
+
@config.libs.concat(ldflags.scan(/-l"?([^\s"]+)"?/).map { |m|
|
330
|
+
lib_name = m[0]
|
331
|
+
next if lib_name.nil?
|
332
|
+
if lib_name.start_with?('Pods-')
|
333
|
+
# For CocoaPods 0.37.x or below. This block is marked as deprecated.
|
334
|
+
pods_libs << lib_name
|
335
|
+
nil
|
336
|
+
elsif pre_built_static_libs.include?("lib#{lib_name}.a")
|
337
|
+
"#{lib_search_path_flags} -ObjC -l#{lib_name}"
|
338
|
+
elsif File.exist?("/usr/lib/lib#{lib_name}.dylib")
|
339
|
+
"/usr/lib/lib#{lib_name}.dylib"
|
340
|
+
else
|
341
|
+
pods_libs << lib_name
|
342
|
+
nil
|
343
|
+
end
|
344
|
+
}.compact)
|
345
|
+
@config.libs.uniq!
|
346
|
+
|
347
|
+
pods_libs
|
348
|
+
end
|
349
|
+
|
350
|
+
def pods_frameworks(frameworks)
|
351
|
+
frameworks = frameworks.dup
|
352
|
+
if installed_frameworks[:pre_built]
|
353
|
+
installed_frameworks[:pre_built].each do |pre_built|
|
354
|
+
frameworks.delete(File.basename(pre_built, ".framework"))
|
355
|
+
end
|
356
|
+
end
|
357
|
+
|
358
|
+
static_frameworks = []
|
359
|
+
case @config.deploy_platform
|
360
|
+
when 'MacOSX'
|
361
|
+
@config.framework_search_paths.concat(framework_search_paths)
|
362
|
+
@config.framework_search_paths.uniq!
|
363
|
+
framework_search_paths.each do |framework_search_path|
|
364
|
+
frameworks.reject! do |framework|
|
365
|
+
path = File.join(framework_search_path, "#{framework}.framework")
|
366
|
+
if File.exist?(path)
|
367
|
+
@config.embedded_frameworks << path
|
368
|
+
@config.embedded_frameworks.uniq!
|
369
|
+
true
|
370
|
+
else
|
371
|
+
false
|
372
|
+
end
|
373
|
+
end
|
374
|
+
end
|
375
|
+
when 'iPhoneOS', 'AppleTVOS', 'WatchOS'
|
376
|
+
# If we would really specify these as ‘frameworks’ then the linker
|
377
|
+
# would not link the archive into the application, because it does not
|
378
|
+
# see any references to any of the symbols in the archive. Treating it
|
379
|
+
# as a static library (which it is) with `-ObjC` fixes this.
|
380
|
+
#
|
381
|
+
framework_search_paths.each do |framework_search_path|
|
382
|
+
frameworks.reject! do |framework|
|
383
|
+
path = File.join(framework_search_path, "#{framework}.framework")
|
384
|
+
if File.exist?(path)
|
385
|
+
@config.libs << "-ObjC '#{File.join(path, framework)}'"
|
386
|
+
@config.libs.uniq!
|
387
|
+
static_frameworks << framework
|
388
|
+
true
|
389
|
+
else
|
390
|
+
false
|
391
|
+
end
|
392
|
+
end
|
393
|
+
end
|
394
|
+
end
|
395
|
+
|
396
|
+
@config.frameworks.concat(frameworks)
|
397
|
+
@config.frameworks.uniq!
|
398
|
+
|
399
|
+
static_frameworks
|
400
|
+
end
|
401
|
+
|
402
|
+
def lib_search_path_flags
|
403
|
+
lib_search_paths
|
404
|
+
@lib_search_path_flags
|
405
|
+
end
|
406
|
+
|
407
|
+
def lib_search_paths
|
408
|
+
@lib_search_paths ||= begin
|
409
|
+
xcconfig = pods_xcconfig_hash
|
410
|
+
@lib_search_path_flags = xcconfig['LIBRARY_SEARCH_PATHS'] || ""
|
411
|
+
|
412
|
+
paths = []
|
413
|
+
@lib_search_path_flags = @lib_search_path_flags.split(/\s/).map do |path|
|
414
|
+
if path =~ /(\$\(inherited\))|(\$\{inherited\})|(\$CONFIGURATION_BUILD_DIR)|(\$PODS_CONFIGURATION_BUILD_DIR)/
|
415
|
+
nil
|
416
|
+
else
|
417
|
+
path = path.gsub(/(\$\(PODS_ROOT\))|(\$\{PODS_ROOT\})/, File.join(@config.project_dir, PODS_ROOT))
|
418
|
+
paths << path.gsub('"', '')
|
419
|
+
end
|
420
|
+
end.compact.join(' ')
|
421
|
+
paths
|
422
|
+
end
|
423
|
+
|
424
|
+
@lib_search_paths
|
425
|
+
end
|
426
|
+
|
427
|
+
def framework_search_paths
|
428
|
+
@framework_search_paths ||= begin
|
429
|
+
xcconfig = pods_xcconfig_hash
|
430
|
+
|
431
|
+
paths = []
|
432
|
+
if search_paths = xcconfig['FRAMEWORK_SEARCH_PATHS']
|
433
|
+
search_paths = search_paths.strip
|
434
|
+
unless search_paths.empty?
|
435
|
+
search_paths.scan(/"([^"]+)"/) do |search_path|
|
436
|
+
path = search_path.first.gsub!(/(\$\(PODS_ROOT\))|(\$\{PODS_ROOT\})/, "#{@config.project_dir}/#{PODS_ROOT}")
|
437
|
+
paths << path if path
|
438
|
+
end
|
439
|
+
# If we couldn't parse any search paths, then presumably nothing was properly quoted, so
|
440
|
+
# fallback to just assuming the whole value is one path.
|
441
|
+
if paths.empty?
|
442
|
+
path = search_paths.gsub!(/(\$\(PODS_ROOT\))|(\$\{PODS_ROOT\})/, "#{@config.project_dir}/#{PODS_ROOT}")
|
443
|
+
paths << path if path
|
444
|
+
end
|
445
|
+
end
|
446
|
+
end
|
447
|
+
paths
|
448
|
+
end
|
449
|
+
|
450
|
+
@framework_search_paths
|
451
|
+
end
|
452
|
+
|
453
|
+
def framework_search_path
|
454
|
+
framework_search_paths.map { |p| "-F'#{File.expand_path(File.join(p, '..'))}'" }.join(' ')
|
455
|
+
end
|
456
|
+
|
457
|
+
def header_search_paths
|
458
|
+
@header_search_paths ||= begin
|
459
|
+
xcconfig = pods_xcconfig_hash
|
460
|
+
|
461
|
+
paths = []
|
462
|
+
if search_paths = xcconfig['HEADER_SEARCH_PATHS']
|
463
|
+
search_paths = search_paths.strip
|
464
|
+
unless search_paths.empty?
|
465
|
+
search_paths.scan(/"([^"]+)"/) do |search_path|
|
466
|
+
path = search_path.first.gsub!(/(\$\(PODS_ROOT\))|(\$\{PODS_ROOT\})/, "#{@config.project_dir}/#{PODS_ROOT}")
|
467
|
+
paths << File.expand_path(path) if path
|
468
|
+
end
|
469
|
+
# If we couldn't parse any search paths, then presumably nothing was properly quoted, so
|
470
|
+
# fallback to just assuming the whole value is one path.
|
471
|
+
if paths.empty?
|
472
|
+
path = search_paths.gsub!(/(\$\(PODS_ROOT\))|(\$\{PODS_ROOT\})/, "#{@config.project_dir}/#{PODS_ROOT}")
|
473
|
+
paths << File.expand_path(path) if path
|
474
|
+
end
|
475
|
+
end
|
476
|
+
end
|
477
|
+
paths
|
478
|
+
end
|
479
|
+
|
480
|
+
@header_search_paths
|
481
|
+
end
|
482
|
+
|
483
|
+
def header_search_path
|
484
|
+
header_search_paths.map { |p| "-I'#{p}'" }.join(' ')
|
485
|
+
end
|
486
|
+
|
487
|
+
def static_frameworks_paths(frameworks)
|
488
|
+
paths = []
|
489
|
+
framework_search_paths.each do |framework_search_path|
|
490
|
+
paths += Dir.glob("#{framework_search_path}/*.framework")
|
491
|
+
end
|
492
|
+
paths.keep_if { |path|
|
493
|
+
frameworks.include?(File.basename(path, ".framework"))
|
494
|
+
}
|
495
|
+
paths
|
496
|
+
end
|
497
|
+
|
344
498
|
# Do not copy `.framework` bundles, these should be handled through RM's
|
345
499
|
# `embedded_frameworks` config attribute.
|
346
500
|
#
|
@@ -350,7 +504,9 @@ module Motion::Project
|
|
350
504
|
f.each_line do |line|
|
351
505
|
if matched = line.match(/install_resource\s+(.*)/)
|
352
506
|
path = (matched[1].strip)[1..-2]
|
353
|
-
path.
|
507
|
+
if path.include?("$PODS_CONFIGURATION_BUILD_DIR")
|
508
|
+
path = File.join(".build", File.basename(path))
|
509
|
+
end
|
354
510
|
unless File.extname(path) == '.framework'
|
355
511
|
resources << Pathname.new(@config.project_dir) + PODS_ROOT + path
|
356
512
|
end
|
@@ -363,12 +519,42 @@ module Motion::Project
|
|
363
519
|
def resources_dir
|
364
520
|
Pathname.new(@config.project_dir) + PODS_ROOT + 'Resources'
|
365
521
|
end
|
522
|
+
|
523
|
+
def installed_frameworks
|
524
|
+
return @installed_frameworks if @installed_frameworks
|
525
|
+
|
526
|
+
@installed_frameworks = {}
|
527
|
+
path = Pathname.new(@config.project_dir) + SUPPORT_FILES + "Pods-#{TARGET_NAME}-frameworks.sh"
|
528
|
+
return @installed_frameworks unless path.exist?
|
529
|
+
|
530
|
+
@installed_frameworks[:pre_built] = []
|
531
|
+
@installed_frameworks[:build] = []
|
532
|
+
|
533
|
+
File.open(path) { |f|
|
534
|
+
f.each_line do |line|
|
535
|
+
if matched = line.match(/install_framework\s+(.*)/)
|
536
|
+
path = (matched[1].strip)[1..-2]
|
537
|
+
if path.include?('${PODS_ROOT}')
|
538
|
+
path = path.sub('${PODS_ROOT}', PODS_ROOT)
|
539
|
+
@installed_frameworks[:pre_built] << File.join(@config.project_dir, path)
|
540
|
+
@installed_frameworks[:pre_built].uniq!
|
541
|
+
elsif path.include?('$BUILT_PRODUCTS_DIR')
|
542
|
+
path = path.sub('$BUILT_PRODUCTS_DIR', "#{PODS_ROOT}/.build")
|
543
|
+
@installed_frameworks[:build] << File.join(@config.project_dir, path)
|
544
|
+
@installed_frameworks[:build].uniq!
|
545
|
+
end
|
546
|
+
end
|
547
|
+
end
|
548
|
+
}
|
549
|
+
@installed_frameworks
|
550
|
+
end
|
551
|
+
|
366
552
|
end
|
367
553
|
end
|
368
554
|
|
369
555
|
namespace :pod do
|
370
556
|
task :update_spec_repos do
|
371
|
-
$stderr.puts '[!] If you need to update CocoaPods
|
557
|
+
$stderr.puts '[!] If you need to update CocoaPods repository to install newer libraries, please run "pod repo update" command before.'
|
372
558
|
end
|
373
559
|
|
374
560
|
desc "Download and integrate newly added pods"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: motion-cocoapods
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Laurent Sansonetti
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-04-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cocoapods
|
@@ -38,7 +38,7 @@ files:
|
|
38
38
|
- lib/motion/project/version.rb
|
39
39
|
homepage: http://www.rubymotion.com
|
40
40
|
licenses:
|
41
|
-
-
|
41
|
+
- BSD-2-Clause
|
42
42
|
metadata: {}
|
43
43
|
post_install_message:
|
44
44
|
rdoc_options: []
|
@@ -56,7 +56,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
56
56
|
version: '0'
|
57
57
|
requirements: []
|
58
58
|
rubyforge_project:
|
59
|
-
rubygems_version: 2.
|
59
|
+
rubygems_version: 2.6.11
|
60
60
|
signing_key:
|
61
61
|
specification_version: 4
|
62
62
|
summary: CocoaPods integration for RubyMotion projects
|