cocoapods 0.37.0 → 0.37.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +42 -0
- data/lib/cocoapods/command/outdated.rb +2 -2
- data/lib/cocoapods/config.rb +15 -0
- data/lib/cocoapods/downloader.rb +82 -7
- data/lib/cocoapods/downloader/cache.rb +11 -50
- data/lib/cocoapods/executable.rb +1 -1
- data/lib/cocoapods/gem_version.rb +1 -1
- data/lib/cocoapods/installer.rb +3 -1
- data/lib/cocoapods/installer/pod_source_installer.rb +5 -2
- data/lib/cocoapods/installer/target_installer/pod_target_installer.rb +10 -2
- data/lib/cocoapods/installer/user_project_integrator/target_integrator.rb +9 -1
- data/lib/cocoapods/sandbox/file_accessor.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b26721da5616743033e4f4da36b3513e73a8d364
|
4
|
+
data.tar.gz: c4cbc740b6362f10186b1dd194e6f7177eff6bf1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 96968927ffc9bc4f081a2c617815f61209612d7615960ffa3e24bf0d65edd1cf43425fefbb94643466232ec8a311597ac65a5cc37e4ecff343e8bb02a1c3d1c9
|
7
|
+
data.tar.gz: 8c729bea9a3b519050522b945107d67623e35e45d6e96059f40c7ed7344b29031733f8a08e384d540e9c0215a1665ed0596805d9601bd8be30ddf5c8da616e8d
|
data/CHANGELOG.md
CHANGED
@@ -4,8 +4,50 @@ To install or update CocoaPods see this [guide](http://docs.cocoapods.org/guides
|
|
4
4
|
|
5
5
|
To install release candidates run `[sudo] gem install cocoapods --pre`
|
6
6
|
|
7
|
+
## 0.37.1
|
8
|
+
|
9
|
+
##### Bug Fixes
|
10
|
+
|
11
|
+
* [Cache] Fixes a bug that caused that a pod, which was cached once is not updated
|
12
|
+
correctly when needed e.g. for `pod spec lint`.
|
13
|
+
[Marius Rackwitz](https://github.com/mrackwitz)
|
14
|
+
[#3498](https://github.com/CocoaPods/CocoaPods/issues/3498)
|
15
|
+
|
16
|
+
* Only add the "Embed Pods Frameworks" script for application and unit test targets.
|
17
|
+
[Marius Rackwitz](https://github.com/mrackwitz)
|
18
|
+
[#3440](https://github.com/CocoaPods/CocoaPods/issues/3440)
|
19
|
+
|
20
|
+
* C++ source files with `.cc`, `.cxx` and `.c++` extensions now have their
|
21
|
+
compiler flags set correctly.
|
22
|
+
[Chongyu Zhu](https://github.com/lembacon)
|
23
|
+
[Kyle Fuller](https://github.com/kylef)
|
24
|
+
|
25
|
+
* Handle broken symlinks when installing a Pod.
|
26
|
+
[Daniel Barden](https://github.com/dbarden)
|
27
|
+
[#3515](https://github.com/cocoapods/cocoapods/issues/3515)
|
28
|
+
|
29
|
+
* Just remove write permissions from files, so executables are unaffected.
|
30
|
+
[Mason Glidden](https://github.com/mglidden)
|
31
|
+
[#3501](https://github.com/CocoaPods/CocoaPods/issues/3501)
|
32
|
+
|
33
|
+
* Always copy the generated `Podfile.lock` to `Pods/Manifest.lock` so they are
|
34
|
+
guaranteed to match, character-by-character, after installation.
|
35
|
+
[Samuel Giddins](https://github.com/segiddins)
|
36
|
+
[#3502](https://github.com/CocoaPods/CocoaPods/issues/3502)
|
37
|
+
|
38
|
+
* Don't generate an umbrella header when a custom module map is specified. This
|
39
|
+
avoids an incomplete module map warning.
|
40
|
+
[Samuel Giddins](https://github.com/segiddins)
|
41
|
+
|
42
|
+
* Actually allow skipping the download cache by downloading directly to the
|
43
|
+
download target when requested.
|
44
|
+
[Samuel Giddins](https://github.com/segiddins)
|
45
|
+
|
46
|
+
|
7
47
|
## 0.37.0
|
8
48
|
|
49
|
+
For more details, see 📝 [CocoaPods 0.37](http://blog.cocoapods.org/CocoaPods-0.37/) on our blog.
|
50
|
+
|
9
51
|
##### Bug Fixes
|
10
52
|
|
11
53
|
* Print the UTF-8 warning to STDERR.
|
@@ -24,9 +24,9 @@ module Pod
|
|
24
24
|
#
|
25
25
|
def run
|
26
26
|
if updates.empty?
|
27
|
-
UI.puts 'No updates are available.'.yellow
|
27
|
+
UI.puts 'No pod updates are available.'.yellow
|
28
28
|
else
|
29
|
-
UI.section 'The following updates are available:' do
|
29
|
+
UI.section 'The following pod updates are available:' do
|
30
30
|
updates.each do |(name, from_version, matching_version, to_version)|
|
31
31
|
UI.puts "- #{name} #{from_version} -> #{matching_version} " \
|
32
32
|
"(latest version #{to_version})"
|
data/lib/cocoapods/config.rb
CHANGED
@@ -24,6 +24,21 @@ module Pod
|
|
24
24
|
:cache_root => Pathname.new(Dir.home) + 'Library/Caches/CocoaPods',
|
25
25
|
}
|
26
26
|
|
27
|
+
# Applies the given changes to the config for the duration of the given
|
28
|
+
# block.
|
29
|
+
#
|
30
|
+
def with_changes(changes)
|
31
|
+
old = {}
|
32
|
+
changes.keys.each do |key|
|
33
|
+
key = key.to_sym
|
34
|
+
old[key] = send(key) if respond_to?(key)
|
35
|
+
end
|
36
|
+
configure_with(changes)
|
37
|
+
yield if block_given?
|
38
|
+
ensure
|
39
|
+
configure_with(old)
|
40
|
+
end
|
41
|
+
|
27
42
|
public
|
28
43
|
|
29
44
|
#-------------------------------------------------------------------------#
|
data/lib/cocoapods/downloader.rb
CHANGED
@@ -27,22 +27,97 @@ module Pod
|
|
27
27
|
def self.download(
|
28
28
|
request,
|
29
29
|
target,
|
30
|
-
cache_path: !Config.instance.skip_download_cache && Config.instance.cache_root + 'Pods'
|
30
|
+
cache_path: !Config.instance.skip_download_cache && Config.instance.clean? && Config.instance.cache_root + 'Pods'
|
31
31
|
)
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
32
|
+
if cache_path
|
33
|
+
cache = Cache.new(cache_path)
|
34
|
+
result = cache.download_pod(request)
|
35
|
+
else
|
36
|
+
result, _ = download_request(request, target)
|
37
|
+
end
|
38
|
+
|
39
|
+
if target && result.location && target != result.location
|
36
40
|
UI.message "Copying #{request.name} from `#{result.location}` to #{UI.path target}", '> ' do
|
37
41
|
FileUtils.rm_rf target
|
38
42
|
FileUtils.cp_r(result.location, target)
|
39
43
|
end
|
40
44
|
end
|
41
45
|
result
|
42
|
-
ensure
|
43
|
-
FileUtils.rm_r cache_path if tmp_cache
|
44
46
|
end
|
45
47
|
|
48
|
+
# Performs the download from the given `request` to the given `target` location.
|
49
|
+
#
|
50
|
+
# @return [Response, Hash<String,Specification>]
|
51
|
+
# The download response for this download, and the specifications
|
52
|
+
# for this download grouped by name.
|
53
|
+
#
|
54
|
+
# @param [Request] request
|
55
|
+
# the request that describes this pod download.
|
56
|
+
#
|
57
|
+
# @param [Pathname,Nil] target
|
58
|
+
# the location to which this pod should be downloaded. If `nil`,
|
59
|
+
# then the pod will only be cached.
|
60
|
+
#
|
61
|
+
def self.download_request(request, target)
|
62
|
+
result = Response.new
|
63
|
+
result.checkout_options = download_source(request.name, target, request.params, request.head?)
|
64
|
+
result.location = target
|
65
|
+
|
66
|
+
if request.released_pod?
|
67
|
+
result.spec = request.spec
|
68
|
+
podspecs = { request.name => request.spec }
|
69
|
+
else
|
70
|
+
podspecs = Sandbox::PodspecFinder.new(target).podspecs
|
71
|
+
podspecs[request.name] = request.spec if request.spec
|
72
|
+
podspecs.each do |name, spec|
|
73
|
+
if request.name == name
|
74
|
+
result.spec = spec
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
[result, podspecs]
|
80
|
+
end
|
81
|
+
|
82
|
+
private
|
83
|
+
|
84
|
+
# Downloads a pod with the given `name` and `params` to `target`.
|
85
|
+
#
|
86
|
+
# @param [String] name
|
87
|
+
#
|
88
|
+
# @param [Pathname] target
|
89
|
+
#
|
90
|
+
# @param [Hash<Symbol,String>] params
|
91
|
+
#
|
92
|
+
# @param [Boolean] head
|
93
|
+
#
|
94
|
+
# @return [Hash] The checkout options required to re-download this exact
|
95
|
+
# same source.
|
96
|
+
#
|
97
|
+
def self.download_source(name, target, params, head)
|
98
|
+
FileUtils.rm_rf(target)
|
99
|
+
downloader = Downloader.for_target(target, params)
|
100
|
+
if head
|
101
|
+
unless downloader.head_supported?
|
102
|
+
raise Informative, "The pod '#{name}' does not " \
|
103
|
+
"support the :head option, as it uses a #{downloader.name} " \
|
104
|
+
'source. Remove that option to use this pod.'
|
105
|
+
end
|
106
|
+
downloader.download_head
|
107
|
+
else
|
108
|
+
downloader.download
|
109
|
+
end
|
110
|
+
target.mkpath
|
111
|
+
|
112
|
+
if downloader.options_specific? && !head
|
113
|
+
params
|
114
|
+
else
|
115
|
+
downloader.checkout_options
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
public
|
120
|
+
|
46
121
|
class DownloaderError; include CLAide::InformativeError; end
|
47
122
|
|
48
123
|
class Base
|
@@ -99,25 +99,14 @@ module Pod
|
|
99
99
|
#
|
100
100
|
def uncached_pod(request)
|
101
101
|
in_tmpdir do |target|
|
102
|
-
result =
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
else
|
111
|
-
podspecs = Sandbox::PodspecFinder.new(target).podspecs
|
112
|
-
podspecs[request.name] = request.spec if request.spec
|
113
|
-
podspecs.each do |name, spec|
|
114
|
-
destination = path_for_pod(request, :name => name, :params => result.checkout_options)
|
115
|
-
copy_and_clean(target, destination, spec)
|
116
|
-
write_spec(spec, path_for_spec(request, :name => name, :params => result.checkout_options))
|
117
|
-
if request.name == name
|
118
|
-
result.location = destination
|
119
|
-
result.spec = spec
|
120
|
-
end
|
102
|
+
result, podspecs = download(request, target)
|
103
|
+
|
104
|
+
podspecs.each do |name, spec|
|
105
|
+
destination = path_for_pod(request, :name => name, :params => result.checkout_options)
|
106
|
+
copy_and_clean(target, destination, spec)
|
107
|
+
write_spec(spec, path_for_spec(request, :name => name, :params => result.checkout_options))
|
108
|
+
if request.name == name
|
109
|
+
result.location = destination
|
121
110
|
end
|
122
111
|
end
|
123
112
|
|
@@ -125,37 +114,8 @@ module Pod
|
|
125
114
|
end
|
126
115
|
end
|
127
116
|
|
128
|
-
|
129
|
-
|
130
|
-
# @param [String] name
|
131
|
-
#
|
132
|
-
# @param [Pathname] target
|
133
|
-
#
|
134
|
-
# @param [Hash<Symbol,String>] params
|
135
|
-
#
|
136
|
-
# @param [Boolean] head
|
137
|
-
#
|
138
|
-
# @return [Hash] The checkout options required to re-download this exact
|
139
|
-
# same source.
|
140
|
-
#
|
141
|
-
def download(name, target, params, head)
|
142
|
-
downloader = Downloader.for_target(target, params)
|
143
|
-
if head
|
144
|
-
unless downloader.head_supported?
|
145
|
-
raise Informative, "The pod '#{name}' does not " \
|
146
|
-
"support the :head option, as it uses a #{downloader.name} " \
|
147
|
-
'source. Remove that option to use this pod.'
|
148
|
-
end
|
149
|
-
downloader.download_head
|
150
|
-
else
|
151
|
-
downloader.download
|
152
|
-
end
|
153
|
-
|
154
|
-
if downloader.options_specific? && !head
|
155
|
-
params
|
156
|
-
else
|
157
|
-
downloader.checkout_options
|
158
|
-
end
|
117
|
+
def download(request, target)
|
118
|
+
Downloader.download_request(request, target)
|
159
119
|
end
|
160
120
|
|
161
121
|
# Performs the given block inside a temporary directory,
|
@@ -184,6 +144,7 @@ module Pod
|
|
184
144
|
def copy_and_clean(source, destination, spec)
|
185
145
|
specs_by_platform = group_subspecs_by_platform(spec)
|
186
146
|
destination.parent.mkpath
|
147
|
+
FileUtils.rm_rf(destination)
|
187
148
|
FileUtils.cp_r(source, destination)
|
188
149
|
Pod::Installer::PodSourcePreparer.new(spec, destination).prepare!
|
189
150
|
Sandbox::PodDirCleaner.new(destination, specs_by_platform).clean!
|
data/lib/cocoapods/executable.rb
CHANGED
@@ -54,7 +54,7 @@ module Pod
|
|
54
54
|
require 'shellwords'
|
55
55
|
|
56
56
|
command = command.map(&:to_s)
|
57
|
-
full_command = "#{bin
|
57
|
+
full_command = "#{bin} #{command.join(' ')}"
|
58
58
|
|
59
59
|
if Config.instance.verbose?
|
60
60
|
UI.message("$ #{full_command}")
|
data/lib/cocoapods/installer.rb
CHANGED
@@ -605,7 +605,9 @@ module Pod
|
|
605
605
|
end
|
606
606
|
|
607
607
|
UI.message "- Writing Manifest in #{UI.path sandbox.manifest_path}" do
|
608
|
-
|
608
|
+
sandbox.manifest_path.open('w') do |f|
|
609
|
+
f.write config.lockfile_path.read
|
610
|
+
end
|
609
611
|
end
|
610
612
|
end
|
611
613
|
|
@@ -103,8 +103,11 @@ module Pod
|
|
103
103
|
# We don't want to lock diretories, as that forces you to override
|
104
104
|
# those permissions if you decide to delete the Pods folder.
|
105
105
|
Dir.glob(root + '**/*').each do |file|
|
106
|
-
|
107
|
-
|
106
|
+
if File.file?(file)
|
107
|
+
# Only remove write permission, since some pods (like Crashlytics)
|
108
|
+
# have executable files.
|
109
|
+
new_permissions = File.stat(file).mode & ~0222
|
110
|
+
File.chmod(new_permissions, file)
|
108
111
|
end
|
109
112
|
end
|
110
113
|
end
|
@@ -256,10 +256,10 @@ module Pod
|
|
256
256
|
end
|
257
257
|
|
258
258
|
def create_module_map
|
259
|
-
return super unless
|
259
|
+
return super unless custom_module_map
|
260
260
|
path = target.module_map_path
|
261
261
|
UI.message "- Copying module map file to #{UI.path(path)}" do
|
262
|
-
FileUtils.cp(
|
262
|
+
FileUtils.cp(custom_module_map, path)
|
263
263
|
add_file_to_support_group(path)
|
264
264
|
|
265
265
|
native_target.build_configurations.each do |c|
|
@@ -269,6 +269,14 @@ module Pod
|
|
269
269
|
end
|
270
270
|
end
|
271
271
|
|
272
|
+
def create_umbrella_header
|
273
|
+
return super unless custom_module_map
|
274
|
+
end
|
275
|
+
|
276
|
+
def custom_module_map
|
277
|
+
@custom_module_map ||= target.file_accessors.first.module_map
|
278
|
+
end
|
279
|
+
|
272
280
|
#-----------------------------------------------------------------------#
|
273
281
|
end
|
274
282
|
end
|
@@ -9,6 +9,11 @@ module Pod
|
|
9
9
|
class TargetIntegrator
|
10
10
|
autoload :XCConfigIntegrator, 'cocoapods/installer/user_project_integrator/target_integrator/xcconfig_integrator'
|
11
11
|
|
12
|
+
# @return [Array<Symbol>] the symbol types, which require that the pod
|
13
|
+
# frameworks are embedded in the output directory / product bundle.
|
14
|
+
#
|
15
|
+
EMBED_FRAMEWORK_TARGET_TYPES = [:application, :unit_test_bundle].freeze
|
16
|
+
|
12
17
|
# @return [Target] the target that should be integrated.
|
13
18
|
#
|
14
19
|
attr_reader :target
|
@@ -136,7 +141,10 @@ module Pod
|
|
136
141
|
#
|
137
142
|
def add_embed_frameworks_script_phase
|
138
143
|
phase_name = 'Embed Pods Frameworks'
|
139
|
-
native_targets_to_integrate.
|
144
|
+
targets_to_embed_in = native_targets_to_integrate.select do |target|
|
145
|
+
EMBED_FRAMEWORK_TARGET_TYPES.include?(target.symbol_type)
|
146
|
+
end
|
147
|
+
targets_to_embed_in.each do |native_target|
|
140
148
|
embed_build_phase = native_target.shell_script_build_phases.find { |bp| bp.name == phase_name }
|
141
149
|
unless embed_build_phase.present?
|
142
150
|
UI.message("Adding Build Phase '#{phase_name}' to project.")
|
@@ -8,7 +8,7 @@ module Pod
|
|
8
8
|
#
|
9
9
|
class FileAccessor
|
10
10
|
HEADER_EXTENSIONS = Xcodeproj::Constants::HEADER_FILES_EXTENSIONS
|
11
|
-
SOURCE_FILE_EXTENSIONS = (%w(.m .mm .c .cpp .swift) + HEADER_EXTENSIONS).uniq.freeze
|
11
|
+
SOURCE_FILE_EXTENSIONS = (%w(.m .mm .c .cc .cxx .cpp .c++ .swift) + HEADER_EXTENSIONS).uniq.freeze
|
12
12
|
|
13
13
|
GLOB_PATTERNS = {
|
14
14
|
:readme => 'readme{*,.*}'.freeze,
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.37.
|
4
|
+
version: 0.37.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eloy Duran
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2015-05-
|
14
|
+
date: 2015-05-06 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: cocoapods-core
|
@@ -19,14 +19,14 @@ dependencies:
|
|
19
19
|
requirements:
|
20
20
|
- - '='
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.37.
|
22
|
+
version: 0.37.1
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - '='
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.37.
|
29
|
+
version: 0.37.1
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: claide
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -89,14 +89,14 @@ dependencies:
|
|
89
89
|
requirements:
|
90
90
|
- - ~>
|
91
91
|
- !ruby/object:Gem::Version
|
92
|
-
version: 0.4.
|
92
|
+
version: 0.4.4
|
93
93
|
type: :runtime
|
94
94
|
prerelease: false
|
95
95
|
version_requirements: !ruby/object:Gem::Requirement
|
96
96
|
requirements:
|
97
97
|
- - ~>
|
98
98
|
- !ruby/object:Gem::Version
|
99
|
-
version: 0.4.
|
99
|
+
version: 0.4.4
|
100
100
|
- !ruby/object:Gem::Dependency
|
101
101
|
name: cocoapods-trunk
|
102
102
|
requirement: !ruby/object:Gem::Requirement
|