cocoapods-core 0.30.0 → 1.15.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.
Files changed (50) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +7 -10
  3. data/lib/cocoapods-core/build_type.rb +121 -0
  4. data/lib/cocoapods-core/cdn_source.rb +501 -0
  5. data/lib/cocoapods-core/core_ui.rb +4 -3
  6. data/lib/cocoapods-core/dependency.rb +100 -73
  7. data/lib/cocoapods-core/gem_version.rb +1 -2
  8. data/lib/cocoapods-core/github.rb +32 -5
  9. data/lib/cocoapods-core/http.rb +86 -0
  10. data/lib/cocoapods-core/lockfile.rb +161 -56
  11. data/lib/cocoapods-core/metrics.rb +47 -0
  12. data/lib/cocoapods-core/platform.rb +99 -11
  13. data/lib/cocoapods-core/podfile/dsl.rb +623 -124
  14. data/lib/cocoapods-core/podfile/target_definition.rb +662 -109
  15. data/lib/cocoapods-core/podfile.rb +138 -65
  16. data/lib/cocoapods-core/requirement.rb +37 -8
  17. data/lib/cocoapods-core/source/acceptor.rb +16 -13
  18. data/lib/cocoapods-core/source/aggregate.rb +79 -103
  19. data/lib/cocoapods-core/source/health_reporter.rb +9 -18
  20. data/lib/cocoapods-core/source/manager.rb +488 -0
  21. data/lib/cocoapods-core/source/metadata.rb +79 -0
  22. data/lib/cocoapods-core/source.rb +241 -70
  23. data/lib/cocoapods-core/specification/consumer.rb +187 -47
  24. data/lib/cocoapods-core/specification/dsl/attribute.rb +49 -85
  25. data/lib/cocoapods-core/specification/dsl/attribute_support.rb +6 -8
  26. data/lib/cocoapods-core/specification/dsl/deprecations.rb +9 -126
  27. data/lib/cocoapods-core/specification/dsl/platform_proxy.rb +30 -20
  28. data/lib/cocoapods-core/specification/dsl.rb +943 -296
  29. data/lib/cocoapods-core/specification/json.rb +64 -23
  30. data/lib/cocoapods-core/specification/linter/analyzer.rb +218 -0
  31. data/lib/cocoapods-core/specification/linter/result.rb +128 -0
  32. data/lib/cocoapods-core/specification/linter.rb +310 -309
  33. data/lib/cocoapods-core/specification/root_attribute_accessors.rb +90 -39
  34. data/lib/cocoapods-core/specification/set/presenter.rb +35 -71
  35. data/lib/cocoapods-core/specification/set.rb +42 -96
  36. data/lib/cocoapods-core/specification.rb +368 -130
  37. data/lib/cocoapods-core/standard_error.rb +45 -24
  38. data/lib/cocoapods-core/trunk_source.rb +14 -0
  39. data/lib/cocoapods-core/vendor/requirement.rb +133 -53
  40. data/lib/cocoapods-core/vendor/version.rb +197 -156
  41. data/lib/cocoapods-core/vendor.rb +1 -5
  42. data/lib/cocoapods-core/version.rb +137 -42
  43. data/lib/cocoapods-core/yaml_helper.rb +334 -0
  44. data/lib/cocoapods-core.rb +10 -4
  45. metadata +100 -27
  46. data/lib/cocoapods-core/source/abstract_data_provider.rb +0 -71
  47. data/lib/cocoapods-core/source/file_system_data_provider.rb +0 -150
  48. data/lib/cocoapods-core/source/github_data_provider.rb +0 -143
  49. data/lib/cocoapods-core/specification/set/statistics.rb +0 -266
  50. data/lib/cocoapods-core/yaml_converter.rb +0 -192
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.30.0
4
+ version: 1.15.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eloy Duran
8
8
  - Fabio Pelosin
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-03-28 00:00:00.000000000 Z
12
+ date: 2024-02-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -17,62 +17,132 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: 3.2.15
20
+ version: '5.0'
21
21
  - - "<"
22
22
  - !ruby/object:Gem::Version
23
- version: '4'
23
+ version: '8'
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
27
27
  requirements:
28
28
  - - ">="
29
29
  - !ruby/object:Gem::Version
30
- version: 3.2.15
30
+ version: '5.0'
31
31
  - - "<"
32
32
  - !ruby/object:Gem::Version
33
- version: '4'
33
+ version: '8'
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: nap
36
36
  requirement: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0.5'
40
+ version: '1.0'
41
41
  type: :runtime
42
42
  prerelease: false
43
43
  version_requirements: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0.5'
47
+ version: '1.0'
48
48
  - !ruby/object:Gem::Dependency
49
- name: json_pure
49
+ name: fuzzy_match
50
50
  requirement: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.8'
54
+ version: 2.0.4
55
55
  type: :runtime
56
56
  prerelease: false
57
57
  version_requirements: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.8'
61
+ version: 2.0.4
62
62
  - !ruby/object:Gem::Dependency
63
- name: fuzzy_match
63
+ name: algoliasearch
64
64
  requirement: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 2.0.4
68
+ version: '1.0'
69
69
  type: :runtime
70
70
  prerelease: false
71
71
  version_requirements: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 2.0.4
75
+ version: '1.0'
76
+ - !ruby/object:Gem::Dependency
77
+ name: concurrent-ruby
78
+ requirement: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.1'
83
+ type: :runtime
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.1'
90
+ - !ruby/object:Gem::Dependency
91
+ name: typhoeus
92
+ requirement: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.0'
97
+ type: :runtime
98
+ prerelease: false
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.0'
104
+ - !ruby/object:Gem::Dependency
105
+ name: netrc
106
+ requirement: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.11'
111
+ type: :runtime
112
+ prerelease: false
113
+ version_requirements: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.11'
118
+ - !ruby/object:Gem::Dependency
119
+ name: addressable
120
+ requirement: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '2.8'
125
+ type: :runtime
126
+ prerelease: false
127
+ version_requirements: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '2.8'
132
+ - !ruby/object:Gem::Dependency
133
+ name: public_suffix
134
+ requirement: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '4.0'
139
+ type: :runtime
140
+ prerelease: false
141
+ version_requirements: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '4.0'
76
146
  - !ruby/object:Gem::Dependency
77
147
  name: bacon
78
148
  requirement: !ruby/object:Gem::Requirement
@@ -101,23 +171,26 @@ files:
101
171
  - LICENSE
102
172
  - README.md
103
173
  - lib/cocoapods-core.rb
174
+ - lib/cocoapods-core/build_type.rb
175
+ - lib/cocoapods-core/cdn_source.rb
104
176
  - lib/cocoapods-core/core_ui.rb
105
177
  - lib/cocoapods-core/dependency.rb
106
178
  - lib/cocoapods-core/gem_version.rb
107
179
  - lib/cocoapods-core/github.rb
180
+ - lib/cocoapods-core/http.rb
108
181
  - lib/cocoapods-core/lockfile.rb
182
+ - lib/cocoapods-core/metrics.rb
109
183
  - lib/cocoapods-core/platform.rb
110
184
  - lib/cocoapods-core/podfile.rb
111
185
  - lib/cocoapods-core/podfile/dsl.rb
112
186
  - lib/cocoapods-core/podfile/target_definition.rb
113
187
  - lib/cocoapods-core/requirement.rb
114
188
  - lib/cocoapods-core/source.rb
115
- - lib/cocoapods-core/source/abstract_data_provider.rb
116
189
  - lib/cocoapods-core/source/acceptor.rb
117
190
  - lib/cocoapods-core/source/aggregate.rb
118
- - lib/cocoapods-core/source/file_system_data_provider.rb
119
- - lib/cocoapods-core/source/github_data_provider.rb
120
191
  - lib/cocoapods-core/source/health_reporter.rb
192
+ - lib/cocoapods-core/source/manager.rb
193
+ - lib/cocoapods-core/source/metadata.rb
121
194
  - lib/cocoapods-core/specification.rb
122
195
  - lib/cocoapods-core/specification/consumer.rb
123
196
  - lib/cocoapods-core/specification/dsl.rb
@@ -127,21 +200,23 @@ files:
127
200
  - lib/cocoapods-core/specification/dsl/platform_proxy.rb
128
201
  - lib/cocoapods-core/specification/json.rb
129
202
  - lib/cocoapods-core/specification/linter.rb
203
+ - lib/cocoapods-core/specification/linter/analyzer.rb
204
+ - lib/cocoapods-core/specification/linter/result.rb
130
205
  - lib/cocoapods-core/specification/root_attribute_accessors.rb
131
206
  - lib/cocoapods-core/specification/set.rb
132
207
  - lib/cocoapods-core/specification/set/presenter.rb
133
- - lib/cocoapods-core/specification/set/statistics.rb
134
208
  - lib/cocoapods-core/standard_error.rb
209
+ - lib/cocoapods-core/trunk_source.rb
135
210
  - lib/cocoapods-core/vendor.rb
136
211
  - lib/cocoapods-core/vendor/requirement.rb
137
212
  - lib/cocoapods-core/vendor/version.rb
138
213
  - lib/cocoapods-core/version.rb
139
- - lib/cocoapods-core/yaml_converter.rb
214
+ - lib/cocoapods-core/yaml_helper.rb
140
215
  homepage: https://github.com/CocoaPods/CocoaPods
141
216
  licenses:
142
217
  - MIT
143
218
  metadata: {}
144
- post_install_message:
219
+ post_install_message:
145
220
  rdoc_options: []
146
221
  require_paths:
147
222
  - lib
@@ -149,17 +224,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
149
224
  requirements:
150
225
  - - ">="
151
226
  - !ruby/object:Gem::Version
152
- version: '0'
227
+ version: '2.6'
153
228
  required_rubygems_version: !ruby/object:Gem::Requirement
154
229
  requirements:
155
230
  - - ">="
156
231
  - !ruby/object:Gem::Version
157
232
  version: '0'
158
233
  requirements: []
159
- rubyforge_project:
160
- rubygems_version: 2.2.2
161
- signing_key:
162
- specification_version: 3
234
+ rubygems_version: 3.2.3
235
+ signing_key:
236
+ specification_version: 4
163
237
  summary: The models of CocoaPods
164
238
  test_files: []
165
- has_rdoc:
@@ -1,71 +0,0 @@
1
- module Pod
2
- class Source
3
-
4
- # Defines the required and the optional methods of a data provider.
5
- #
6
- class AbstractDataProvider
7
-
8
- public
9
-
10
- # @group Required methods
11
- #-----------------------------------------------------------------------#
12
-
13
- # @return [String] The name of the source.
14
- #
15
- def name
16
- raise StandardError, "Abstract method."
17
- end
18
-
19
- # @return [String] The user friendly type of the source.
20
- #
21
- def type
22
- raise StandardError, "Abstract method."
23
- end
24
-
25
- # @return [Array<String>] The list of the name of all the Pods known to
26
- # the Source.
27
- #
28
- def pods
29
- raise StandardError, "Abstract method."
30
- end
31
-
32
- # @return [Array<String>] All the available versions of a given Pod,
33
- # sorted from highest to lowest.
34
- #
35
- # @param [String] name
36
- # The name of the Pod.
37
- #
38
- def versions(name)
39
- raise StandardError, "Abstract method."
40
- end
41
-
42
- # @return [Specification] The specification for a given version of a Pod.
43
- #
44
- # @param [String] name
45
- # The name of the Pod.
46
- #
47
- # @param [String] version
48
- # The version of the Pod.
49
- #
50
- def specification(name, version)
51
- raise StandardError, "Abstract method."
52
- end
53
-
54
- # @return [Specification] The contents of the specification for a given
55
- # version of a Pod.
56
- #
57
- # @param [String] name
58
- # the name of the Pod.
59
- #
60
- # @param [String] version
61
- # the version of the Pod.
62
- #
63
- def specification_contents(name, version)
64
- raise StandardError, "Abstract method."
65
- end
66
-
67
- #-----------------------------------------------------------------------#
68
-
69
- end
70
- end
71
- end
@@ -1,150 +0,0 @@
1
- module Pod
2
- class Source
3
-
4
- # Data provider for a `Pod::Source` backed by a repository hosted in the
5
- # file system.
6
- #
7
- class FileSystemDataProvider < AbstractDataProvider
8
-
9
- # @return [Pathname] The path where the source is stored.
10
- #
11
- attr_reader :repo
12
-
13
- # @param [Pathname, String] repo @see #repo.
14
- #
15
- def initialize(repo)
16
- @repo = Pathname.new(repo)
17
- end
18
-
19
- public
20
-
21
- # @group Required methods
22
- #-----------------------------------------------------------------------#
23
-
24
- # @return [String] The name of the source.
25
- #
26
- def name
27
- repo.basename.to_s
28
- end
29
-
30
- # @return [String] The user friendly type of the source.
31
- #
32
- def type
33
- "file system"
34
- end
35
-
36
- # @return [Array<String>] The list of the name of all the Pods known to
37
- # the Source.
38
- #
39
- # @note Using Pathname#children is sensibly slower.
40
- #
41
- def pods
42
- return nil unless specs_dir
43
- specs_dir_as_string = specs_dir.to_s
44
- Dir.entries(specs_dir).select do |entry|
45
- valid_name = !(entry == '.' || entry == '..' || entry == '.git')
46
- valid_name && File.directory?(File.join(specs_dir_as_string, entry))
47
- end.sort
48
- end
49
-
50
- # @return [Array<String>] All the available versions of a given Pod,
51
- # sorted from highest to lowest.
52
- #
53
- # @param [String] name
54
- # The name of the Pod.
55
- #
56
- def versions(name)
57
- return nil unless specs_dir
58
- raise ArgumentError, "No name" unless name
59
- pod_dir = specs_dir + name
60
- return unless pod_dir.exist?
61
- pod_dir.children.map do |v|
62
- basename = v.basename.to_s
63
- basename if v.directory? && basename[0, 1] != '.'
64
- end.compact.sort.reverse
65
- end
66
-
67
- # @return [Specification] The specification for a given version of a Pod.
68
- #
69
- # @param [String] name
70
- # The name of the Pod.
71
- #
72
- # @param [String] version
73
- # The version of the Pod.
74
- #
75
- def specification(name, version)
76
- path = specification_path(name, version)
77
- Pod::Specification.from_file(path) if path && path.exist?
78
- end
79
-
80
- # @return [Specification] The contents of the specification for a given
81
- # version of a Pod.
82
- #
83
- # @param [String] name
84
- # the name of the Pod.
85
- #
86
- # @param [String] version
87
- # the version of the Pod.
88
- #
89
- def specification_contents(name, version)
90
- path = specification_path(name, version)
91
- File.open(path, 'r:utf-8') { |f| f.read } if path && path.exist?
92
- end
93
-
94
- public
95
-
96
- # @group Other methods
97
- #-----------------------------------------------------------------------#
98
-
99
- # Returns the path of the specification with the given name and version.
100
- #
101
- # @param [String] name
102
- # the name of the Pod.
103
- #
104
- # @param [Version,String] version
105
- # the version for the specification.
106
- #
107
- # @return [Pathname] The path of the specification.
108
- #
109
- def specification_path(name, version)
110
- raise ArgumentError, "No name" unless name
111
- raise ArgumentError, "No version" unless version
112
- return nil unless specs_dir
113
- path = specs_dir + name + version.to_s
114
- specification_path = path + "#{name}.podspec.json"
115
- specification_path.exist?
116
- unless specification_path.exist?
117
- specification_path = path + "#{name}.podspec"
118
- end
119
- specification_path
120
- end
121
-
122
- private
123
-
124
- # @group Private Helpers
125
- #-----------------------------------------------------------------------#
126
-
127
- # @return [Pathname] The directory where the specs are stored.
128
- #
129
- # @note In previous versions of CocoaPods they used to be stored in
130
- # the root of the repo. This lead to issues, especially with
131
- # the GitHub interface and now the are stored in a dedicated
132
- # folder.
133
- #
134
- def specs_dir
135
- unless @specs_dir
136
- specs_sub_dir = repo + 'Specs'
137
- if specs_sub_dir.exist?
138
- @specs_dir = specs_sub_dir
139
- elsif repo.exist?
140
- @specs_dir = repo
141
- end
142
- end
143
- @specs_dir
144
- end
145
-
146
- #-----------------------------------------------------------------------#
147
-
148
- end
149
- end
150
- end
@@ -1,143 +0,0 @@
1
- module Pod
2
- class Source
3
-
4
- # Data provider for a `Pod::Source` backed by a repository hosted on GitHub
5
- # and accessed via the HTTP API. Only pure JSON repos using the `Specs`
6
- # subdir to store the specifications are supported.
7
- #
8
- class GitHubDataProvider < AbstractDataProvider
9
-
10
- # @return [String] The identifier of the repository (user name and repo
11
- # name) or the full URL of the repo.
12
- #
13
- attr_reader :repo_id
14
-
15
- # @return [String] The branch of the repo if the default one shouldn't be
16
- # used.
17
- #
18
- attr_reader :branch
19
-
20
- # @param [String] repo_id @see repo_id
21
- # @param [String] branch @see branch
22
- #
23
- def initialize(repo_id, branch = nil)
24
- @repo_id = repo_id
25
- @branch = branch
26
- end
27
-
28
- public
29
-
30
- # @group Data Source
31
- #-----------------------------------------------------------------------#
32
-
33
- # @return [String] The name of the Source. User name and repo.
34
- #
35
- def name
36
- GitHub.normalized_repo_id(repo_id)
37
- end
38
-
39
- # @return [String] The user friendly type of the source.
40
- #
41
- def type
42
- "GitHub API"
43
- end
44
-
45
- # @return [Array<String>] The list of the name of all the Pods known to
46
- # the Source.
47
- #
48
- def pods
49
- root_contents = get_github_contents("Specs")
50
- pods = dir_names(root_contents)
51
- pods.sort if pods
52
- end
53
-
54
- # @return [Array<String>] All the available versions of a given Pod,
55
- # sorted from highest to lowest.
56
- #
57
- # @param [String] name
58
- # The name of the Pod.
59
- #
60
- def versions(name)
61
- raise ArgumentError, "No name" unless name
62
- contents = get_github_contents("Specs/#{name}")
63
- dir_names(contents)
64
- end
65
-
66
- # @return [Specification] The specification for a given version of a Pod.
67
- #
68
- # @param [String] name
69
- # The name of the Pod.
70
- #
71
- # @param [String] version
72
- # The version of the Pod.
73
- #
74
- def specification(name, version)
75
- raise ArgumentError, "No name" unless name
76
- raise ArgumentError, "No version" unless version
77
- spec_content = specification_contents(name, version)
78
- if spec_content
79
- Pod::Specification.from_json(spec_content)
80
- end
81
- end
82
-
83
- # @return [Specification] The contents of the specification for a given
84
- # version of a Pod.
85
- #
86
- # @param [String] name
87
- # the name of the Pod.
88
- #
89
- # @param [String] version
90
- # the version of the Pod.
91
- #
92
- def specification_contents(name, version)
93
- raise ArgumentError, "No name" unless name
94
- raise ArgumentError, "No version" unless version
95
- path = "Specs/#{name}/#{version}/#{name}.podspec.json"
96
- file_contents = get_github_contents(path)
97
- if file_contents
98
- if file_contents['encoding'] == 'base64'
99
- require "base64"
100
- Base64.decode64(file_contents['content'])
101
- end
102
- end
103
- end
104
-
105
- private
106
-
107
- # @group Private Helpers
108
- #-----------------------------------------------------------------------#
109
-
110
- # Performs a get request with the given URL.
111
- #
112
- # @param [String] url
113
- # The URL of the resource.
114
- #
115
- # @return [Array, Hash] The information of the resource as Ruby objects.
116
- #
117
- def get_github_contents(path = nil)
118
- Pod::GitHub.contents(repo_id, path, branch)
119
- end
120
-
121
- # @param [Array] [Array<Hash>] The contents of a directory.
122
- #
123
- # @return [Array<String>] Returns the list of the directories given the
124
- # contents returned for the API of a directory.
125
- #
126
- # @return [Nil] If the directory was not found or the contents is not an
127
- # array.
128
- #
129
- def dir_names(contents)
130
- if contents.is_a?(Array)
131
- contents.map do |entry|
132
- if entry['type'] == 'dir'
133
- entry['name']
134
- end
135
- end.compact
136
- end
137
- end
138
-
139
- #-----------------------------------------------------------------------#
140
-
141
- end
142
- end
143
- end