cocoapods 0.14.0 → 0.15.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. data/CHANGELOG.md +42 -9
  2. data/bin/pod +4 -0
  3. data/lib/cocoapods.rb +2 -2
  4. data/lib/cocoapods/command.rb +2 -25
  5. data/lib/cocoapods/command/install.rb +1 -2
  6. data/lib/cocoapods/command/linter.rb +24 -4
  7. data/lib/cocoapods/command/list.rb +16 -11
  8. data/lib/cocoapods/command/outdated.rb +2 -4
  9. data/lib/cocoapods/command/push.rb +10 -10
  10. data/lib/cocoapods/command/repo.rb +22 -20
  11. data/lib/cocoapods/command/search.rb +6 -4
  12. data/lib/cocoapods/command/setup.rb +15 -14
  13. data/lib/cocoapods/command/spec.rb +17 -14
  14. data/lib/cocoapods/command/update.rb +9 -1
  15. data/lib/cocoapods/config.rb +12 -4
  16. data/lib/cocoapods/dependency.rb +18 -15
  17. data/lib/cocoapods/downloader/git.rb +41 -28
  18. data/lib/cocoapods/downloader/http.rb +10 -3
  19. data/lib/cocoapods/downloader/mercurial.rb +6 -4
  20. data/lib/cocoapods/downloader/subversion.rb +6 -2
  21. data/lib/cocoapods/executable.rb +6 -6
  22. data/lib/cocoapods/generator/acknowledgements/markdown.rb +1 -0
  23. data/lib/cocoapods/installer.rb +73 -57
  24. data/lib/cocoapods/installer/target_installer.rb +15 -11
  25. data/lib/cocoapods/installer/user_project_integrator.rb +25 -16
  26. data/lib/cocoapods/local_pod.rb +34 -12
  27. data/lib/cocoapods/podfile.rb +15 -0
  28. data/lib/cocoapods/resolver.rb +33 -39
  29. data/lib/cocoapods/source.rb +172 -48
  30. data/lib/cocoapods/specification.rb +48 -32
  31. data/lib/cocoapods/specification/set.rb +102 -34
  32. data/lib/cocoapods/specification/statistics.rb +1 -1
  33. data/lib/cocoapods/user_interface.rb +215 -0
  34. data/lib/cocoapods/user_interface/ui_pod.rb +130 -0
  35. metadata +7 -7
  36. data/lib/cocoapods/command/presenter.rb +0 -61
  37. data/lib/cocoapods/command/presenter/cocoa_pod.rb +0 -118
@@ -1,6 +1,45 @@
1
1
  ## Master
2
2
 
3
- [CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.14.0...master)
3
+ [CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.15.0...master)
4
+
5
+ ## 0.15.0
6
+
7
+ [CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.14.0...0.15.0) • [Xcodeproj](https://github.com/CocoaPods/Xcodeproj/compare/0.3.3...0.3.4)
8
+
9
+ ###### Enhancements
10
+ - Pod `install` will update the specs repo only if needed.
11
+ [#533](https://github.com/CocoaPods/CocoaPods/issues/533)
12
+ - CocoaPods now searches for the highest version of a Pod on all the repos.
13
+ [#85](https://github.com/CocoaPods/CocoaPods/issues/85)
14
+ - Added a pre install hook to the Podfile and to root specifications.
15
+ [#486](https://github.com/CocoaPods/CocoaPods/issues/486)
16
+ - Support for `header_mappings_dir` attribute in subspecs.
17
+ - Added support for linting a Podspec using the files from its folder `pod spec
18
+ lint --local`
19
+ - Refactored UI.
20
+ - Added support for Podfiles named `CocoaPods.podfile` which allows to
21
+ associate an editor application in Mac OS X.
22
+ [#528](https://github.com/CocoaPods/CocoaPods/issues/528)
23
+ - Added config option to disable the new version available message.
24
+ [#448](https://github.com/CocoaPods/CocoaPods/issues/448)
25
+ - Added support for extracting `.tar.bz2` files
26
+ [#522](https://github.com/CocoaPods/CocoaPods/issues/522)
27
+ - Improved feedback for errors of repo subcommands.
28
+ [#505](https://github.com/CocoaPods/CocoaPods/issues/505)
29
+
30
+
31
+ ###### Bug fixes
32
+ - Subspecs namespacing has been restored.
33
+ [#541](https://github.com/CocoaPods/CocoaPods/issues/541)
34
+ - Improvements to the git cache that should be more robust.
35
+ [#517](https://github.com/CocoaPods/CocoaPods/issues/517)
36
+ - In certain conditions pod setup would execute twice.
37
+ - The git cache now is updated if a branch is not found
38
+ [#514](https://github.com/CocoaPods/CocoaPods/issues/514)
39
+ - Forcing UTF-8 encoding on licenses generation in Ruby 1.9.
40
+ [#530](https://github.com/CocoaPods/CocoaPods/issues/530)
41
+ - Added support for `.hpp` headers.
42
+ [#244](https://github.com/CocoaPods/CocoaPods/issues/244)
4
43
 
5
44
  ## 0.14.0
6
45
 
@@ -45,32 +84,26 @@
45
84
  [#191](https://github.com/CocoaPods/CocoaPods/issues/191)
46
85
  - the external source changes.
47
86
  - the head status changes (from disabled to enabled or vice-versa).
48
-
49
87
  - Introduce `pod update` command that installs the dependencies of the Podfile
50
88
  **ignoring** the lockfile `Podfile.lock`.
51
89
  [#131](https://github.com/CocoaPods/CocoaPods/issues/131)
52
-
53
90
  - Introduce `pod outdated` command that shows the pods with known updates.
54
-
55
91
  - Add `:local` option for dependencies which will use the source files directly
56
92
  from a local directory. This is usually used for libraries that are being
57
93
  developed in parallel to the end product (application/library).
58
94
  [#458](https://github.com/CocoaPods/CocoaPods/issues/458),
59
95
  [#415](https://github.com/CocoaPods/CocoaPods/issues/415),
60
96
  [#156](https://github.com/CocoaPods/CocoaPods/issues/156).
61
-
62
97
  - Folders of Pods which are no longer required are removed during installation.
63
98
  [#298](https://github.com/CocoaPods/CocoaPods/issues/298)
64
-
65
- - Add meaningful error messages for when:
66
- - a podspec can’t be found in the root of an external source.
99
+ - Add meaningful error messages
100
+ - ia podspec can’t be found in the root of an external source.
67
101
  [#385](https://github.com/CocoaPods/CocoaPods/issues/385),
68
102
  [#338](https://github.com/CocoaPods/CocoaPods/issues/338),
69
103
  [#337](https://github.com/CocoaPods/CocoaPods/issues/337).
70
104
  - a subspec name is misspelled.
71
105
  [#327](https://github.com/CocoaPods/CocoaPods/issues/327)
72
106
  - an unrecognized command and/or argument is provided.
73
-
74
107
  - The subversion downloader now does an export instead of a checkout, which
75
108
  makes it play nicer with SCMs that store metadata in each directory.
76
109
  [#245](https://github.com/CocoaPods/CocoaPods/issues/245)
data/bin/pod CHANGED
@@ -7,6 +7,10 @@ if $0 == __FILE__
7
7
  $:.unshift File.expand_path('../../lib', __FILE__)
8
8
  end
9
9
 
10
+ if (ENV['CP_STDOUT_SYNC'] == 'TRUE')
11
+ STDOUT.sync = true
12
+ end
13
+
10
14
  require 'cocoapods'
11
15
 
12
16
  Pod::Command.run(*ARGV)
@@ -7,13 +7,12 @@ require 'rubygems'
7
7
  #
8
8
  # E.g. https://github.com/CocoaPods/CocoaPods/issues/398
9
9
  unless Gem::Version::Requirement.new('>= 1.4.0').satisfied_by?(Gem::Version.new(Gem::VERSION))
10
- require 'colored'
11
10
  STDERR.puts "Your RubyGems version (#{Gem::VERSION}) is too old, please update with: `gem update --system`".red
12
11
  exit 1
13
12
  end
14
13
 
15
14
  module Pod
16
- VERSION = '0.14.0'
15
+ VERSION = '0.15.0'
17
16
 
18
17
  class PlainInformative < StandardError
19
18
  end
@@ -41,6 +40,7 @@ module Pod
41
40
  autoload :Source, 'cocoapods/source'
42
41
  autoload :Spec, 'cocoapods/specification'
43
42
  autoload :Specification, 'cocoapods/specification'
43
+ autoload :UI, 'cocoapods/user_interface'
44
44
  autoload :Version, 'cocoapods/version'
45
45
 
46
46
  autoload :Pathname, 'pathname'
@@ -7,7 +7,6 @@ module Pod
7
7
  autoload :List, 'cocoapods/command/list'
8
8
  autoload :Linter, 'cocoapods/command/linter'
9
9
  autoload :Outdated, 'cocoapods/command/outdated'
10
- autoload :Presenter, 'cocoapods/command/presenter'
11
10
  autoload :Push, 'cocoapods/command/push'
12
11
  autoload :Repo, 'cocoapods/command/repo'
13
12
  autoload :Search, 'cocoapods/command/search'
@@ -70,10 +69,11 @@ module Pod
70
69
 
71
70
  def self.run(*argv)
72
71
  sub_command = parse(*argv)
73
- unless ENV['SKIP_SETUP']
72
+ unless sub_command.is_a?(Setup) || ENV['SKIP_SETUP']
74
73
  Setup.new(ARGV.new).run_if_needed
75
74
  end
76
75
  sub_command.run
76
+ UI.puts
77
77
 
78
78
  rescue Interrupt
79
79
  puts "[!] Cancelled".red
@@ -142,29 +142,6 @@ module Pod
142
142
  raise Informative, "No `Podfile.lock' found in the current working directory, run `pod install'."
143
143
  end
144
144
  end
145
-
146
- def update_spec_repos_if_necessary!
147
- if @update_repo
148
- print_title 'Updating Spec Repositories', true
149
- Repo.new(ARGV.new(["update"])).run
150
- end
151
- end
152
-
153
- def print_title(title, only_verbose = true)
154
- if config.verbose?
155
- puts "\n" + title.yellow
156
- elsif !config.silent? && !only_verbose
157
- puts title
158
- end
159
- end
160
-
161
- def print_subtitle(title, only_verbose = false)
162
- if config.verbose?
163
- puts "\n" + title.green
164
- elsif !config.silent? && !only_verbose
165
- puts title
166
- end
167
- end
168
145
  end
169
146
  end
170
147
 
@@ -35,7 +35,7 @@ module Pod
35
35
  config.clean = !argv.option('--no-clean')
36
36
  config.generate_docs = !argv.option('--no-doc')
37
37
  config.integrate_targets = !argv.option('--no-integrate')
38
- @update_repo = !argv.option('--no-update')
38
+ config.skip_repo_update = argv.option('--no-update')
39
39
  super unless argv.empty?
40
40
  end
41
41
 
@@ -48,7 +48,6 @@ module Pod
48
48
 
49
49
  def run
50
50
  verify_podfile_exists!
51
- update_spec_repos_if_necessary!
52
51
  run_install_with_update(false)
53
52
  end
54
53
  end
@@ -6,6 +6,14 @@ module Pod
6
6
  # TODO: Add check to ensure that attributes inherited by subspecs are not duplicated ?
7
7
 
8
8
  attr_accessor :quick, :no_clean, :repo_path
9
+
10
+ # @return [Bool] Wether the lint should be performed against the root of
11
+ # the podspec instead to its original source. Uses the `:local` option
12
+ # of the Podfile.
13
+ #
14
+ attr_accessor :local
15
+ alias :local? :local
16
+
9
17
  attr_reader :spec, :file
10
18
  attr_reader :errors, :warnings, :notes
11
19
 
@@ -91,7 +99,7 @@ module Pod
91
99
  if `which xcodebuild`.strip.empty?
92
100
  puts "Skipping compilation with `xcodebuild' because it can't be found.\n".yellow if config.verbose?
93
101
  else
94
- puts "Building with xcodebuild.\n".yellow if config.verbose?
102
+ puts "\nBuilding with xcodebuild.\n".yellow if config.verbose?
95
103
  # treat xcodebuild warnings as notes because the spec maintainer might not be the author of the library
96
104
  xcodebuild_output.each { |msg| ( msg.include?('error: ') ? @platform_errors[@platform] : @platform_notes[@platform] ) << msg }
97
105
  end
@@ -103,6 +111,7 @@ module Pod
103
111
  def install_pod
104
112
  podfile = podfile_from_spec
105
113
  config.verbose
114
+ config.skip_repo_update = true
106
115
  sandbox = Sandbox.new(config.project_pods_root)
107
116
  resolver = Resolver.new(podfile, nil, sandbox)
108
117
  installer = Installer.new(resolver)
@@ -113,11 +122,16 @@ module Pod
113
122
 
114
123
  def podfile_from_spec
115
124
  name = spec.name
116
- podspec = file.realpath.to_s
125
+ podspec = file.realpath
117
126
  platform = @platform
127
+ local = local?
118
128
  podfile = Pod::Podfile.new do
119
129
  platform(platform.to_sym, platform.deployment_target)
120
- pod name, :podspec => podspec
130
+ if (local)
131
+ pod name, :local => podspec.dirname.to_s
132
+ else
133
+ pod name, :podspec => podspec.to_s
134
+ end
121
135
  end
122
136
  podfile
123
137
  end
@@ -166,10 +180,11 @@ module Pod
166
180
  messages << "Unrecognized platfrom" unless platform_valid?
167
181
  messages << "Missing name" unless spec.name
168
182
  messages << "Missing version" unless spec.version
169
- messages << "Missing summary" unless spec.summary
183
+ messages << "Missing summary" if !spec.summary || spec.summary.empty?
170
184
  messages << "Missing homepage" unless spec.homepage
171
185
  messages << "Missing author(s)" unless spec.authors
172
186
  messages << "Missing or invalid source: #{spec.source}" unless source_valid?
187
+ messages << "The summary should be short use `description` (max 140 characters)." if spec.summary && spec.summary.length > 140
173
188
 
174
189
  # attributes with multiplatform values
175
190
  return messages unless platform_valid?
@@ -227,11 +242,16 @@ module Pod
227
242
  messages << "The description is not meaningful" if spec.description && spec.description =~ /An optional longer description of/
228
243
  messages << "The summary should end with a dot" if spec.summary !~ /.*\./
229
244
  messages << "The description should end with a dot" if spec.description !~ /.*\./ && spec.description != spec.summary
245
+ messages << "The summary should end with a dot" if spec.summary !~ /.*\./
230
246
  messages << "Comments must be deleted" if text.scan(/^\s*#/).length > 24
231
247
  messages << "Warnings must not be disabled (`-Wno' compiler flags)" if spec.compiler_flags.split(' ').any? {|flag| flag.start_with?('-Wno') }
232
248
 
233
249
  if (git_source = source[:git])
234
250
  messages << "Git sources should specify either a tag or a commit" unless source[:commit] || source[:tag]
251
+ if spec.version.to_s != '0.0.1'
252
+ messages << "The version of the spec should be part of the git tag (not always applicable)" if source[:tag] && !source[:tag].include?(spec.version.to_s)
253
+ messages << "Git sources without tag should be marked as 0.0.1 (not always applicable)" if !source[:tag]
254
+ end
235
255
  if git_source.include?('github.com')
236
256
  messages << "Github repositories should end in `.git'" unless git_source.end_with?('.git')
237
257
  messages << "Github repositories should use `https' link" unless git_source.start_with?('https://github.com') || git_source.start_with?('git://gist.github.com')
@@ -14,23 +14,26 @@ module Pod
14
14
  end
15
15
 
16
16
  def self.options
17
- [["--update", "Run `pod repo update` before listing"]].concat(Presenter.options).concat(super)
17
+ [[
18
+ "--update", "Run `pod repo update` before listing",
19
+ "--stats", "Show additional stats (like GitHub watchers and forks)"
20
+ ]].concat(super)
18
21
  end
19
22
 
20
23
  extend Executable
21
24
  executable :git
22
25
 
23
26
  def initialize(argv)
24
- @update = argv.option('--update')
25
- @new = argv.option('new')
26
- @presenter = Presenter.new(argv)
27
+ @update = argv.option('--update')
28
+ @stats = argv.option('--stats')
29
+ @new = argv.option('new')
27
30
  super unless argv.empty?
28
31
  end
29
32
 
30
33
  def list_all
31
34
  sets = Source.all_sets
32
- sets.each {|s| puts @presenter.describe(s)}
33
- puts "\n#{sets.count} pods were found"
35
+ sets.each { |set| UI.pod(set, :name) }
36
+ UI.puts "\n#{sets.count} pods were found"
34
37
  end
35
38
 
36
39
  def list_new
@@ -53,16 +56,18 @@ module Pod
53
56
  days.reverse.each do |d|
54
57
  sets = groups[d]
55
58
  next unless sets
56
- puts "\nPods added in the last #{d == 1 ? 'day' : "#{d} days"}".yellow
57
- sets.sort_by {|s| creation_dates[s.name]}.each {|s| puts @presenter.describe(s)}
59
+ UI.section("\nPods added in the last #{"day".pluralize(d)}".yellow) do
60
+ sorted = sets.sort_by {|s| creation_dates[s.name]}
61
+ sorted.each { |set| UI.pod(set, (@stats ? :stats : :name)) }
62
+ end
58
63
  end
59
64
  end
60
65
 
61
66
  def run
62
- puts "\nUpdating Spec Repositories\n".yellow if @update && config.verbose?
63
- Repo.new(ARGV.new(["update"])).run if @update
67
+ UI.section("\nUpdating Spec Repositories\n".yellow) do
68
+ Repo.new(ARGV.new(["update"])).run
69
+ end if @update && config.verbose?
64
70
  @new ? list_new : list_all
65
- puts
66
71
  end
67
72
  end
68
73
  end
@@ -11,13 +11,11 @@ module Pod
11
11
  end
12
12
 
13
13
  def self.options
14
- [
15
- ["--no-update", "Skip running `pod repo update` before install"],
16
- ].concat(super)
14
+ [["--no-update", "Skip running `pod repo update` before install"]].concat(super)
17
15
  end
18
16
 
19
17
  def initialize(argv)
20
- @update_repo = !argv.option('--no-update')
18
+ config.skip_repo_update = argv.option('--no-update')
21
19
  super unless argv.empty?
22
20
  end
23
21
 
@@ -36,20 +36,20 @@ module Pod
36
36
  update_repo
37
37
  add_specs_to_repo
38
38
  push_repo unless @local_only
39
- puts
40
39
  end
41
40
 
42
41
  private
43
42
 
44
43
  def update_repo
45
- puts "Updating the `#{@repo}' repo\n".yellow unless config.silent
44
+ UI.puts "Updating the `#{@repo}' repo\n".yellow unless config.silent
46
45
  # show the output of git even if not verbose
47
- Dir.chdir(repo_dir) { puts `git pull 2>&1` }
46
+ # TODO: use the `git!' and find a way to show the output in realtime.
47
+ Dir.chdir(repo_dir) { UI.puts `git pull 2>&1` }
48
48
  end
49
49
 
50
50
  def push_repo
51
- puts "\nPushing the `#{@repo}' repo\n".yellow unless config.silent
52
- Dir.chdir(repo_dir) { puts `git push 2>&1` }
51
+ UI.puts "\nPushing the `#{@repo}' repo\n".yellow unless config.silent
52
+ Dir.chdir(repo_dir) { UI.puts `git push 2>&1` }
53
53
  end
54
54
 
55
55
  def repo_dir
@@ -71,7 +71,7 @@ module Pod
71
71
  end
72
72
 
73
73
  def validate_podspec_files
74
- puts "\nValidating specs".yellow unless config.silent
74
+ UI.puts "\nValidating specs".yellow unless config.silent
75
75
  lint_argv = ["lint"]
76
76
  lint_argv << "--only-errors" if @allow_warnings
77
77
  lint_argv << "--silent" if config.silent
@@ -82,7 +82,7 @@ module Pod
82
82
  end
83
83
 
84
84
  def add_specs_to_repo
85
- puts "\nAdding the specs to the #{@repo} repo\n".yellow unless config.silent
85
+ UI.puts "\nAdding the specs to the #{@repo} repo\n".yellow unless config.silent
86
86
  podspec_files.each do |spec_file|
87
87
  spec = Pod::Specification.from_file(spec_file)
88
88
  output_path = File.join(repo_dir, spec.name, spec.version.to_s)
@@ -93,14 +93,14 @@ module Pod
93
93
  else
94
94
  message = "[Add] #{spec}"
95
95
  end
96
- puts " - #{message}" unless config.silent
96
+ UI.puts " - #{message}" unless config.silent
97
97
 
98
98
  FileUtils.mkdir_p(output_path)
99
99
  FileUtils.cp(Pathname.new(spec.name+'.podspec'), output_path)
100
100
  Dir.chdir(repo_dir) do
101
- git("add #{spec.name}")
101
+ git!("add #{spec.name}")
102
102
  # Bypass the pre-commit hook because we already performed validation
103
- git("commit --no-verify -m '#{message}'")
103
+ git!("commit --no-verify -m '#{message}'")
104
104
  end
105
105
  end
106
106
  end
@@ -16,7 +16,7 @@ module Pod
16
16
  Updates the local clone of the spec-repo `NAME'. If `NAME' is omitted
17
17
  this will update all spec-repos in `~/.cocoapods'.
18
18
 
19
- $ pod repo update [NAME | DIRECTORY]
19
+ $ pod repo lint [NAME | DIRECTORY]
20
20
 
21
21
  Lints the spec-repo `NAME'. If a directory is provided it is assumed
22
22
  to be the root of a repo. Finally, if NAME is not provided this will
@@ -56,23 +56,25 @@ module Pod
56
56
  end
57
57
 
58
58
  def add
59
- print_subtitle "Cloning spec repo `#{@name}' from `#{@url}'#{" (branch `#{@branch}')" if @branch}"
60
- config.repos_dir.mkpath
61
- Dir.chdir(config.repos_dir) { git("clone '#{@url}' #{@name}") }
62
- Dir.chdir(dir) { git("checkout #{@branch}") } if @branch
63
- check_versions(dir)
59
+ UI.section("Cloning spec repo `#{@name}' from `#{@url}'#{" (branch `#{@branch}')" if @branch}") do
60
+ config.repos_dir.mkpath
61
+ Dir.chdir(config.repos_dir) { git!("clone '#{@url}' #{@name}") }
62
+ Dir.chdir(dir) { git!("checkout #{@branch}") } if @branch
63
+ check_versions(dir)
64
+ end
64
65
  end
65
66
 
66
67
  def update
67
68
  dirs = @name ? [dir] : config.repos_dir.children.select {|c| c.directory?}
68
69
  dirs.each do |dir|
69
- print_subtitle "Updating spec repo `#{dir.basename}'"
70
- Dir.chdir(dir) do
71
- `git rev-parse >/dev/null 2>&1`
72
- if $?.exitstatus.zero?
73
- git("pull")
74
- else
75
- puts(" Not a git repository") if config.verbose?
70
+ UI.section "Updating spec repo `#{dir.basename}'" do
71
+ Dir.chdir(dir) do
72
+ `git rev-parse >/dev/null 2>&1`
73
+ if $?.exitstatus.zero?
74
+ git!("pull")
75
+ else
76
+ UI.message "Not a git repository"
77
+ end
76
78
  end
77
79
  end
78
80
  check_versions(dir)
@@ -87,7 +89,7 @@ module Pod
87
89
  end
88
90
  dirs.each do |dir|
89
91
  check_versions(dir)
90
- puts "\nLinting spec repo `#{dir.realpath.basename}'\n".yellow
92
+ UI.puts "\nLinting spec repo `#{dir.realpath.basename}'\n".yellow
91
93
  podspecs = dir.glob('**/*.podspec')
92
94
  invalid_count = 0
93
95
 
@@ -109,19 +111,19 @@ module Pod
109
111
  end
110
112
 
111
113
  if should_display
112
- puts " -> ".send(color) << linter.spec_name
114
+ UI.puts " -> ".send(color) << linter.spec_name
113
115
  print_messages('ERROR', linter.errors)
114
116
  unless @only_errors
115
117
  print_messages('WARN', linter.warnings)
116
118
  print_messages('NOTE', linter.notes)
117
119
  end
118
- puts unless config.silent?
120
+ UI.puts unless config.silent?
119
121
  end
120
122
  end
121
- puts "Analyzed #{podspecs.count} podspecs files.\n\n" unless config.silent?
123
+ UI.puts "Analyzed #{podspecs.count} podspecs files.\n\n" unless config.silent?
122
124
 
123
125
  if invalid_count == 0
124
- puts "All the specs passed validation.".green << "\n\n" unless config.silent?
126
+ UI.puts "All the specs passed validation.".green << "\n\n" unless config.silent?
125
127
  else
126
128
  raise Informative, "#{invalid_count} podspecs failed validation."
127
129
  end
@@ -130,7 +132,7 @@ module Pod
130
132
 
131
133
  def print_messages(type, messages)
132
134
  return if config.silent?
133
- messages.each {|msg| puts " - #{type.ljust(5)} | #{msg}"}
135
+ messages.each {|msg| UI.puts " - #{type.ljust(5)} | #{msg}"}
134
136
  end
135
137
 
136
138
  def check_versions(dir)
@@ -142,7 +144,7 @@ module Pod
142
144
  "\n[!] The `#{dir.basename.to_s}' repo requires CocoaPods #{version_msg}\n".red +
143
145
  "Update Cocoapods, or checkout the appropriate tag in the repo.\n\n"
144
146
  end
145
- puts "\nCocoapods #{versions['last']} is available.\n".green if has_update(versions)
147
+ UI.puts "\nCocoapods #{versions['last']} is available.\n".green if has_update(versions) && config.new_version_message?
146
148
  end
147
149
 
148
150
  def self.compatible?(name)