cocoapods-core 0.31.1 → 0.32.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/lib/cocoapods-core/core_ui.rb +0 -3
  3. data/lib/cocoapods-core/dependency.rb +2 -5
  4. data/lib/cocoapods-core/gem_version.rb +1 -2
  5. data/lib/cocoapods-core/github.rb +2 -5
  6. data/lib/cocoapods-core/lockfile.rb +9 -12
  7. data/lib/cocoapods-core/platform.rb +15 -6
  8. data/lib/cocoapods-core/podfile/dsl.rb +3 -5
  9. data/lib/cocoapods-core/podfile/target_definition.rb +2 -5
  10. data/lib/cocoapods-core/podfile.rb +6 -12
  11. data/lib/cocoapods-core/requirement.rb +3 -7
  12. data/lib/cocoapods-core/source/abstract_data_provider.rb +6 -9
  13. data/lib/cocoapods-core/source/acceptor.rb +36 -10
  14. data/lib/cocoapods-core/source/aggregate.rb +2 -5
  15. data/lib/cocoapods-core/source/file_system_data_provider.rb +7 -10
  16. data/lib/cocoapods-core/source/github_data_provider.rb +13 -12
  17. data/lib/cocoapods-core/source/health_reporter.rb +1 -5
  18. data/lib/cocoapods-core/source.rb +0 -3
  19. data/lib/cocoapods-core/specification/consumer.rb +3 -37
  20. data/lib/cocoapods-core/specification/dsl/attribute.rb +15 -8
  21. data/lib/cocoapods-core/specification/dsl/attribute_support.rb +0 -2
  22. data/lib/cocoapods-core/specification/dsl/deprecations.rb +8 -7
  23. data/lib/cocoapods-core/specification/dsl/platform_proxy.rb +4 -6
  24. data/lib/cocoapods-core/specification/dsl.rb +146 -144
  25. data/lib/cocoapods-core/specification/json.rb +1 -3
  26. data/lib/cocoapods-core/specification/linter/analyzer.rb +93 -0
  27. data/lib/cocoapods-core/specification/linter/result.rb +113 -0
  28. data/lib/cocoapods-core/specification/linter.rb +66 -278
  29. data/lib/cocoapods-core/specification/root_attribute_accessors.rb +26 -16
  30. data/lib/cocoapods-core/specification/set/presenter.rb +4 -7
  31. data/lib/cocoapods-core/specification/set/statistics.rb +1 -4
  32. data/lib/cocoapods-core/specification/set.rb +1 -4
  33. data/lib/cocoapods-core/specification.rb +10 -10
  34. data/lib/cocoapods-core/standard_error.rb +3 -5
  35. data/lib/cocoapods-core/vendor.rb +0 -4
  36. data/lib/cocoapods-core/version.rb +1 -4
  37. data/lib/cocoapods-core/{yaml_converter.rb → yaml_helper.rb} +22 -6
  38. data/lib/cocoapods-core.rb +1 -3
  39. metadata +5 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1def4418127d244ff521d4f76a14445fb4a559c2
4
- data.tar.gz: 50da728c79fd04ece560821d954b689b7e3f5053
3
+ metadata.gz: ef59fe8297bc413cb1482805ca6b260f3a340fb4
4
+ data.tar.gz: 92ca3d425f5058c370a8bf7573d8e7c371299a7c
5
5
  SHA512:
6
- metadata.gz: 4d2b45626d5775c887f71646a6b565fb21691b7a1f9e0882774aa02fa683c5ffe7c298bd621c1f371494a61d5a57e3745872f8b8a47062ebcd15b782c01f4736
7
- data.tar.gz: 475271274e02a01b7130b3168d52c19d6a9ff4b3e855c62faff403dd079d83d90134d3e2f81328e7dedddcc8c448a251651e1e59f200fe6a6c8bff41aa15a87c
6
+ metadata.gz: 0772a35c2331bfa3c776b69d0eadd804730360eb181f3ca87525d217b1ee1805c63205ca546969310641318047e7ec4c372edddfc9dae5e84c25209923886341
7
+ data.tar.gz: cfc998b133ab66bfd8247722734c0290406a9d2b878cbbae4880ebb8cf4e785489d2e07449ed9aec2d066e174c0aca0a8f5b4242fbcf046e84fb07f16cc3e7ba
@@ -1,9 +1,7 @@
1
1
  module Pod
2
-
3
2
  # Manages the UI output so dependent gems can customize it.
4
3
  #
5
4
  module CoreUI
6
-
7
5
  def self.puts(message)
8
6
  STDOUT.puts message
9
7
  end
@@ -13,6 +11,5 @@ module Pod
13
11
  end
14
12
 
15
13
  #-------------------------------------------------------------------------#
16
-
17
14
  end
18
15
  end
@@ -1,5 +1,4 @@
1
1
  module Pod
2
-
3
2
  # The Dependency allows to specify dependencies of a {Podfile} or a
4
3
  # {Specification} on a Pod. It stores the name of the dependency, version
5
4
  # requirements and external sources information.
@@ -10,7 +9,6 @@ module Pod
10
9
  # [MIT license](https://github.com/rubygems/rubygems/blob/master/MIT.txt).
11
10
  #
12
11
  class Dependency
13
-
14
12
  # @return [String] The name of the Pod described by this dependency.
15
13
  #
16
14
  attr_accessor :name
@@ -26,7 +24,7 @@ module Pod
26
24
  # `head` of the source repository.
27
25
  #
28
26
  attr_accessor :head
29
- alias_method :head?, :head
27
+ alias_method :head?, :head
30
28
 
31
29
  # @overload initialize(name, requirements)
32
30
  #
@@ -128,7 +126,7 @@ module Pod
128
126
  #
129
127
  def local?
130
128
  if external_source
131
- !(external_source[:path] || external_source[:local]).nil?
129
+ external_source[:path] || external_source[:local]
132
130
  end
133
131
  end
134
132
 
@@ -377,5 +375,4 @@ module Pod
377
375
  "from #{desc}"
378
376
  end
379
377
  end
380
-
381
378
  end
@@ -1,6 +1,5 @@
1
1
  module Pod
2
-
3
2
  # The version of the cocoapods-core.
4
3
  #
5
- CORE_VERSION = '0.31.1' unless defined? Pod::CORE_VERSION
4
+ CORE_VERSION = '0.32.0' unless defined? Pod::CORE_VERSION
6
5
  end
@@ -1,11 +1,9 @@
1
1
  module Pod
2
-
3
2
  # Allows to access information about the GitHub repos.
4
3
  #
5
4
  # This class is stored in Core because it might be used by web services.
6
5
  #
7
6
  module GitHub
8
-
9
7
  # Returns the information of a user.
10
8
  #
11
9
  # @param [String] login
@@ -103,7 +101,7 @@ module Pod
103
101
  # @return [Nil] if the given url is not a valid github repo url.
104
102
  #
105
103
  def self.repo_id_from_url(url)
106
- url[%r{github.com/([^/\.]*/[^/\.]*)\.*}, 1]
104
+ url[%r{github.com/([^/]*/[^/]*)\.*}, 1]
107
105
  end
108
106
 
109
107
  # Performs a get request with the given URL.
@@ -116,7 +114,7 @@ module Pod
116
114
  def self.peform_request(url)
117
115
  require 'rest'
118
116
  require 'json'
119
- headers = { "User-Agent" => "CocoaPods" }
117
+ headers = { 'User-Agent' => 'CocoaPods' }
120
118
  response = REST.get(url, headers)
121
119
  body = JSON.parse(response.body)
122
120
  if response.ok?
@@ -129,6 +127,5 @@ module Pod
129
127
  end
130
128
 
131
129
  #-------------------------------------------------------------------------#
132
-
133
130
  end
134
131
  end
@@ -1,5 +1,4 @@
1
1
  module Pod
2
-
3
2
  # The Lockfile stores information about the pods that were installed by
4
3
  # CocoaPods.
5
4
  #
@@ -11,7 +10,6 @@ module Pod
11
10
  # need to be installed or removed.
12
11
  #
13
12
  class Lockfile
14
-
15
13
  # @todo The symbols should be converted to a String and back to symbol
16
14
  # when reading (EXTERNAL SOURCES Download options)
17
15
 
@@ -40,7 +38,7 @@ module Pod
40
38
  def self.from_file(path)
41
39
  return nil unless path.exist?
42
40
  require 'yaml'
43
- hash = File.open(path) { |f| YAML.load(f) }
41
+ hash = File.open(path) { |f| YAMLHelper.load(f) }
44
42
  unless hash && hash.is_a?(Hash)
45
43
  raise Informative, "Invalid Lockfile in `#{path}`"
46
44
  end
@@ -184,7 +182,7 @@ module Pod
184
182
  # that required the pod.
185
183
  #
186
184
  def external_sources_data
187
- @external_sources_data ||= internal_data["EXTERNAL SOURCES"] || {}
185
+ @external_sources_data ||= internal_data['EXTERNAL SOURCES'] || {}
188
186
  end
189
187
 
190
188
  # @return [Hash{String => Version}] a Hash containing the name of the root
@@ -306,19 +304,18 @@ module Pod
306
304
  #
307
305
  def to_yaml
308
306
  keys_hint = [
309
- "PODS",
310
- "DEPENDENCIES",
311
- "EXTERNAL SOURCES",
312
- "SPEC CHECKSUMS",
313
- "COCOAPODS",
307
+ 'PODS',
308
+ 'DEPENDENCIES',
309
+ 'EXTERNAL SOURCES',
310
+ 'SPEC CHECKSUMS',
311
+ 'COCOAPODS',
314
312
  ]
315
- YAMLConverter.convert_hash(to_hash, keys_hint, "\n\n")
313
+ YAMLHelper.convert_hash(to_hash, keys_hint, "\n\n")
316
314
  end
317
315
 
318
316
  #-------------------------------------------------------------------------#
319
317
 
320
318
  class << self
321
-
322
319
  # !@group Generation
323
320
 
324
321
  public
@@ -434,7 +431,7 @@ module Pod
434
431
  #
435
432
  def generate_checksums(specs)
436
433
  checksums = {}
437
- specs.select { |spec| !spec.defined_in_file.nil? }.each do |spec|
434
+ specs.select { |spec| spec.defined_in_file }.each do |spec|
438
435
  checksums[spec.root.name] = spec.checksum
439
436
  end
440
437
  checksums
@@ -1,14 +1,11 @@
1
1
  module Pod
2
-
3
2
  # A Platform describes an SDK name and deployment target.
4
3
  #
5
4
  class Platform
6
-
7
5
  # @return [Symbol, String] the name of the SDK represented by the platform.
8
6
  #
9
- def name
10
- @symbolic_name
11
- end
7
+ attr_reader :symbolic_name
8
+ alias_method :name, :symbolic_name
12
9
 
13
10
  # @return [Version] the deployment target of the platform.
14
11
  #
@@ -89,6 +86,18 @@ module Pod
89
86
  end
90
87
  end
91
88
 
89
+ # (see #==)
90
+ alias_method :eql?, :==
91
+
92
+ # Hashes the instance by the platform name and deployment target.
93
+ #
94
+ # This adds support to make instances usable as Hash keys.
95
+ #
96
+ # @!visibility private
97
+ def hash
98
+ name.hash ^ deployment_target.hash
99
+ end
100
+
92
101
  # Checks whether a platform supports another one.
93
102
  #
94
103
  # In the context of operating system SDKs, a platform supports another
@@ -151,7 +160,7 @@ module Pod
151
160
  #
152
161
  def requires_legacy_ios_archs?
153
162
  if name == :ios
154
- deployment_target && (deployment_target < Version.new("4.3"))
163
+ deployment_target && (deployment_target < Version.new('4.3'))
155
164
  else
156
165
  false
157
166
  end
@@ -1,6 +1,5 @@
1
1
  module Pod
2
2
  class Podfile
3
-
4
3
  # The of the methods defined in this file and the order of the methods is
5
4
  # relevant for the documentation generated on
6
5
  # CocoaPods/cocoapods.github.com.
@@ -34,7 +33,6 @@ module Pod
34
33
  # end
35
34
  #
36
35
  module DSL
37
-
38
36
  # @!group Dependencies
39
37
  # The Podfile specifies the dependencies of each user target.
40
38
  #
@@ -141,13 +139,13 @@ module Pod
141
139
  # If a podspec is available from another source outside of the library’s
142
140
  # repo. Consider, for instance, a podspec available via HTTP:
143
141
  #
144
- # pod 'JSONKit', :podspec => 'https://raw.github.com/gist/1346394/1d26570f68ca27377a27430c65841a0880395d72/JSONKit.podspec'
142
+ # pod 'JSONKit', :podspec => 'https://example.com/JSONKit.podspec'
145
143
  #
146
144
  #
147
145
  # @note This method allow a nil name and the raises to be more
148
146
  # informative.
149
147
  #
150
- # @note Support for inline podspecs has been deprecated.
148
+ # @note Support for inline podspecs has been deprecated.
151
149
  #
152
150
  # @return [void]
153
151
  #
@@ -158,7 +156,7 @@ module Pod
158
156
  end
159
157
 
160
158
  unless name
161
- raise StandardError, "A dependency requires a name."
159
+ raise StandardError, 'A dependency requires a name.'
162
160
  end
163
161
 
164
162
  current_target_definition.store_pod(name, *requirements)
@@ -1,6 +1,5 @@
1
1
  module Pod
2
2
  class Podfile
3
-
4
3
  # The TargetDefinition stores the information of a CocoaPods static
5
4
  # library. The target definition can be linked with one or more targets of
6
5
  # the user project.
@@ -9,7 +8,6 @@ module Pod
9
8
  # of the parent.
10
9
  #
11
10
  class TargetDefinition
12
-
13
11
  # @return [TargetDefinition, Podfile] the parent target definition or the
14
12
  # Podfile if the receiver is root.
15
13
  #
@@ -100,8 +98,8 @@ module Pod
100
98
  # name.
101
99
  #
102
100
  def label
103
- if root? && name == "Pods"
104
- "Pods"
101
+ if root? && name == 'Pods'
102
+ 'Pods'
105
103
  elsif exclusive? || parent.nil?
106
104
  "Pods-#{name}"
107
105
  else
@@ -622,7 +620,6 @@ module Pod
622
620
  end
623
621
 
624
622
  #-----------------------------------------------------------------------#
625
-
626
623
  end
627
624
  end
628
625
  end
@@ -2,7 +2,6 @@ require 'cocoapods-core/podfile/dsl'
2
2
  require 'cocoapods-core/podfile/target_definition'
3
3
 
4
4
  module Pod
5
-
6
5
  # The Podfile is a specification that describes the dependencies of the
7
6
  # targets of an Xcode project.
8
7
  #
@@ -13,7 +12,6 @@ module Pod
13
12
  # information of necessary to generate the CocoaPods libraries.
14
13
  #
15
14
  class Podfile
16
-
17
15
  # @!group DSL support
18
16
 
19
17
  include Pod::Podfile::DSL
@@ -46,7 +44,7 @@ module Pod
46
44
  self.defined_in_file = defined_in_file
47
45
  @internal_hash = internal_hash
48
46
  if block
49
- default_target_def = TargetDefinition.new("Pods", self)
47
+ default_target_def = TargetDefinition.new('Pods', self)
50
48
  default_target_def.link_with_first_target = true
51
49
  @root_target_definitions = [default_target_def]
52
50
  @current_target_definition = default_target_def
@@ -60,7 +58,7 @@ module Pod
60
58
  # presented to the user.
61
59
  #
62
60
  def to_s
63
- "Podfile"
61
+ 'Podfile'
64
62
  end
65
63
 
66
64
  #-------------------------------------------------------------------------#
@@ -194,11 +192,8 @@ module Pod
194
192
  to_hash.to_yaml
195
193
  end
196
194
 
197
- #-------------------------------------------------------------------------#
198
-
199
- public
200
-
201
195
  # @!group Class methods
196
+ #-------------------------------------------------------------------------#
202
197
 
203
198
  # Initializes a podfile from the file with the given path.
204
199
  #
@@ -236,7 +231,7 @@ module Pod
236
231
  def self.from_ruby(path)
237
232
  string = File.open(path, 'r:utf-8') { |f| f.read }
238
233
  # Work around for Rubinius incomplete encoding in 1.9 mode
239
- if string.respond_to?(:encoding) && string.encoding.name != "UTF-8"
234
+ if string.respond_to?(:encoding) && string.encoding.name != 'UTF-8'
240
235
  string.encode!('UTF-8')
241
236
  end
242
237
  podfile = Podfile.new(path) do
@@ -266,10 +261,10 @@ module Pod
266
261
  def self.from_yaml(path)
267
262
  string = File.open(path, 'r:utf-8') { |f| f.read }
268
263
  # Work around for Rubinius incomplete encoding in 1.9 mode
269
- if string.respond_to?(:encoding) && string.encoding.name != "UTF-8"
264
+ if string.respond_to?(:encoding) && string.encoding.name != 'UTF-8'
270
265
  string.encode!('UTF-8')
271
266
  end
272
- hash = YAML.load(string)
267
+ hash = YAMLHelper.load(string)
273
268
  from_hash(hash, path)
274
269
  end
275
270
 
@@ -358,6 +353,5 @@ module Pod
358
353
  end
359
354
 
360
355
  #-------------------------------------------------------------------------#
361
-
362
356
  end
363
357
  end
@@ -1,5 +1,4 @@
1
1
  module Pod
2
-
3
2
  # A Requirement is a set of one or more version restrictions of a
4
3
  # {Dependency}.
5
4
  #
@@ -10,8 +9,7 @@ module Pod
10
9
  # the Dependency class.
11
10
  #
12
11
  class Requirement < Pod::Vendor::Gem::Requirement
13
-
14
- quoted_operators = OPS.keys.map { |k| Regexp.quote k }.join "|"
12
+ quoted_operators = OPS.keys.map { |k| Regexp.quote k }.join '|'
15
13
 
16
14
  # @return [Regexp] The regular expression used to validate input strings.
17
15
  #
@@ -57,19 +55,17 @@ module Pod
57
55
  # @return [Array] A tuple representing the requirement.
58
56
  #
59
57
  def self.parse(input)
60
- return ["=", input] if input.is_a?(Version)
58
+ return ['=', input] if input.is_a?(Version)
61
59
 
62
60
  unless PATTERN =~ input.to_s
63
61
  raise ArgumentError, "Illformed requirement `#{input.inspect}`"
64
62
  end
65
63
 
66
- operator = Regexp.last_match[1] || "="
64
+ operator = Regexp.last_match[1] || '='
67
65
  version = Version.new(Regexp.last_match[2])
68
66
  [operator, version]
69
67
  end
70
68
 
71
69
  #-------------------------------------------------------------------------#
72
-
73
70
  end
74
-
75
71
  end
@@ -1,10 +1,8 @@
1
1
  module Pod
2
2
  class Source
3
-
4
3
  # Defines the required and the optional methods of a data provider.
5
4
  #
6
5
  class AbstractDataProvider
7
-
8
6
  public
9
7
 
10
8
  # @group Required methods
@@ -13,20 +11,20 @@ module Pod
13
11
  # @return [String] The name of the source.
14
12
  #
15
13
  def name
16
- raise StandardError, "Abstract method."
14
+ raise StandardError, 'Abstract method.'
17
15
  end
18
16
 
19
17
  # @return [String] The user friendly type of the source.
20
18
  #
21
19
  def type
22
- raise StandardError, "Abstract method."
20
+ raise StandardError, 'Abstract method.'
23
21
  end
24
22
 
25
23
  # @return [Array<String>] The list of the name of all the Pods known to
26
24
  # the Source.
27
25
  #
28
26
  def pods
29
- raise StandardError, "Abstract method."
27
+ raise StandardError, 'Abstract method.'
30
28
  end
31
29
 
32
30
  # @return [Array<String>] All the available versions of a given Pod,
@@ -36,7 +34,7 @@ module Pod
36
34
  # The name of the Pod.
37
35
  #
38
36
  def versions(name)
39
- raise StandardError, "Abstract method."
37
+ raise StandardError, 'Abstract method.'
40
38
  end
41
39
 
42
40
  # @return [Specification] The specification for a given version of a Pod.
@@ -48,7 +46,7 @@ module Pod
48
46
  # The version of the Pod.
49
47
  #
50
48
  def specification(name, version)
51
- raise StandardError, "Abstract method."
49
+ raise StandardError, 'Abstract method.'
52
50
  end
53
51
 
54
52
  # @return [Specification] The contents of the specification for a given
@@ -61,11 +59,10 @@ module Pod
61
59
  # the version of the Pod.
62
60
  #
63
61
  def specification_contents(name, version)
64
- raise StandardError, "Abstract method."
62
+ raise StandardError, 'Abstract method.'
65
63
  end
66
64
 
67
65
  #-----------------------------------------------------------------------#
68
-
69
66
  end
70
67
  end
71
68
  end
@@ -1,12 +1,10 @@
1
1
  module Pod
2
2
  class Source
3
-
4
3
  # Checks whether a podspec can be accepted by a source. The check takes
5
4
  # into account the introduction of 0.0.1 version if there are already
6
5
  # tagged ones or whether there is change in the source.
7
6
  #
8
7
  class Acceptor
9
-
10
8
  # @return [Source] the source where the podspec should be added.
11
9
  #
12
10
  attr_reader :source
@@ -45,7 +43,7 @@ module Pod
45
43
  spec = Specification.from_file(spec_path)
46
44
  analyze(spec)
47
45
  rescue
48
- ["Unable to load the specification."]
46
+ ['Unable to load the specification.']
49
47
  end
50
48
 
51
49
  private
@@ -53,6 +51,31 @@ module Pod
53
51
  # @!group Private helpers
54
52
  #-----------------------------------------------------------------------#
55
53
 
54
+ MAX_HTTP_REDIRECTS = 3
55
+
56
+ # Resolve potential redirects and return the final URL.
57
+ #
58
+ # @return [string]
59
+ #
60
+ def get_actual_url(url)
61
+ redirects = 0
62
+ loop do
63
+ require 'rest'
64
+ response = REST.head(url)
65
+
66
+ if [301, 302, 303, 307, 308].include? response.status_code
67
+ url = response.headers['location'].first
68
+ redirects += 1
69
+ else
70
+ break
71
+ end
72
+
73
+ break unless redirects < MAX_HTTP_REDIRECTS
74
+ end
75
+
76
+ url
77
+ end
78
+
56
79
  # Checks whether the source of the proposed specification is different
57
80
  # from the one of the reference specification.
58
81
  #
@@ -68,11 +91,15 @@ module Pod
68
91
  source = spec.source.values_at(*keys).compact.first
69
92
  old_source = reference_spec(spec).source.values_at(*keys).compact.first
70
93
  unless source == old_source
71
- message = "The source of the spec doesn't match with the recorded "
72
- message << "ones. Source: `#{source}`. Previous: `#{old_source}`.\n "
73
- message << "Please contact the specs repo maintainers if the"
74
- message << "library changed location."
75
- errors << message
94
+ source = get_actual_url(source)
95
+ old_source = get_actual_url(old_source)
96
+ unless source == old_source
97
+ message = "The source of the spec doesn't match with the recorded "
98
+ message << "ones. Source: `#{source}`. Previous: `#{old_source}`.\n "
99
+ message << 'Please contact the specs repo maintainers if the'
100
+ message << 'library changed location.'
101
+ errors << message
102
+ end
76
103
  end
77
104
  end
78
105
 
@@ -104,7 +131,7 @@ module Pod
104
131
  return unless previous_spec
105
132
  return unless spec.version == Version.new('0.0.1')
106
133
  unless spec.source[:commit] == previous_spec.source[:commit]
107
- errors << "Attempt to rewrite the commit of a 0.0.1 version."
134
+ errors << 'Attempt to rewrite the commit of a 0.0.1 version.'
108
135
  end
109
136
  end
110
137
 
@@ -161,7 +188,6 @@ module Pod
161
188
  end
162
189
 
163
190
  #-----------------------------------------------------------------------#
164
-
165
191
  end
166
192
  end
167
193
  end
@@ -1,10 +1,8 @@
1
1
  module Pod
2
2
  class Source
3
-
4
3
  # The Aggregate manages a directory of sources repositories.
5
4
  #
6
5
  class Aggregate
7
-
8
6
  # @return [Pathname] the directory were the repositories are stored.
9
7
  #
10
8
  attr_reader :repos_dir
@@ -102,7 +100,7 @@ module Pod
102
100
  # @see Source#search
103
101
  #
104
102
  def search(dependency)
105
- sources = all.select { |s| !s.search(dependency).nil? }
103
+ sources = all.select { |s| s.search(dependency) }
106
104
  unless sources.empty?
107
105
  Specification::Set.new(dependency.root_name, sources)
108
106
  end
@@ -132,7 +130,7 @@ module Pod
132
130
  result << Specification::Set.new(pod, sources)
133
131
  end
134
132
  if result.empty?
135
- extra = ", author, summary, or description" if full_text_search
133
+ extra = ', author, summary, or description' if full_text_search
136
134
  raise Informative, "Unable to find a pod with name" \
137
135
  "#{extra} matching `#{query}'"
138
136
  end
@@ -236,7 +234,6 @@ module Pod
236
234
  end
237
235
 
238
236
  #-----------------------------------------------------------------------#
239
-
240
237
  end
241
238
  end
242
239
  end
@@ -1,11 +1,9 @@
1
1
  module Pod
2
2
  class Source
3
-
4
3
  # Data provider for a `Pod::Source` backed by a repository hosted in the
5
4
  # file system.
6
5
  #
7
6
  class FileSystemDataProvider < AbstractDataProvider
8
-
9
7
  # @return [Pathname] The path where the source is stored.
10
8
  #
11
9
  attr_reader :repo
@@ -30,7 +28,7 @@ module Pod
30
28
  # @return [String] The user friendly type of the source.
31
29
  #
32
30
  def type
33
- "file system"
31
+ 'file system'
34
32
  end
35
33
 
36
34
  # @return [Array<String>] The list of the name of all the Pods known to
@@ -42,7 +40,7 @@ module Pod
42
40
  return nil unless specs_dir
43
41
  specs_dir_as_string = specs_dir.to_s
44
42
  Dir.entries(specs_dir).select do |entry|
45
- valid_name = !(entry == '.' || entry == '..' || entry == '.git')
43
+ valid_name = entry[0, 1] != '.'
46
44
  valid_name && File.directory?(File.join(specs_dir_as_string, entry))
47
45
  end.sort
48
46
  end
@@ -55,13 +53,13 @@ module Pod
55
53
  #
56
54
  def versions(name)
57
55
  return nil unless specs_dir
58
- raise ArgumentError, "No name" unless name
56
+ raise ArgumentError, 'No name' unless name
59
57
  pod_dir = specs_dir + name
60
58
  return unless pod_dir.exist?
61
59
  pod_dir.children.map do |v|
62
60
  basename = v.basename.to_s
63
- basename if v.directory? && basename[0, 1] != '.'
64
- end.compact.sort.reverse
61
+ Version.new(basename) if v.directory? && basename[0, 1] != '.'
62
+ end.compact.sort.reverse.map(&:to_s)
65
63
  end
66
64
 
67
65
  # @return [Specification] The specification for a given version of a Pod.
@@ -107,8 +105,8 @@ module Pod
107
105
  # @return [Pathname] The path of the specification.
108
106
  #
109
107
  def specification_path(name, version)
110
- raise ArgumentError, "No name" unless name
111
- raise ArgumentError, "No version" unless version
108
+ raise ArgumentError, 'No name' unless name
109
+ raise ArgumentError, 'No version' unless version
112
110
  return nil unless specs_dir
113
111
  path = specs_dir + name + version.to_s
114
112
  specification_path = path + "#{name}.podspec.json"
@@ -144,7 +142,6 @@ module Pod
144
142
  end
145
143
 
146
144
  #-----------------------------------------------------------------------#
147
-
148
145
  end
149
146
  end
150
147
  end