cocoapods 0.37.1 → 0.37.2
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/CHANGELOG.md +29 -0
- data/lib/cocoapods/command/outdated.rb +2 -0
- data/lib/cocoapods/command/repo/lint.rb +2 -0
- data/lib/cocoapods/command/repo/push.rb +9 -3
- data/lib/cocoapods/command/spec/edit.rb +7 -0
- data/lib/cocoapods/config.rb +12 -0
- data/lib/cocoapods/downloader/cache.rb +8 -3
- data/lib/cocoapods/downloader/request.rb +5 -0
- data/lib/cocoapods/executable.rb +9 -1
- data/lib/cocoapods/external_sources.rb +13 -0
- data/lib/cocoapods/external_sources/abstract_external_source.rb +8 -1
- data/lib/cocoapods/gem_version.rb +1 -1
- data/lib/cocoapods/generator/copy_resources_script.rb +7 -3
- data/lib/cocoapods/generator/header.rb +2 -0
- data/lib/cocoapods/generator/info_plist_file.rb +2 -0
- data/lib/cocoapods/generator/module_map.rb +5 -3
- data/lib/cocoapods/generator/prefix_header.rb +2 -0
- data/lib/cocoapods/generator/target_environment_header.rb +1 -4
- data/lib/cocoapods/generator/umbrella_header.rb +2 -0
- data/lib/cocoapods/generator/xcconfig/aggregate_xcconfig.rb +3 -1
- data/lib/cocoapods/generator/xcconfig/private_pod_xcconfig.rb +2 -0
- data/lib/cocoapods/generator/xcconfig/public_pod_xcconfig.rb +2 -0
- data/lib/cocoapods/generator/xcconfig/xcconfig_helper.rb +14 -7
- data/lib/cocoapods/hooks/installer_representation.rb +2 -0
- data/lib/cocoapods/hooks/library_representation.rb +4 -2
- data/lib/cocoapods/hooks/pod_representation.rb +6 -6
- data/lib/cocoapods/hooks_manager.rb +2 -0
- data/lib/cocoapods/installer.rb +43 -2
- data/lib/cocoapods/installer/analyzer.rb +16 -3
- data/lib/cocoapods/installer/analyzer/sandbox_analyzer.rb +3 -1
- data/lib/cocoapods/installer/file_references_installer.rb +3 -1
- data/lib/cocoapods/installer/hooks_context.rb +9 -0
- data/lib/cocoapods/installer/migrator.rb +22 -1
- data/lib/cocoapods/installer/pod_source_installer.rb +16 -8
- data/lib/cocoapods/installer/pod_source_preparer.rb +2 -0
- data/lib/cocoapods/installer/user_project_integrator.rb +4 -2
- data/lib/cocoapods/installer/user_project_integrator/target_integrator.rb +6 -2
- data/lib/cocoapods/open_uri.rb +8 -0
- data/lib/cocoapods/project.rb +3 -1
- data/lib/cocoapods/resolver.rb +10 -10
- data/lib/cocoapods/sandbox.rb +4 -0
- data/lib/cocoapods/sandbox/file_accessor.rb +3 -1
- data/lib/cocoapods/sandbox/headers_store.rb +4 -4
- data/lib/cocoapods/sandbox/path_list.rb +25 -6
- data/lib/cocoapods/sources_manager.rb +3 -1
- data/lib/cocoapods/target.rb +1 -1
- data/lib/cocoapods/target/aggregate_target.rb +8 -2
- data/lib/cocoapods/user_interface.rb +62 -0
- data/lib/cocoapods/validator.rb +6 -2
- metadata +34 -33
@@ -33,14 +33,16 @@ module Pod
|
|
33
33
|
#
|
34
34
|
attr_reader :installation_root
|
35
35
|
|
36
|
-
# @return [Array<
|
36
|
+
# @return [Array<AggregateTarget>] the targets represented in the Podfile.
|
37
37
|
#
|
38
38
|
attr_reader :targets
|
39
39
|
|
40
|
+
# Init a new UserProjectIntegrator
|
41
|
+
#
|
40
42
|
# @param [Podfile] podfile @see #podfile
|
41
43
|
# @param [Sandbox] sandbox @see #sandbox
|
42
44
|
# @param [Pathname] installation_root @see #installation_root
|
43
|
-
# @param [
|
45
|
+
# @param [Array<AggregateTarget>] targets @see #targets
|
44
46
|
#
|
45
47
|
# @todo Too many initialization arguments
|
46
48
|
#
|
@@ -14,11 +14,13 @@ module Pod
|
|
14
14
|
#
|
15
15
|
EMBED_FRAMEWORK_TARGET_TYPES = [:application, :unit_test_bundle].freeze
|
16
16
|
|
17
|
-
# @return [
|
17
|
+
# @return [AggregateTarget] the target that should be integrated.
|
18
18
|
#
|
19
19
|
attr_reader :target
|
20
20
|
|
21
|
-
#
|
21
|
+
# Init a new TargetIntegrator
|
22
|
+
#
|
23
|
+
# @param [AggregateTarget] target @see #target
|
22
24
|
#
|
23
25
|
def initialize(target)
|
24
26
|
@target = target
|
@@ -257,6 +259,8 @@ module Pod
|
|
257
259
|
# Read the project from the disk to ensure that it is up to date as
|
258
260
|
# other TargetIntegrators might have modified it.
|
259
261
|
#
|
262
|
+
# @return [Project]
|
263
|
+
#
|
260
264
|
def user_project
|
261
265
|
@user_project ||= Xcodeproj::Project.open(target.user_project_path)
|
262
266
|
end
|
data/lib/cocoapods/open_uri.rb
CHANGED
@@ -16,6 +16,14 @@ module OpenURI
|
|
16
16
|
# (RFC 2109 4.3.1, RFC 2965 3.3, RFC 2616 15.1.3)
|
17
17
|
# However this is ad hoc. It should be extensible/configurable.
|
18
18
|
#
|
19
|
+
# @param [URI::Generic] uri1
|
20
|
+
# the origin uri from where the redirect origins
|
21
|
+
#
|
22
|
+
# @param [URI::Generic] uri2
|
23
|
+
# the target uri where to where the redirect points to
|
24
|
+
#
|
25
|
+
# @return [Bool]
|
26
|
+
#
|
19
27
|
def self.redirectable?(uri1, uri2)
|
20
28
|
uri1.scheme.downcase == uri2.scheme.downcase ||
|
21
29
|
(/\A(?:http|ftp)\z/i =~ uri1.scheme && /\A(?:https?|ftp)\z/i =~ uri2.scheme)
|
data/lib/cocoapods/project.rb
CHANGED
@@ -7,6 +7,8 @@ module Pod
|
|
7
7
|
# through the installation process.
|
8
8
|
#
|
9
9
|
class Project < Xcodeproj::Project
|
10
|
+
# Initialize a new instance
|
11
|
+
#
|
10
12
|
# @param [Pathname, String] path @see path
|
11
13
|
# @param [Bool] skip_initialization
|
12
14
|
# Whether the project should be initialized from scratch.
|
@@ -169,7 +171,7 @@ module Pod
|
|
169
171
|
# The group for the new file reference.
|
170
172
|
#
|
171
173
|
# @param [Bool] reflect_file_system_structure
|
172
|
-
#
|
174
|
+
# Whether group structure should reflect the file system structure.
|
173
175
|
# If yes, where needed, intermediate groups are created, similar to
|
174
176
|
# how mkdir -p operates.
|
175
177
|
#
|
data/lib/cocoapods/resolver.rb
CHANGED
@@ -25,6 +25,8 @@ module Pod
|
|
25
25
|
#
|
26
26
|
attr_accessor :sources
|
27
27
|
|
28
|
+
# Init a new Resolver
|
29
|
+
#
|
28
30
|
# @param [Sandbox] sandbox @see sandbox
|
29
31
|
# @param [Podfile] podfile @see podfile
|
30
32
|
# @param [Array<Dependency>] locked_dependencies @see locked_dependencies
|
@@ -53,7 +55,11 @@ module Pod
|
|
53
55
|
dependencies = podfile.target_definition_list.map(&:dependencies).flatten
|
54
56
|
@cached_sets = {}
|
55
57
|
@activated = Molinillo::Resolver.new(self, self).resolve(dependencies, locked_dependencies)
|
56
|
-
specs_by_target
|
58
|
+
specs_by_target.tap do |specs_by_target|
|
59
|
+
specs_by_target.values.flatten.each do |spec|
|
60
|
+
sandbox.store_head_pod(spec.name) if spec.version.head?
|
61
|
+
end
|
62
|
+
end
|
57
63
|
rescue Molinillo::ResolverError => e
|
58
64
|
handle_resolver_error(e)
|
59
65
|
end
|
@@ -64,24 +70,18 @@ module Pod
|
|
64
70
|
# @note The returned specifications can be subspecs.
|
65
71
|
#
|
66
72
|
def specs_by_target
|
67
|
-
@specs_by_target ||=
|
68
|
-
specs_by_target = {}
|
73
|
+
@specs_by_target ||= {}.tap do |specs_by_target|
|
69
74
|
podfile.target_definition_list.each do |target|
|
70
|
-
specs = target.dependencies.map(&:name).
|
75
|
+
specs = target.dependencies.map(&:name).flat_map do |name|
|
71
76
|
node = @activated.vertex_named(name)
|
72
77
|
valid_dependencies_for_target_from_node(target, node) << node
|
73
78
|
end
|
74
79
|
|
75
80
|
specs_by_target[target] = specs.
|
76
|
-
flatten.
|
77
81
|
map(&:payload).
|
78
82
|
uniq.
|
79
|
-
sort_by(&:name)
|
80
|
-
each do |spec|
|
81
|
-
sandbox.store_head_pod(spec.name) if spec.version.head?
|
82
|
-
end
|
83
|
+
sort_by(&:name)
|
83
84
|
end
|
84
|
-
specs_by_target
|
85
85
|
end
|
86
86
|
end
|
87
87
|
|
data/lib/cocoapods/sandbox.rb
CHANGED
@@ -50,6 +50,8 @@ module Pod
|
|
50
50
|
#
|
51
51
|
attr_reader :public_headers
|
52
52
|
|
53
|
+
# Initialize a new instance
|
54
|
+
#
|
53
55
|
# @param [String, Pathname] root @see root
|
54
56
|
#
|
55
57
|
def initialize(root)
|
@@ -246,6 +248,8 @@ module Pod
|
|
246
248
|
# The contents of the specification (String) or the path to a
|
247
249
|
# podspec file (Pathname).
|
248
250
|
#
|
251
|
+
# @return [void]
|
252
|
+
#
|
249
253
|
# @todo Store all the specifications (including those not originating
|
250
254
|
# from external sources) so users can check them.
|
251
255
|
#
|
@@ -27,6 +27,8 @@ module Pod
|
|
27
27
|
#
|
28
28
|
attr_reader :spec_consumer
|
29
29
|
|
30
|
+
# Initialize a new instance
|
31
|
+
#
|
30
32
|
# @param [Sandbox::PathList, Pathname] path_list @see path_list
|
31
33
|
# @param [Specification::Consumer] spec_consumer @see spec_consumer
|
32
34
|
#
|
@@ -168,7 +170,7 @@ module Pod
|
|
168
170
|
end
|
169
171
|
|
170
172
|
# @return [Hash{String => Array<Pathname>}] A hash that describes the
|
171
|
-
# resource bundles of the Pod. The keys
|
173
|
+
# resource bundles of the Pod. The keys represent the name of
|
172
174
|
# the bundle while the values the path of the resources.
|
173
175
|
#
|
174
176
|
def resource_bundles
|
@@ -56,19 +56,19 @@ module Pod
|
|
56
56
|
|
57
57
|
# @!group Adding headers
|
58
58
|
|
59
|
-
# Adds
|
59
|
+
# Adds headers to the directory.
|
60
60
|
#
|
61
|
-
# @param [Pathname]
|
61
|
+
# @param [Pathname] namespace
|
62
62
|
# the path where the header file should be stored relative to the
|
63
63
|
# headers directory.
|
64
64
|
#
|
65
|
-
# @param [Pathname]
|
65
|
+
# @param [Array<Pathname>] relative_header_paths
|
66
66
|
# the path of the header file relative to the Pods project
|
67
67
|
# (`PODS_ROOT` variable of the xcconfigs).
|
68
68
|
#
|
69
69
|
# @note This method adds the files to the search paths.
|
70
70
|
#
|
71
|
-
# @return [Pathname]
|
71
|
+
# @return [Array<Pathname>]
|
72
72
|
#
|
73
73
|
def add_files(namespace, relative_header_paths, platform)
|
74
74
|
add_search_path(namespace, platform)
|
@@ -15,6 +15,8 @@ module Pod
|
|
15
15
|
#
|
16
16
|
attr_accessor :root
|
17
17
|
|
18
|
+
# Initialize a new instance
|
19
|
+
#
|
18
20
|
# @param [Pathname] root The root of the PathList.
|
19
21
|
#
|
20
22
|
def initialize(root)
|
@@ -61,24 +63,41 @@ module Pod
|
|
61
63
|
|
62
64
|
# @!group Globbing
|
63
65
|
|
64
|
-
#
|
65
|
-
#
|
66
|
+
# Similar to {glob} but returns the absolute paths.
|
67
|
+
#
|
68
|
+
# @param [String,Array<String>] patterns
|
69
|
+
# @see #relative_glob
|
70
|
+
#
|
71
|
+
# @param [Hash] options
|
72
|
+
# @see #relative_glob
|
73
|
+
#
|
74
|
+
# @return [Array<Pathname>]
|
66
75
|
#
|
67
76
|
def glob(patterns, options = {})
|
68
77
|
relative_glob(patterns, options).map { |p| root + p }
|
69
78
|
end
|
70
79
|
|
71
|
-
#
|
72
|
-
#
|
73
|
-
#
|
80
|
+
# The list of relative paths that are case insensitively matched by a
|
81
|
+
# given pattern. This method emulates {Dir#glob} with the
|
82
|
+
# {File::FNM_CASEFOLD} option.
|
74
83
|
#
|
75
84
|
# @param [String,Array<String>] patterns
|
76
85
|
# A single {Dir#glob} like pattern, or a list of patterns.
|
77
86
|
#
|
78
|
-
# @param [
|
87
|
+
# @param [Hash] options
|
88
|
+
#
|
89
|
+
# @option options [String] :dir_pattern
|
79
90
|
# An optional pattern to append to a pattern, if it is the path
|
80
91
|
# to a directory.
|
81
92
|
#
|
93
|
+
# @option options [Array<String>] :exclude_patterns
|
94
|
+
# Exclude specific paths given by those patterns.
|
95
|
+
#
|
96
|
+
# @option options [Array<String>] :include_dirs
|
97
|
+
# Additional paths to take into account for matching.
|
98
|
+
#
|
99
|
+
# @return [Array<Pathname>]
|
100
|
+
#
|
82
101
|
def relative_glob(patterns, options = {})
|
83
102
|
return [] if patterns.empty?
|
84
103
|
|
@@ -195,7 +195,9 @@ module Pod
|
|
195
195
|
# Updates the local clone of the spec-repo with the given name or of all
|
196
196
|
# the git repos if the name is omitted.
|
197
197
|
#
|
198
|
-
# @param [String]
|
198
|
+
# @param [String] source_name
|
199
|
+
#
|
200
|
+
# @param [Bool] show_output
|
199
201
|
#
|
200
202
|
# @return [void]
|
201
203
|
#
|
data/lib/cocoapods/target.rb
CHANGED
@@ -6,7 +6,7 @@ module Pod
|
|
6
6
|
# This class is used to represent both the targets and their libraries.
|
7
7
|
#
|
8
8
|
class Target
|
9
|
-
# @return [
|
9
|
+
# @return [TargetDefinition] the target definition of the Podfile that
|
10
10
|
# generated this target.
|
11
11
|
#
|
12
12
|
attr_reader :target_definition
|
@@ -3,6 +3,8 @@ module Pod
|
|
3
3
|
# of the single Pods. The client targets will then depend on this one.
|
4
4
|
#
|
5
5
|
class AggregateTarget < Target
|
6
|
+
# Initialize a new instance
|
7
|
+
#
|
6
8
|
# @param [TargetDefinition] target_definition @see target_definition
|
7
9
|
# @param [Sandbox] sandbox @see sandbox
|
8
10
|
#
|
@@ -51,8 +53,12 @@ module Pod
|
|
51
53
|
#
|
52
54
|
attr_accessor :user_target_uuids
|
53
55
|
|
54
|
-
#
|
55
|
-
#
|
56
|
+
# List all user targets that will be integrated by this #target.
|
57
|
+
#
|
58
|
+
# @param [Xcodeproj::Project] project
|
59
|
+
# The project to search for the user targets
|
60
|
+
#
|
61
|
+
# @return [Array<PBXNativeTarget>]
|
56
62
|
#
|
57
63
|
def user_targets(project = nil)
|
58
64
|
return [] unless user_project_path
|
@@ -37,6 +37,16 @@ module Pod
|
|
37
37
|
# @todo Refactor to title (for always visible titles like search)
|
38
38
|
# and sections (titles that represent collapsible sections).
|
39
39
|
#
|
40
|
+
# @param [String] title
|
41
|
+
# The title to print
|
42
|
+
#
|
43
|
+
# @param [String] verbose_prefix
|
44
|
+
# See #message
|
45
|
+
#
|
46
|
+
# @param [FixNum] relative_indentation
|
47
|
+
# The indentation level relative to the current,
|
48
|
+
# when the message is printed.
|
49
|
+
#
|
40
50
|
def section(title, verbose_prefix = '', relative_indentation = 0)
|
41
51
|
if config.verbose?
|
42
52
|
title(title, verbose_prefix, relative_indentation)
|
@@ -74,6 +84,16 @@ module Pod
|
|
74
84
|
|
75
85
|
# A title opposed to a section is always visible
|
76
86
|
#
|
87
|
+
# @param [String] title
|
88
|
+
# The title to print
|
89
|
+
#
|
90
|
+
# @param [String] verbose_prefix
|
91
|
+
# See #message
|
92
|
+
#
|
93
|
+
# @param [FixNum] relative_indentation
|
94
|
+
# The indentation level relative to the current,
|
95
|
+
# when the message is printed.
|
96
|
+
#
|
77
97
|
def title(title, verbose_prefix = '', relative_indentation = 2)
|
78
98
|
if @treat_titles_as_messages
|
79
99
|
message(title, verbose_prefix)
|
@@ -102,6 +122,16 @@ module Pod
|
|
102
122
|
#
|
103
123
|
# @todo Clean interface.
|
104
124
|
#
|
125
|
+
# @param [String] message
|
126
|
+
# The message to print.
|
127
|
+
#
|
128
|
+
# @param [String] verbose_prefix
|
129
|
+
# See #message
|
130
|
+
#
|
131
|
+
# @param [FixNum] relative_indentation
|
132
|
+
# The indentation level relative to the current,
|
133
|
+
# when the message is printed.
|
134
|
+
#
|
105
135
|
def message(message, verbose_prefix = '', relative_indentation = 2)
|
106
136
|
message = verbose_prefix + message if config.verbose?
|
107
137
|
puts_indented message if config.verbose?
|
@@ -117,6 +147,9 @@ module Pod
|
|
117
147
|
#
|
118
148
|
# Any title printed in the optional block is treated as a message.
|
119
149
|
#
|
150
|
+
# @param [String] message
|
151
|
+
# The message to print.
|
152
|
+
#
|
120
153
|
def info(message)
|
121
154
|
indentation = config.verbose? ? self.indentation_level : 0
|
122
155
|
indented = wrap_string(message, indentation)
|
@@ -143,6 +176,9 @@ module Pod
|
|
143
176
|
# The returned path is quoted. If the argument is nil it returns the
|
144
177
|
# empty string.
|
145
178
|
#
|
179
|
+
# @param [#to_str] pathname
|
180
|
+
# The path to print.
|
181
|
+
#
|
146
182
|
def path(pathname)
|
147
183
|
if pathname
|
148
184
|
from_path = config.podfile_path.dirname if config.podfile_path
|
@@ -156,6 +192,12 @@ module Pod
|
|
156
192
|
|
157
193
|
# Prints the textual representation of a given set.
|
158
194
|
#
|
195
|
+
# @param [Set] set
|
196
|
+
# the set that should be presented.
|
197
|
+
#
|
198
|
+
# @param [Symbol] mode
|
199
|
+
# the presentation mode, either `:normal` or `:name_and_version`.
|
200
|
+
#
|
159
201
|
def pod(set, mode = :normal)
|
160
202
|
if mode == :name_and_version
|
161
203
|
puts_indented "#{set.name} #{set.versions.first.version}"
|
@@ -190,6 +232,15 @@ module Pod
|
|
190
232
|
|
191
233
|
# Prints a message with a label.
|
192
234
|
#
|
235
|
+
# @param [String] label
|
236
|
+
# The label to print.
|
237
|
+
#
|
238
|
+
# @param [#to_s] value
|
239
|
+
# The value to print.
|
240
|
+
#
|
241
|
+
# @param [FixNum] justification
|
242
|
+
# The justification of the label.
|
243
|
+
#
|
193
244
|
def labeled(label, value, justification = 12)
|
194
245
|
if value
|
195
246
|
title = "- #{label}:"
|
@@ -208,6 +259,9 @@ module Pod
|
|
208
259
|
# Prints a message respecting the current indentation level and
|
209
260
|
# wrapping it to the terminal width if necessary.
|
210
261
|
#
|
262
|
+
# @param [String] message
|
263
|
+
# The message to print.
|
264
|
+
#
|
211
265
|
def puts_indented(message = '')
|
212
266
|
indented = wrap_string(message, self.indentation_level)
|
213
267
|
puts(indented)
|
@@ -238,12 +292,18 @@ module Pod
|
|
238
292
|
|
239
293
|
# prints a message followed by a new line unless config is silent.
|
240
294
|
#
|
295
|
+
# @param [String] message
|
296
|
+
# The message to print.
|
297
|
+
#
|
241
298
|
def puts(message = '')
|
242
299
|
STDOUT.puts(message) unless config.silent?
|
243
300
|
end
|
244
301
|
|
245
302
|
# prints a message followed by a new line unless config is silent.
|
246
303
|
#
|
304
|
+
# @param [String] message
|
305
|
+
# The message to print.
|
306
|
+
#
|
247
307
|
def print(message)
|
248
308
|
STDOUT.print(message) unless config.silent?
|
249
309
|
end
|
@@ -259,6 +319,8 @@ module Pod
|
|
259
319
|
#
|
260
320
|
# @param [String] message The message to print.
|
261
321
|
# @param [Array] actions The actions that the user should take.
|
322
|
+
# @param [Bool] verbose_only
|
323
|
+
# Restrict the appearance of the warning to verbose mode only
|
262
324
|
#
|
263
325
|
# return [void]
|
264
326
|
#
|
data/lib/cocoapods/validator.rb
CHANGED
@@ -16,6 +16,8 @@ module Pod
|
|
16
16
|
#
|
17
17
|
attr_reader :linter
|
18
18
|
|
19
|
+
# Initialize a new instance
|
20
|
+
#
|
19
21
|
# @param [Specification, Pathname, String] spec_or_path
|
20
22
|
# the Specification or the path of the `podspec` file to lint.
|
21
23
|
#
|
@@ -167,7 +169,8 @@ module Pod
|
|
167
169
|
result_type != :error && (result_type != :warning || allow_warnings)
|
168
170
|
end
|
169
171
|
|
170
|
-
# @return [Symbol]
|
172
|
+
# @return [Symbol] The type, which should been used to display the result.
|
173
|
+
# One of: `:error`, `:warning`, `:note`.
|
171
174
|
#
|
172
175
|
def result_type
|
173
176
|
types = results.map(&:type).uniq
|
@@ -177,7 +180,8 @@ module Pod
|
|
177
180
|
end
|
178
181
|
end
|
179
182
|
|
180
|
-
# @return [Symbol]
|
183
|
+
# @return [Symbol] The color, which should been used to display the result.
|
184
|
+
# One of: `:green`, `:yellow`, `:red`.
|
181
185
|
#
|
182
186
|
def result_color
|
183
187
|
case result_type
|