motion-cocoapods 1.5.0 → 1.6.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 +22 -7
- data/lib/motion/project/cocoapods.rb +56 -25
- 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: c080d5b0ed0340f6aef99a31c114007c1680963d
|
4
|
+
data.tar.gz: 3474078ff4ad74cf0acd84dce6c9e6c0ab218f7a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 01f8d63b9a7bf46edc207e225a408d3c327a641bd8225025ddd3873fd62793fc8d8426522c76ca95fffe0abdd4854682d94c6629ea0c09938cc3e8cf28563a5d
|
7
|
+
data.tar.gz: b98d5b10ec810c59a8b93746d0d3cc7b1ef19801f1038bfa6a97b30cc44162f8d43a7057a3ce92d226169577898a3cdcd8a49fc437e0693dd6823037a5d2f9b3
|
data/README.md
CHANGED
@@ -13,7 +13,7 @@ $ [sudo] gem install motion-cocoapods
|
|
13
13
|
Or if you use Bundler:
|
14
14
|
|
15
15
|
```ruby
|
16
|
-
gem 'motion-cocoapods'
|
16
|
+
gem 'motion-cocoapods'
|
17
17
|
```
|
18
18
|
|
19
19
|
|
@@ -53,7 +53,7 @@ To tell motion-cocoapods to download your dependencies, run the following rake
|
|
53
53
|
task:
|
54
54
|
|
55
55
|
```
|
56
|
-
$ rake pod:install
|
56
|
+
$ [bundle exec] rake pod:install
|
57
57
|
```
|
58
58
|
|
59
59
|
That’s all. The build system will properly download the given pods and their
|
@@ -64,23 +64,38 @@ If the `vendor/Podfile.lock` file exists, this will be used to install specific
|
|
64
64
|
versions. To update the versions, use the following rake task:
|
65
65
|
|
66
66
|
```
|
67
|
-
$ rake pod:update
|
67
|
+
$ [bundle exec] rake pod:update
|
68
68
|
```
|
69
69
|
|
70
70
|
## Options
|
71
71
|
|
72
|
+
If necessary, you can pass `vendor_project` options to the `pods` configuration
|
73
|
+
method. These options are described [here](http://www.rubymotion.com/developer-center/guides/project-management/#_vendoring_3rd_party_libraries).
|
74
|
+
For instance, to only generate BridgeSupport metadata for a single pod, which
|
75
|
+
might be needed if a dependency that you’re not using directly is causing issues
|
76
|
+
(such as C++ headers), you can specify that like so:
|
77
|
+
|
78
|
+
```ruby
|
79
|
+
Motion::Project::App.setup do |app|
|
80
|
+
app.pods :headers_dir => 'Headers/AFNetworking' do
|
81
|
+
pod 'AFNetworking'
|
82
|
+
# ...
|
83
|
+
end
|
84
|
+
end
|
85
|
+
```
|
86
|
+
|
72
87
|
By default the output of CocoaPods doing its work is silenced. If, however, you
|
73
88
|
would like to see the output, you can set the `COCOAPODS_VERBOSE` env variable:
|
74
89
|
|
75
90
|
```
|
76
|
-
$ rake pod:install COCOAPODS_VERBOSE=1
|
91
|
+
$ [bundle exec] rake pod:install COCOAPODS_VERBOSE=1
|
77
92
|
```
|
78
93
|
|
79
94
|
As part of the install and update tasks, the specification repostories will get
|
80
95
|
updated. You can disable this with the `COCOAPODS_NO_REPO_UPDATE` env variable:
|
81
96
|
|
82
97
|
```
|
83
|
-
$ rake pod:install COCOAPODS_NO_REPO_UPDATE=1
|
98
|
+
$ [bundle exec] rake pod:install COCOAPODS_NO_REPO_UPDATE=1
|
84
99
|
```
|
85
100
|
|
86
101
|
|
@@ -91,13 +106,13 @@ $ rake pod:install COCOAPODS_NO_REPO_UPDATE=1
|
|
91
106
|
```
|
92
107
|
$ git clone git://github.com/HipByte/motion-cocoapods.git
|
93
108
|
$ cd motion-cocoapods
|
94
|
-
$ rake bootstrap
|
109
|
+
$ [bundle exec] rake bootstrap
|
95
110
|
```
|
96
111
|
|
97
112
|
2. Verify that all the tests are passing.
|
98
113
|
|
99
114
|
```
|
100
|
-
$ rake spec
|
115
|
+
$ [bundle exec] rake spec
|
101
116
|
```
|
102
117
|
|
103
118
|
3. Create your patch and send a
|
@@ -34,8 +34,8 @@ module Motion::Project
|
|
34
34
|
class Config
|
35
35
|
variable :pods
|
36
36
|
|
37
|
-
def pods(&block)
|
38
|
-
@pods ||= Motion::Project::CocoaPods.new(self)
|
37
|
+
def pods(vendor_options = {}, &block)
|
38
|
+
@pods ||= Motion::Project::CocoaPods.new(self, vendor_options)
|
39
39
|
if block
|
40
40
|
@pods.instance_eval(&block)
|
41
41
|
end
|
@@ -47,7 +47,7 @@ module Motion::Project
|
|
47
47
|
class << self
|
48
48
|
def build_with_cocoapods(platform, opts = {})
|
49
49
|
unless File.exist?(CocoaPods::PODS_ROOT)
|
50
|
-
$stderr.puts "[!] No CocoaPods dependencies found in #{CocoaPods::PODS_ROOT}, run the `rake pod:install` task."
|
50
|
+
$stderr.puts "[!] No CocoaPods dependencies found in #{CocoaPods::PODS_ROOT}, run the `[bundle exec] rake pod:install` task."
|
51
51
|
exit 1
|
52
52
|
end
|
53
53
|
build_without_cocoapods(platform, opts)
|
@@ -62,55 +62,77 @@ module Motion::Project
|
|
62
62
|
|
63
63
|
class CocoaPods
|
64
64
|
PODS_ROOT = 'vendor/Pods'
|
65
|
+
SUPPORT_FILES = File.join(PODS_ROOT, 'Target Support Files/Pods')
|
65
66
|
|
66
67
|
attr_accessor :podfile
|
67
68
|
|
68
|
-
def initialize(config)
|
69
|
+
def initialize(config, vendor_options)
|
69
70
|
@config = config
|
71
|
+
@vendor_options = vendor_options
|
70
72
|
|
71
73
|
@podfile = Pod::Podfile.new(Pathname.new(Rake.original_dir) + 'Rakefile') {}
|
72
74
|
@podfile.platform((App.respond_to?(:template) ? App.template : :ios), config.deployment_target)
|
73
75
|
cp_config.podfile = @podfile
|
74
76
|
cp_config.skip_repo_update = true
|
75
|
-
cp_config.verbose = !!ENV['COCOAPODS_VERBOSE']
|
76
77
|
cp_config.integrate_targets = false
|
77
78
|
cp_config.installation_root = Pathname.new(File.expand_path(config.project_dir)) + 'vendor'
|
78
79
|
|
80
|
+
if cp_config.verbose = !!ENV['COCOAPODS_VERBOSE']
|
81
|
+
require 'claide'
|
82
|
+
end
|
83
|
+
|
79
84
|
configure_project
|
80
85
|
end
|
81
86
|
|
82
87
|
# Adds the Pods project to the RubyMotion config as a vendored project and
|
83
88
|
#
|
84
89
|
def configure_project
|
85
|
-
@config.vendor_project(PODS_ROOT, :xcode,
|
86
|
-
:target => 'Pods',
|
87
|
-
:headers_dir => 'Headers',
|
88
|
-
:products => %w{ libPods.a }
|
89
|
-
)
|
90
|
-
|
91
90
|
@config.resources_dirs << resources_dir.to_s
|
92
91
|
|
93
92
|
# TODO replace this all once Xcodeproj has the proper xcconfig parser.
|
94
93
|
if (xcconfig = self.pods_xcconfig_hash) && ldflags = xcconfig['OTHER_LDFLAGS']
|
95
94
|
lib_search_paths = xcconfig['LIBRARY_SEARCH_PATHS'] || ""
|
96
|
-
lib_search_paths = lib_search_paths.split(
|
95
|
+
lib_search_paths = lib_search_paths.split(/\s/).map do |path|
|
97
96
|
'-L ' << path.gsub('$(PODS_ROOT)', File.join(@config.project_dir, PODS_ROOT))
|
98
97
|
end.join(' ')
|
99
98
|
|
100
|
-
|
101
|
-
|
102
|
-
|
99
|
+
# Collect the Pod products
|
100
|
+
pods_libs = []
|
101
|
+
|
102
|
+
@config.libs.concat(ldflags.scan(/-l"?([^\s"]+)"?/).map { |m|
|
103
|
+
lib_name = m[0]
|
104
|
+
next if lib_name.nil?
|
105
|
+
if lib_name.start_with?('Pods-')
|
106
|
+
pods_libs << lib_name
|
107
|
+
nil
|
108
|
+
elsif lib_search_paths.length == 0 || File.exist?("/usr/lib/lib#{lib_name}.dylib")
|
109
|
+
"/usr/lib/lib#{lib_name}.dylib"
|
103
110
|
else
|
104
|
-
"#{lib_search_paths} -ObjC -l#{
|
111
|
+
"#{lib_search_paths} -ObjC -l#{lib_name}"
|
105
112
|
end
|
106
|
-
})
|
113
|
+
}.compact)
|
107
114
|
@config.libs.uniq!
|
108
115
|
|
116
|
+
@config.vendor_project(PODS_ROOT, :xcode, {
|
117
|
+
:target => 'Pods',
|
118
|
+
:headers_dir => 'Headers/Public',
|
119
|
+
:products => pods_libs.map { |lib_name| "lib#{lib_name}.a" }
|
120
|
+
}.merge(@vendor_options))
|
121
|
+
|
109
122
|
framework_search_paths = []
|
110
|
-
if xcconfig['FRAMEWORK_SEARCH_PATHS']
|
111
|
-
|
112
|
-
|
113
|
-
|
123
|
+
if search_paths = xcconfig['FRAMEWORK_SEARCH_PATHS']
|
124
|
+
search_paths = search_paths.strip
|
125
|
+
unless search_paths.empty?
|
126
|
+
search_paths.scan(/\"([^\"]+)\"/) do |search_path|
|
127
|
+
path = search_path.first.gsub!(/(\$\(PODS_ROOT\))|(\$\{PODS_ROOT\})/, "#{@config.project_dir}/#{PODS_ROOT}")
|
128
|
+
framework_search_paths << path if path
|
129
|
+
end
|
130
|
+
# If we couldn't parse any search paths, then presumably nothing was properly quoted, so
|
131
|
+
# fallback to just assuming the whole value is one path.
|
132
|
+
if framework_search_paths.empty?
|
133
|
+
path = search_paths.gsub!(/(\$\(PODS_ROOT\))|(\$\{PODS_ROOT\})/, "#{@config.project_dir}/#{PODS_ROOT}")
|
134
|
+
framework_search_paths << path if path
|
135
|
+
end
|
114
136
|
end
|
115
137
|
end
|
116
138
|
frameworks = ldflags.scan(/-framework\s+([^\s]+)/).map { |m| m[0] }
|
@@ -122,10 +144,13 @@ module Motion::Project
|
|
122
144
|
@config.frameworks.uniq!
|
123
145
|
|
124
146
|
framework_search_paths.each do |framework_search_path|
|
125
|
-
frameworks.
|
147
|
+
frameworks.reject! do |framework|
|
126
148
|
path = File.join(framework_search_path, "#{framework}.framework")
|
127
149
|
if File.exist?(path)
|
128
150
|
@config.embedded_frameworks << path
|
151
|
+
true
|
152
|
+
else
|
153
|
+
false
|
129
154
|
end
|
130
155
|
end
|
131
156
|
end
|
@@ -136,15 +161,21 @@ module Motion::Project
|
|
136
161
|
# as a static library (which it is) with `-force_load` fixes this.
|
137
162
|
#
|
138
163
|
framework_search_paths.each do |framework_search_path|
|
139
|
-
frameworks.
|
164
|
+
frameworks.reject! do |framework|
|
140
165
|
path = File.join(framework_search_path, "#{framework}.framework")
|
141
166
|
if File.exist?(path)
|
142
167
|
@config.libs << "-force_load '#{File.join(path, framework)}'"
|
168
|
+
true
|
169
|
+
else
|
170
|
+
false
|
143
171
|
end
|
144
172
|
end
|
145
173
|
end
|
146
174
|
end
|
147
175
|
|
176
|
+
@config.frameworks.concat(frameworks)
|
177
|
+
@config.frameworks.uniq!
|
178
|
+
|
148
179
|
@config.weak_frameworks.concat(ldflags.scan(/-weak_framework\s+([^\s]+)/).map { |m| m[0] })
|
149
180
|
@config.weak_frameworks.uniq!
|
150
181
|
end
|
@@ -239,7 +270,7 @@ module Motion::Project
|
|
239
270
|
end
|
240
271
|
|
241
272
|
def pods_xcconfig
|
242
|
-
path = Pathname.new(@config.project_dir) +
|
273
|
+
path = Pathname.new(@config.project_dir) + SUPPORT_FILES + 'Pods.release.xcconfig'
|
243
274
|
Xcodeproj::Config.new(path) if path.exist?
|
244
275
|
end
|
245
276
|
|
@@ -254,7 +285,7 @@ module Motion::Project
|
|
254
285
|
#
|
255
286
|
def resources
|
256
287
|
resources = []
|
257
|
-
File.open(Pathname.new(@config.project_dir) +
|
288
|
+
File.open(Pathname.new(@config.project_dir) + SUPPORT_FILES + 'Pods-resources.sh') { |f|
|
258
289
|
f.each_line do |line|
|
259
290
|
if matched = line.match(/install_resource\s+(.*)/)
|
260
291
|
path = (matched[1].strip)[1..-2]
|
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.6.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: 2014-
|
11
|
+
date: 2014-09-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cocoapods
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: '0.34'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: '0.34'
|
27
27
|
description: motion-cocoapods allows RubyMotion projects to have access to the CocoaPods
|
28
28
|
dependency manager.
|
29
29
|
email: lrz@hipbyte.com
|