cocoapods 0.33.1 → 0.34.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +171 -46
  3. data/README.md +9 -9
  4. data/bin/pod +5 -5
  5. data/bin/sandbox-pod +2 -6
  6. data/lib/cocoapods.rb +4 -4
  7. data/lib/cocoapods/command.rb +12 -10
  8. data/lib/cocoapods/command/init.rb +12 -13
  9. data/lib/cocoapods/command/inter_process_communication.rb +6 -17
  10. data/lib/cocoapods/command/lib.rb +27 -24
  11. data/lib/cocoapods/command/list.rb +9 -9
  12. data/lib/cocoapods/command/outdated.rb +4 -9
  13. data/lib/cocoapods/command/project.rb +57 -19
  14. data/lib/cocoapods/command/push.rb +0 -1
  15. data/lib/cocoapods/command/repo.rb +14 -15
  16. data/lib/cocoapods/command/repo/push.rb +24 -19
  17. data/lib/cocoapods/command/search.rb +12 -13
  18. data/lib/cocoapods/command/setup.rb +10 -9
  19. data/lib/cocoapods/command/spec.rb +67 -63
  20. data/lib/cocoapods/config.rb +21 -54
  21. data/lib/cocoapods/downloader.rb +0 -1
  22. data/lib/cocoapods/executable.rb +3 -8
  23. data/lib/cocoapods/external_sources.rb +2 -4
  24. data/lib/cocoapods/external_sources/abstract_external_source.rb +15 -10
  25. data/lib/cocoapods/external_sources/downloader_source.rb +0 -2
  26. data/lib/cocoapods/external_sources/path_source.rb +1 -4
  27. data/lib/cocoapods/external_sources/podspec_source.rb +1 -3
  28. data/lib/cocoapods/gem_version.rb +1 -2
  29. data/lib/cocoapods/generator/acknowledgements.rb +5 -8
  30. data/lib/cocoapods/generator/acknowledgements/markdown.rb +5 -7
  31. data/lib/cocoapods/generator/acknowledgements/plist.rb +9 -10
  32. data/lib/cocoapods/generator/bridge_support.rb +1 -1
  33. data/lib/cocoapods/generator/copy_resources_script.rb +10 -14
  34. data/lib/cocoapods/generator/dummy_source.rb +3 -3
  35. data/lib/cocoapods/generator/prefix_header.rb +15 -16
  36. data/lib/cocoapods/generator/target_environment_header.rb +122 -36
  37. data/lib/cocoapods/generator/xcconfig.rb +0 -4
  38. data/lib/cocoapods/generator/xcconfig/aggregate_xcconfig.rb +74 -65
  39. data/lib/cocoapods/generator/xcconfig/private_pod_xcconfig.rb +92 -95
  40. data/lib/cocoapods/generator/xcconfig/public_pod_xcconfig.rb +48 -51
  41. data/lib/cocoapods/generator/xcconfig/xcconfig_helper.rb +10 -10
  42. data/lib/cocoapods/hooks/installer_representation.rb +15 -18
  43. data/lib/cocoapods/hooks/library_representation.rb +4 -8
  44. data/lib/cocoapods/hooks/pod_representation.rb +1 -5
  45. data/lib/cocoapods/hooks_manager.rb +63 -0
  46. data/lib/cocoapods/installer.rb +60 -47
  47. data/lib/cocoapods/installer/analyzer.rb +60 -62
  48. data/lib/cocoapods/installer/analyzer/sandbox_analyzer.rb +5 -8
  49. data/lib/cocoapods/installer/file_references_installer.rb +7 -10
  50. data/lib/cocoapods/installer/hooks_context.rb +74 -0
  51. data/lib/cocoapods/installer/migrator.rb +99 -0
  52. data/lib/cocoapods/installer/pod_source_installer.rb +9 -29
  53. data/lib/cocoapods/installer/target_installer.rb +7 -17
  54. data/lib/cocoapods/installer/target_installer/aggregate_target_installer.rb +40 -41
  55. data/lib/cocoapods/installer/target_installer/pod_target_installer.rb +43 -54
  56. data/lib/cocoapods/installer/user_project_integrator.rb +54 -10
  57. data/lib/cocoapods/installer/user_project_integrator/target_integrator.rb +66 -117
  58. data/lib/cocoapods/installer/user_project_integrator/target_integrator/xcconfig_integrator.rb +116 -0
  59. data/lib/cocoapods/open_uri.rb +1 -2
  60. data/lib/cocoapods/project.rb +34 -8
  61. data/lib/cocoapods/resolver.rb +43 -21
  62. data/lib/cocoapods/sandbox.rb +80 -75
  63. data/lib/cocoapods/sandbox/file_accessor.rb +3 -8
  64. data/lib/cocoapods/sandbox/headers_store.rb +6 -7
  65. data/lib/cocoapods/sandbox/path_list.rb +7 -10
  66. data/lib/cocoapods/sources_manager.rb +81 -49
  67. data/lib/cocoapods/target.rb +18 -12
  68. data/lib/cocoapods/target/aggregate_target.rb +43 -18
  69. data/lib/cocoapods/target/pod_target.rb +37 -4
  70. data/lib/cocoapods/user_interface.rb +19 -18
  71. data/lib/cocoapods/user_interface/error_report.rb +23 -4
  72. data/lib/cocoapods/validator.rb +30 -33
  73. metadata +100 -73
  74. data/lib/cocoapods/command/help.rb +0 -25
@@ -1,10 +1,8 @@
1
1
  module Pod
2
-
3
2
  # Stores the information relative to the target used to cluster the targets
4
3
  # of the single Pods. The client targets will then depend on this one.
5
4
  #
6
5
  class AggregateTarget < Target
7
-
8
6
  # @param [TargetDefinition] target_definition @see target_definition
9
7
  # @param [Sandbox] sandbox @see sandbox
10
8
  #
@@ -13,6 +11,7 @@ module Pod
13
11
  @sandbox = sandbox
14
12
  @pod_targets = []
15
13
  @file_accessors = []
14
+ @xcconfigs = {}
16
15
  end
17
16
 
18
17
  # @return [String] the label for the target.
@@ -36,21 +35,37 @@ module Pod
36
35
  #
37
36
  attr_accessor :user_project_path
38
37
 
39
- # @return [String] the list of the UUIDs of the user targets that will be
40
- # integrated by this target as identified by the analizer.
38
+ # @return [Array<String>] the list of the UUIDs of the user targets that
39
+ # will be integrated by this target as identified by the analyzer.
41
40
  #
42
41
  # @note The target instances are not stored to prevent editing different
43
42
  # instances.
44
43
  #
45
44
  attr_accessor :user_target_uuids
46
45
 
47
- # @return [Xcodeproj::Config] The configuration file of the target.
46
+ # @return [Array<PBXNativeTarget>] The list of all the user targets that
47
+ # will be integrated by this target.
48
+ #
49
+ def user_targets(project = nil)
50
+ project ||= Xcodeproj::Project.open(user_project_path)
51
+ user_target_uuids.map do |uuid|
52
+ native_target = project.objects_by_uuid[uuid]
53
+ unless native_target
54
+ raise Informative, '[Bug] Unable to find the target with ' \
55
+ "the `#{uuid}` UUID for the `#{self}` integration library"
56
+ end
57
+ native_target
58
+ end
59
+ end
60
+
61
+ # @return [Hash<String, Xcodeproj::Config>] Map from configuration name to
62
+ # configuration file for the target
48
63
  #
49
- # @note The configuration is generated by the {TargetInstaller} and
64
+ # @note The configurations are generated by the {TargetInstaller} and
50
65
  # used by {UserProjectIntegrator} to check for any overridden
51
66
  # values.
52
67
  #
53
- attr_accessor :xcconfig
68
+ attr_reader :xcconfigs
54
69
 
55
70
  # @return [Array<PodTarget>] The dependencies for this target.
56
71
  #
@@ -62,6 +77,19 @@ module Pod
62
77
  pod_targets.map(&:specs).flatten
63
78
  end
64
79
 
80
+ # @return [Hash{Symbol => Array<PodTarget>}] The pod targets for each
81
+ # build configuration.
82
+ #
83
+ def specs_by_build_configuration
84
+ result = {}
85
+ user_build_configurations.keys.each do |build_configuration|
86
+ result[build_configuration] = pod_targets.select do |pod_target|
87
+ pod_target.include_in_build_config?(build_configuration)
88
+ end.map(&:specs).flatten
89
+ end
90
+ result
91
+ end
92
+
65
93
  # @return [Array<Specification::Consumer>] The consumers of the Pod.
66
94
  #
67
95
  def spec_consumers
@@ -74,27 +102,28 @@ module Pod
74
102
  # the file type.
75
103
  #
76
104
  def acknowledgements_basepath
77
- support_files_root + "#{label}-acknowledgements"
105
+ support_files_dir + "#{label}-acknowledgements"
78
106
  end
79
107
 
80
108
  # @return [Pathname] The absolute path of the copy resources script.
81
109
  #
82
110
  def copy_resources_script_path
83
- support_files_root + "#{label}-resources.sh"
111
+ support_files_dir + "#{label}-resources.sh"
84
112
  end
85
113
 
86
114
  # @return [String] The xcconfig path of the root from the `$(SRCROOT)`
87
115
  # variable of the user's project.
88
116
  #
89
117
  def relative_pods_root
90
- "${SRCROOT}/#{support_files_root.relative_path_from(client_root)}"
118
+ "${SRCROOT}/#{sandbox.root.relative_path_from(client_root)}"
91
119
  end
92
120
 
121
+ # @param [String] config_name The build configuration name to get the xcconfig for
93
122
  # @return [String] The path of the xcconfig file relative to the root of
94
123
  # the user project.
95
124
  #
96
- def xcconfig_relative_path
97
- relative_to_srcroot(xcconfig_path).to_s
125
+ def xcconfig_relative_path(config_name)
126
+ relative_to_srcroot(xcconfig_path(config_name)).to_s
98
127
  end
99
128
 
100
129
  # @return [String] The path of the copy resources script relative to the
@@ -104,11 +133,10 @@ module Pod
104
133
  "${SRCROOT}/#{relative_to_srcroot(copy_resources_script_path)}"
105
134
  end
106
135
 
107
- #-------------------------------------------------------------------------#
136
+ private
108
137
 
109
138
  # @!group Private Helpers
110
-
111
- private
139
+ #-------------------------------------------------------------------------#
112
140
 
113
141
  # Computes the relative path of a sandboxed file from the `$(SRCROOT)`
114
142
  # variable of the user's project.
@@ -121,8 +149,5 @@ module Pod
121
149
  def relative_to_srcroot(path)
122
150
  path.relative_path_from(client_root).to_s
123
151
  end
124
-
125
- #-------------------------------------------------------------------------#
126
-
127
152
  end
128
153
  end
@@ -1,10 +1,8 @@
1
1
  module Pod
2
-
3
2
  # Stores the information relative to the target used to compile a single Pod.
4
3
  # A pod can have one or more activated spec/subspecs.
5
4
  #
6
5
  class PodTarget < Target
7
-
8
6
  # @return [Specification] the spec for the target.
9
7
  #
10
8
  attr_reader :specs
@@ -21,14 +19,14 @@ module Pod
21
19
  @specs = specs
22
20
  @target_definition = target_definition
23
21
  @sandbox = sandbox
24
- @build_headers = Sandbox::HeadersStore.new(sandbox, "BuildHeaders")
22
+ @build_headers = Sandbox::HeadersStore.new(sandbox, 'Build')
25
23
  @file_accessors = []
26
24
  end
27
25
 
28
26
  # @return [String] the label for the target.
29
27
  #
30
28
  def label
31
- "#{target_definition.label.to_s}-#{root_spec.name}"
29
+ "#{target_definition.label}-#{root_spec.name}"
32
30
  end
33
31
 
34
32
  # @return [Array<Sandbox::FileAccessor>] the file accessors for the
@@ -64,5 +62,40 @@ module Pod
64
62
  end.flatten
65
63
  end
66
64
 
65
+ # Checks if the target should be included in the build configuration with
66
+ # the given name.
67
+ #
68
+ # @param [String] configuration_name
69
+ # The name of the build configuration.
70
+ #
71
+ def include_in_build_config?(configuration_name)
72
+ whitelists = target_definition_dependencies.map do |dependency|
73
+ target_definition.pod_whitelisted_for_configuration?(dependency.name, configuration_name)
74
+ end.uniq
75
+
76
+ if whitelists.empty?
77
+ return true
78
+ elsif whitelists.count == 1
79
+ whitelists.first
80
+ else
81
+ raise Informative, "The subspecs of `#{pod_name}` are linked to " \
82
+ "different build configurations for the `#{target_definition}` " \
83
+ 'target. CocoaPods does not currently support subspecs across ' \
84
+ 'different build configurations.'
85
+ end
86
+ end
87
+
88
+ private
89
+
90
+ # @return [Array<Dependency>] The dependency of the target definition for
91
+ # this Pod. Return an empty array if the Pod is not a direct
92
+ # dependency of the target definition but the dependency of one or
93
+ # more Pods.
94
+ #
95
+ def target_definition_dependencies
96
+ target_definition.dependencies.select do |dependency|
97
+ Specification.root_name(dependency.name) == pod_name
98
+ end
99
+ end
67
100
  end
68
101
  end
@@ -1,22 +1,19 @@
1
1
  require 'cocoapods/user_interface/error_report'
2
2
 
3
3
  module Pod
4
-
5
4
  # Provides support for UI output. It provides support for nested sections of
6
5
  # information and for a verbose mode.
7
6
  #
8
7
  module UserInterface
9
-
10
8
  require 'colored'
11
9
 
12
- @title_colors = %w|yellow green|
10
+ @title_colors = %w( yellow green )
13
11
  @title_level = 0
14
12
  @indentation_level = 2
15
13
  @treat_titles_as_messages = false
16
14
  @warnings = []
17
15
 
18
16
  class << self
19
-
20
17
  include Config::Mixin
21
18
 
22
19
  attr_accessor :indentation_level
@@ -27,7 +24,7 @@ module Pod
27
24
  # terminal should be disabled.
28
25
  #
29
26
  attr_accessor :disable_wrap
30
- alias_method :disable_wrap?, :disable_wrap
27
+ alias_method :disable_wrap?, :disable_wrap
31
28
 
32
29
  # Prints a title taking an optional verbose prefix and
33
30
  # a relative indentation valid for the UI action in the passed
@@ -78,7 +75,7 @@ module Pod
78
75
  # A title opposed to a section is always visible
79
76
  #
80
77
  def title(title, verbose_prefix = '', relative_indentation = 2)
81
- if(@treat_titles_as_messages)
78
+ if @treat_titles_as_messages
82
79
  message(title, verbose_prefix)
83
80
  else
84
81
  title = verbose_prefix + title if config.verbose?
@@ -122,7 +119,7 @@ module Pod
122
119
  #
123
120
  def info(message)
124
121
  indentation = config.verbose? ? self.indentation_level : 0
125
- indented = wrap_string(message, " " * indentation)
122
+ indented = wrap_string(message, ' ' * indentation)
126
123
  puts(indented)
127
124
 
128
125
  self.indentation_level += 2
@@ -148,7 +145,9 @@ module Pod
148
145
  #
149
146
  def path(pathname)
150
147
  if pathname
151
- path = pathname.relative_path_from((config.podfile_path.dirname if config.podfile_path) || Pathname.pwd)
148
+ from_path = config.podfile_path.dirname if config.podfile_path
149
+ from_path ||= Pathname.pwd
150
+ path = Pathname(pathname).relative_path_from(from_path)
152
151
  "`#{path}`"
153
152
  else
154
153
  ''
@@ -162,7 +161,15 @@ module Pod
162
161
  puts_indented "#{set.name} #{set.versions.first.version}"
163
162
  else
164
163
  pod = Specification::Set::Presenter.new(set, statistics_provider)
165
- title("\n-> #{pod.name} (#{pod.version})".green, '', 1) do
164
+ title = "\n-> #{pod.name} (#{pod.version})"
165
+ if pod.spec.deprecated?
166
+ title += " #{pod.deprecation_description}"
167
+ colored_title = title.red
168
+ else
169
+ colored_title = title.green
170
+ end
171
+
172
+ title(colored_title, '', 1) do
166
173
  puts_indented pod.summary
167
174
  puts_indented "pod '#{pod.name}', '~> #{pod.version}'"
168
175
  labeled('Homepage', pod.homepage)
@@ -202,7 +209,7 @@ module Pod
202
209
  # wrapping it to the terminal width if necessary.
203
210
  #
204
211
  def puts_indented(message = '')
205
- indented = wrap_string(message, " " * self.indentation_level)
212
+ indented = wrap_string(message, ' ' * self.indentation_level)
206
213
  puts(indented)
207
214
  end
208
215
 
@@ -217,7 +224,7 @@ module Pod
217
224
  next if warning[:verbose_only] && !config.verbose?
218
225
  STDERR.puts("\n[!] #{warning[:message]}".yellow)
219
226
  warning[:actions].each do |action|
220
- indented = wrap_string(action, " - ")
227
+ indented = wrap_string(action, ' - ')
221
228
  puts(indented)
222
229
  end
223
230
  end
@@ -294,9 +301,7 @@ module Pod
294
301
  # Redirects cocoapods-core UI.
295
302
  #
296
303
  module CoreUI
297
-
298
304
  class << self
299
-
300
305
  def puts(message)
301
306
  UI.puts message
302
307
  end
@@ -308,14 +313,12 @@ module Pod
308
313
  end
309
314
  end
310
315
 
311
- #---------------------------------------------------------------------------#
316
+ #---------------------------------------------------------------------------#
312
317
 
313
318
  module Xcodeproj
314
-
315
319
  # Redirects xcodeproj UI.
316
320
  #
317
321
  module UserInterface
318
-
319
322
  def self.puts(message)
320
323
  ::Pod::UI.puts message
321
324
  end
@@ -323,7 +326,5 @@ module Xcodeproj
323
326
  def self.warn(message)
324
327
  ::Pod::UI.warn message
325
328
  end
326
-
327
329
  end
328
330
  end
329
-
@@ -8,7 +8,7 @@ module Pod
8
8
  module ErrorReport
9
9
  class << self
10
10
  def report(exception)
11
- return <<-EOS
11
+ <<-EOS
12
12
 
13
13
  #{'――― MARKDOWN TEMPLATE ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――'.reversed}
14
14
 
@@ -32,6 +32,12 @@ module Pod
32
32
  Ruby lib dir : #{RbConfig::CONFIG['libdir']}
33
33
  Repositories : #{repo_information.join("\n ")}
34
34
  ```
35
+
36
+ ### Plugins
37
+
38
+ ```
39
+ #{plugins_string}
40
+ ```
35
41
  #{markdown_podfile}
36
42
  ### Error
37
43
 
@@ -75,7 +81,7 @@ EOS
75
81
 
76
82
  def error_from_podfile(error)
77
83
  if error.message =~ /Podfile:(\d*)/
78
- "\nIt appears to have originated from your Podfile at line #{$1}.\n"
84
+ "\nIt appears to have originated from your Podfile at line #{Regexp.last_match[1]}.\n"
79
85
  end
80
86
  end
81
87
 
@@ -90,15 +96,28 @@ EOS
90
96
  end
91
97
 
92
98
  def host_information
93
- product, version, build =`sw_vers`.strip.split("\n").map { |line| line.split(":").last.strip }
99
+ product, version, build = `sw_vers`.strip.split("\n").map { |line| line.split(':').last.strip }
94
100
  "#{product} #{version} (#{build})"
95
101
  end
96
102
 
97
103
  def xcode_information
98
- version, build = `xcodebuild -version`.strip.split("\n").map { |line| line.split(" ").last }
104
+ version, build = `xcodebuild -version`.strip.split("\n").map { |line| line.split(' ').last }
99
105
  "#{version} (#{build})"
100
106
  end
101
107
 
108
+ def installed_plugins
109
+ CLAide::Command::PluginsHelper.specifications.
110
+ reduce({}) { |hash, s| hash.tap { |h| h[s.name] = s.version.to_s } }
111
+ end
112
+
113
+ def plugins_string
114
+ plugins = installed_plugins
115
+ max_name_length = plugins.keys.map(&:length).max
116
+ plugins.map do |name, version|
117
+ "#{name.ljust(max_name_length)} : #{version}"
118
+ end.sort.join("\n")
119
+ end
120
+
102
121
  def repo_information
103
122
  SourcesManager.all.map do |source|
104
123
  next unless source.type == 'file system'
@@ -1,5 +1,4 @@
1
1
  module Pod
2
-
3
2
  # Validates a Specification.
4
3
  #
5
4
  # Extends the Linter from the Core to add additional which require the
@@ -10,7 +9,6 @@ module Pod
10
9
  # it without integration and building the project with xcodebuild.
11
10
  #
12
11
  class Validator
13
-
14
12
  include Config::Mixin
15
13
 
16
14
  # @return [Specification::Linter] the linter instance from CocoaPods
@@ -70,7 +68,7 @@ module Pod
70
68
  perform_linting
71
69
  perform_extensive_analysis(a_spec) if a_spec && !quick
72
70
 
73
- UI.puts " -> ".send(result_color) << (a_spec ? a_spec.to_s : file.basename.to_s)
71
+ UI.puts ' -> '.send(result_color) << (a_spec ? a_spec.to_s : file.basename.to_s)
74
72
  print_results
75
73
  validated?
76
74
  end
@@ -82,25 +80,25 @@ module Pod
82
80
  def print_results
83
81
  results.each do |result|
84
82
  if result.platforms == [:ios]
85
- platform_message = "[iOS] "
83
+ platform_message = '[iOS] '
86
84
  elsif result.platforms == [:osx]
87
- platform_message = "[OSX] "
85
+ platform_message = '[OSX] '
88
86
  end
89
87
 
90
- subspecs_message = ""
88
+ subspecs_message = ''
91
89
  if result.is_a?(Result)
92
- subspecs = result.subspecs.uniq
93
- if subspecs.count > 2
94
- subspecs_message = "[" + subspecs[0..2].join(', ') + ", and more...] "
95
- elsif subspecs.count > 0
96
- subspecs_message = "[" + subspecs.join(',') + "] "
97
- end
90
+ subspecs = result.subspecs.uniq
91
+ if subspecs.count > 2
92
+ subspecs_message = '[' + subspecs[0..2].join(', ') + ', and more...] '
93
+ elsif subspecs.count > 0
94
+ subspecs_message = '[' + subspecs.join(',') + '] '
95
+ end
98
96
  end
99
97
 
100
98
  case result.type
101
- when :error then type = "ERROR"
102
- when :warning then type = "WARN"
103
- when :note then type = "NOTE"
99
+ when :error then type = 'ERROR'
100
+ when :warning then type = 'WARN'
101
+ when :note then type = 'NOTE'
104
102
  else raise "#{result.type}" end
105
103
  UI.puts " - #{type.ljust(5)} | #{platform_message}#{subspecs_message}#{result.message}"
106
104
  end
@@ -109,7 +107,7 @@ module Pod
109
107
 
110
108
  #-------------------------------------------------------------------------#
111
109
 
112
- # @!group Configuration
110
+ #  @!group Configuration
113
111
 
114
112
  # @return [Bool] whether the validation should skip the checks that
115
113
  # requires the download of the library.
@@ -126,8 +124,8 @@ module Pod
126
124
  #
127
125
  # @note Uses the `:path` option of the Podfile.
128
126
  #
129
- attr_writer :local
130
- def local?; @local; end
127
+ attr_accessor :local
128
+ alias_method :local?, :local
131
129
 
132
130
  # @return [Bool] Whether the validator should fail only on errors or also
133
131
  # on warnings.
@@ -177,7 +175,7 @@ module Pod
177
175
  # @return [Pathname] the temporary directory used by the linter.
178
176
  #
179
177
  def validation_dir
180
- Pathname.new(File.join(Pathname.new('/tmp').realpath,'CocoaPods/Lint'))
178
+ Pathname.new(File.join(Pathname.new('/tmp').realpath, 'CocoaPods/Lint'))
181
179
  end
182
180
 
183
181
  #-------------------------------------------------------------------------#
@@ -229,7 +227,7 @@ module Pod
229
227
  # Performs validation of a URL
230
228
  #
231
229
  def validate_url(url)
232
- resp = Pod::HTTP::validate_url(url)
230
+ resp = Pod::HTTP.validate_url(url)
233
231
 
234
232
  if !resp
235
233
  warning "There was a problem validating the URL #{url}."
@@ -351,8 +349,10 @@ module Pod
351
349
  end
352
350
  end
353
351
 
354
- unless file_accessor.license || spec.license && ( spec.license[:type] == 'Public Domain' || spec.license[:text] )
355
- warning "Unable to find a license file"
352
+ if consumer.spec.root?
353
+ unless file_accessor.license || spec.license && ( spec.license[:type] == 'Public Domain' || spec.license[:text])
354
+ warning 'Unable to find a license file'
355
+ end
356
356
  end
357
357
  end
358
358
 
@@ -387,14 +387,12 @@ module Pod
387
387
  # Specialized Result to support subspecs aggregation
388
388
  #
389
389
  class Result < Specification::Linter::Result
390
+ def initialize(type, message)
391
+ super(type, message)
392
+ @subspecs = []
393
+ end
390
394
 
391
- def initialize(type, message)
392
- super(type, message)
393
- @subspecs = []
394
- end
395
-
396
- attr_reader :subspecs
397
-
395
+ attr_reader :subspecs
398
396
  end
399
397
 
400
398
  #-------------------------------------------------------------------------#
@@ -415,7 +413,7 @@ module Pod
415
413
  local = local?
416
414
  podfile = Pod::Podfile.new do
417
415
  platform(platform_name, deployment_target)
418
- if (local)
416
+ if local
419
417
  pod name, :path => podspec.dirname.to_s
420
418
  else
421
419
  pod name, :podspec => podspec.to_s
@@ -443,8 +441,8 @@ module Pod
443
441
  l.include?('note: ') && (l !~ /expanded from macro/)
444
442
  end
445
443
  selected_lines.map do |l|
446
- new = l.gsub(/\/tmp\/CocoaPods\/Lint\/Pods\//,'')
447
- new.gsub!(/^ */,' ')
444
+ new = l.gsub(/\/tmp\/CocoaPods\/Lint\/Pods\//, '')
445
+ new.gsub!(/^ */, ' ')
448
446
  end
449
447
  end
450
448
 
@@ -457,6 +455,5 @@ module Pod
457
455
  end
458
456
 
459
457
  #-------------------------------------------------------------------------#
460
-
461
458
  end
462
459
  end