cocoapods 0.17.0.rc5 → 0.17.0.rc6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +44 -4
- data/README.md +1 -1
- data/lib/cocoapods/command/inter_process_communication.rb +24 -0
- data/lib/cocoapods/command/repo.rb +20 -42
- data/lib/cocoapods/command/setup.rb +1 -17
- data/lib/cocoapods/config.rb +0 -1
- data/lib/cocoapods/gem_version.rb +1 -1
- data/lib/cocoapods/installer/pod_source_installer.rb +6 -1
- data/lib/cocoapods/installer/user_project_integrator.rb +3 -4
- data/lib/cocoapods/sandbox/path_list.rb +21 -1
- data/lib/cocoapods/sources_manager.rb +56 -10
- data/lib/cocoapods/user_interface.rb +47 -37
- data/lib/cocoapods/validator.rb +4 -29
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4593fa5489cb510c03b7d419c4d25d6d98cad904
|
4
|
+
data.tar.gz: fa182a319e9eb11c70c114fa4d0ac88ce36024e6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3329cd7b41702f1f7a8cc2b09a3d72145f2a274c1add4104ba227ceda6939b218967b3b863f105dc0c631be3e762c06ce84a5bf85625e513c5afecc10368bee9
|
7
|
+
data.tar.gz: 3f712191ed8c6a12713265e144db4ba5120bc2e63530aa94657d5ca29a94e47d99ab909ef7b0c6725e7c1e877be1c6c42bfb23c88f76b5384de5ebb49cb08d9e
|
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,44 @@
|
|
1
|
-
## 0.17.0
|
1
|
+
## 0.17.0
|
2
|
+
|
3
|
+
#### rc6
|
4
|
+
[CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.17.0.rc5...0.17.0.rc6)
|
5
|
+
• [cocoapods-core](https://github.com/CocoaPods/Core/compare/0.17.0.rc5...0.17.0.rc6)
|
6
|
+
|
7
|
+
###### Bug fixes
|
8
|
+
|
9
|
+
- CocoaPods updates the repositories by default.
|
10
|
+
[#872](https://github.com/CocoaPods/CocoaPods/issues/872)
|
11
|
+
- Fixed a crash which was present when the Podfile specifies a workspace.
|
12
|
+
[#871](https://github.com/CocoaPods/CocoaPods/issues/871)
|
13
|
+
- Fix for a bug which lead to a broken installation in paths containing
|
14
|
+
brackets and other glob metacharacters.
|
15
|
+
[#862](https://github.com/CocoaPods/CocoaPods/issues/862)
|
16
|
+
- Fix for a bug related to the case of the paths which lead to clean all files
|
17
|
+
in the directories of the Pods.
|
18
|
+
|
19
|
+
|
20
|
+
###### Ancillary enhancements
|
21
|
+
|
22
|
+
- CocoaPods now maintains a search index which is updated incrementally instead
|
23
|
+
of analyzing all the specs every time. The search index can be updated
|
24
|
+
manually with the `pod ipc update-search-index` command.
|
25
|
+
- Enhancements to the `pod repo lint` command.
|
26
|
+
- CocoaPods will not create anymore the pre commit hook in the master repo
|
27
|
+
during setup. If already created it is possible remove it deleting the
|
28
|
+
`~/.cocoapods/master/.git/hooks/pre-commit` path.
|
29
|
+
- Improved support for linting and validating specs repo.
|
30
|
+
|
31
|
+
#### rc5
|
32
|
+
[CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.17.0.rc4...0.17.0.rc5)
|
33
|
+
• [cocoapods-core](https://github.com/CocoaPods/Core/compare/0.17.0.rc4...0.17.0.rc5)
|
34
|
+
|
35
|
+
###### Bug fixes
|
36
|
+
|
37
|
+
- The `--no-clean` argument is not ignored anymore by the installer.
|
38
|
+
- Proper handling of file patterns ending with a slash.
|
39
|
+
- More user errors are raised as an informative.
|
40
|
+
|
41
|
+
#### rc4
|
2
42
|
[CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.17.0.rc3...0.17.0.rc4)
|
3
43
|
|
4
44
|
###### Bug fixes
|
@@ -23,7 +63,7 @@
|
|
23
63
|
- The `podspec` option of the `pod` directive of the Podfile DSL now accepts
|
24
64
|
folders.
|
25
65
|
|
26
|
-
|
66
|
+
#### rc3
|
27
67
|
[CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.17.0.rc2...0.17.0.rc3
|
28
68
|
• [Xcodeproj](https://github.com/CocoaPods/Xcodeproj/compare/0.5.0...0.5.1))
|
29
69
|
|
@@ -46,7 +86,7 @@
|
|
46
86
|
- General improvements to `pod ipc`.
|
47
87
|
- Added `pod ipc repl` subcommand.
|
48
88
|
|
49
|
-
|
89
|
+
#### rc2
|
50
90
|
[CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.17.0.rc1...0.17.0.rc2)
|
51
91
|
• [cocoapods-core](https://github.com/CocoaPods/Core/compare/0.17.0.rc1...0.17.0.rc2)
|
52
92
|
|
@@ -61,7 +101,7 @@
|
|
61
101
|
attribute.
|
62
102
|
[#823](https://github.com/CocoaPods/CocoaPods/issues/823)
|
63
103
|
|
64
|
-
|
104
|
+
#### rc1
|
65
105
|
[CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.16.4...0.17.0.rc1)
|
66
106
|
• [Xcodeproj](https://github.com/CocoaPods/Xcodeproj/compare/0.4.3...0.5.0)
|
67
107
|
• [cocoapods-core](https://github.com/CocoaPods/Core)
|
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# CocoaPods – an Objective-C library manager
|
2
2
|
|
3
3
|
[![Gem Version](https://badge.fury.io/rb/cocoapods.png)](http://badge.fury.io/rb/cocoapods)
|
4
|
-
[![Build Status](https://travis-ci.org/CocoaPods/CocoaPods.png?branch=master)](https://travis-ci.org/CocoaPods/CocoaPods)
|
5
4
|
[![Dependency Status](https://gemnasium.com/CocoaPods/CocoaPods.png)](https://gemnasium.com/CocoaPods/CocoaPods)
|
5
|
+
[![Build Status](https://travis-ci.org/CocoaPods/CocoaPods.png?branch=master)](https://travis-ci.org/CocoaPods/CocoaPods)
|
6
6
|
|
7
7
|
CocoaPods manages library dependencies for your Xcode project.
|
8
8
|
|
@@ -100,6 +100,30 @@ module Pod
|
|
100
100
|
|
101
101
|
#-----------------------------------------------------------------------#
|
102
102
|
|
103
|
+
class UpdateSearchIndex < IPC
|
104
|
+
|
105
|
+
self.summary = 'Updates the search index.'
|
106
|
+
self.description = <<-DESC
|
107
|
+
Updates the search index and prints its path to standard output.
|
108
|
+
The search index is a YAML encoded dictionary where the keys
|
109
|
+
are the names of the Pods and the values are a dictionary containing
|
110
|
+
the following information:
|
111
|
+
|
112
|
+
- version
|
113
|
+
- summary
|
114
|
+
- description
|
115
|
+
- authors
|
116
|
+
DESC
|
117
|
+
|
118
|
+
def run
|
119
|
+
SourcesManager.updated_search_index
|
120
|
+
output_pipe.puts(SourcesManager.search_index_path)
|
121
|
+
end
|
122
|
+
|
123
|
+
end
|
124
|
+
|
125
|
+
#-----------------------------------------------------------------------#
|
126
|
+
|
103
127
|
class Repl < IPC
|
104
128
|
|
105
129
|
END_OF_OUTPUT_SIGNAL = "\n\r"
|
@@ -100,54 +100,32 @@ module Pod
|
|
100
100
|
dirs.each do |dir|
|
101
101
|
SourcesManager.check_version_information(dir)
|
102
102
|
UI.puts "\nLinting spec repo `#{dir.realpath.basename}`\n".yellow
|
103
|
-
podspecs = Pathname.glob( dir + '**/*.podspec')
|
104
|
-
invalid_count = 0
|
105
|
-
|
106
|
-
messages_by_type = {}
|
107
|
-
podspecs.each do |podspec|
|
108
|
-
# print "\033[K -> #{podspec.relative_path_from(dir)}\r" unless config.silent?
|
109
|
-
validator = Validator.new(podspec)
|
110
|
-
validator.quick = true
|
111
|
-
validator.repo_path = dir
|
112
|
-
validator.only_errors = @only_errors
|
113
|
-
validator.disable_ui_output = true
|
114
|
-
|
115
|
-
validator.validate
|
116
|
-
invalid_count += 1 if validator.result_type == :error
|
117
|
-
unless validator.validated?
|
118
|
-
if @only_errors
|
119
|
-
results = validator.results.select { |r| r.type.to_s == "error" }
|
120
|
-
else
|
121
|
-
results = validator.results
|
122
|
-
end
|
123
|
-
sorted_results = results.sort_by { |r| [r.type.to_s, r.message] }
|
124
|
-
sorted_results.each do |result|
|
125
|
-
name = validator.spec ? validator.spec.name : podspec.relative_path_from(dir)
|
126
|
-
version = validator.spec ? validator.spec.version : 'unknown'
|
127
|
-
messages_by_type[result.type] ||= {}
|
128
|
-
messages_by_type[result.type][result.message] ||= {}
|
129
|
-
messages_by_type[result.type][result.message][name] ||= []
|
130
|
-
messages_by_type[result.type][result.message][name] << version
|
131
|
-
end
|
132
|
-
end
|
133
|
-
end
|
134
103
|
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
104
|
+
validator = Source::HealthReporter.new(dir)
|
105
|
+
validator.pre_check do |name, version|
|
106
|
+
UI.print '.'
|
107
|
+
end
|
108
|
+
report = validator.analyze
|
109
|
+
UI.puts
|
110
|
+
UI.puts
|
111
|
+
|
112
|
+
report.pods_by_warning.each do |message, versions_by_name|
|
113
|
+
UI.puts "-> #{message}".yellow
|
114
|
+
versions_by_name.each { |name, versions| UI.puts " - #{name} (#{versions * ', '})" }
|
115
|
+
UI.puts
|
143
116
|
end
|
144
117
|
|
145
|
-
|
118
|
+
report.pods_by_error.each do |message, versions_by_name|
|
119
|
+
UI.puts "-> #{message}".red
|
120
|
+
versions_by_name.each { |name, versions| UI.puts " - #{name} (#{versions * ', '})" }
|
121
|
+
UI.puts
|
122
|
+
end
|
146
123
|
|
147
|
-
|
124
|
+
UI.puts "Analyzed #{report.analyzed_paths.count} podspecs files.\n\n"
|
125
|
+
if report.pods_by_error.count.zero?
|
148
126
|
UI.puts "All the specs passed validation.".green << "\n\n"
|
149
127
|
else
|
150
|
-
raise Informative, "#{
|
128
|
+
raise Informative, "#{report.pods_by_error.count} podspecs failed validation."
|
151
129
|
end
|
152
130
|
end
|
153
131
|
end
|
@@ -33,7 +33,6 @@ module Pod
|
|
33
33
|
else
|
34
34
|
add_master_repo
|
35
35
|
end
|
36
|
-
enable_pre_commit_hooks
|
37
36
|
end
|
38
37
|
|
39
38
|
access_type = push? ? "push" : "read-only"
|
@@ -83,21 +82,6 @@ module Pod
|
|
83
82
|
end
|
84
83
|
end
|
85
84
|
|
86
|
-
# Enables the pre-commit hook of the master repo.
|
87
|
-
#
|
88
|
-
# @note The hook is enabled in this way because the specs run with the
|
89
|
-
# master repo as a submodule.
|
90
|
-
#
|
91
|
-
# @return [void]
|
92
|
-
#
|
93
|
-
def enable_pre_commit_hooks
|
94
|
-
if (master_repo_dir + '.git/hooks').exist?
|
95
|
-
hook = master_repo_dir + '.git/hooks/pre-commit'
|
96
|
-
hook.open('w') { |f| f << "#!/bin/sh\nrake lint" }
|
97
|
-
`chmod +x '#{hook}'`
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
85
|
#--------------------------------------#
|
102
86
|
|
103
87
|
# @!group Private helpers
|
@@ -106,7 +90,7 @@ module Pod
|
|
106
90
|
# be enabled.
|
107
91
|
#
|
108
92
|
def url
|
109
|
-
|
93
|
+
(push?) ? read_write_url : read_only_url
|
110
94
|
end
|
111
95
|
|
112
96
|
# @return [String] the read only url of the master repo.
|
data/lib/cocoapods/config.rb
CHANGED
@@ -240,6 +240,10 @@ module Pod
|
|
240
240
|
# @note Implementation detail: Don't use `Dir#glob` as there is an
|
241
241
|
# unexplained issue (#568, #572 and #602).
|
242
242
|
#
|
243
|
+
# @todo The paths are down-cased for the comparison as issues similar
|
244
|
+
# to #602 lead the files not being matched and so cleaning all
|
245
|
+
# the files. This solution might create side effects.
|
246
|
+
#
|
243
247
|
# @return [Array<Strings>] The paths that can be deleted.
|
244
248
|
#
|
245
249
|
def clean_paths
|
@@ -248,7 +252,9 @@ module Pod
|
|
248
252
|
files = Pathname.glob(root + "**/*", glob_options).map(&:to_s)
|
249
253
|
|
250
254
|
files.reject! do |candidate|
|
255
|
+
candidate = candidate.downcase
|
251
256
|
candidate.end_with?('.', '..') || cached_used.any? do |path|
|
257
|
+
path = path.downcase
|
252
258
|
path.include?(candidate) || candidate.include?(path)
|
253
259
|
end
|
254
260
|
end
|
@@ -259,7 +265,6 @@ module Pod
|
|
259
265
|
# specifications (according to their platform) of this Pod.
|
260
266
|
#
|
261
267
|
def used_files
|
262
|
-
|
263
268
|
files = [
|
264
269
|
file_accessors.map(&:source_files),
|
265
270
|
file_accessors.map(&:resources),
|
@@ -132,18 +132,17 @@ module Pod
|
|
132
132
|
end
|
133
133
|
end
|
134
134
|
|
135
|
-
#-----------------------------------------------------------------------#
|
136
|
-
|
137
135
|
private
|
138
136
|
|
139
|
-
# @!group Helpers
|
137
|
+
# @!group Private Helpers
|
138
|
+
#-----------------------------------------------------------------------#
|
140
139
|
|
141
140
|
# @return [Pathname] the path where the workspace containing the Pods
|
142
141
|
# project and the user projects should be saved.
|
143
142
|
#
|
144
143
|
def workspace_path
|
145
144
|
if podfile.workspace_path
|
146
|
-
podfile.workspace_path
|
145
|
+
Pathname.new(podfile.workspace_path)
|
147
146
|
elsif user_project_paths.count == 1
|
148
147
|
project = user_project_paths.first.basename('.xcodeproj')
|
149
148
|
installation_root + "#{project}.xcworkspace"
|
@@ -47,7 +47,8 @@ module Pod
|
|
47
47
|
raise Informative, "Attempt to read non existent folder `#{root}`."
|
48
48
|
end
|
49
49
|
root_length = root.to_s.length+1
|
50
|
-
|
50
|
+
escaped_root = escape_path_for_glob(root)
|
51
|
+
paths = Dir.glob(escaped_root + "**/*", File::FNM_DOTMATCH)
|
51
52
|
absolute_dirs = paths.select { |path| File.directory?(path) }
|
52
53
|
relative_dirs = absolute_dirs.map { |p| p[root_length..-1] }
|
53
54
|
absolute_paths = paths.reject { |p| p == "#{root}/." || p == "#{root}/.." }
|
@@ -174,6 +175,25 @@ module Pod
|
|
174
175
|
end
|
175
176
|
end
|
176
177
|
|
178
|
+
# Escapes the glob metacharacters from a given path so it can used in
|
179
|
+
# Dir#glob and similar methods.
|
180
|
+
#
|
181
|
+
# @note See CocoaPods/CocoaPods#862.
|
182
|
+
#
|
183
|
+
# @param [String, Pathname] path
|
184
|
+
# The path to escape.
|
185
|
+
#
|
186
|
+
# @return [Pathname] The escaped path.
|
187
|
+
#
|
188
|
+
def escape_path_for_glob(path)
|
189
|
+
result = path.to_s
|
190
|
+
characters_to_escape = ['[', ']', '{', '}', '?', '*']
|
191
|
+
characters_to_escape.each do |character|
|
192
|
+
result.gsub!(character, "\\#{character}" )
|
193
|
+
end
|
194
|
+
Pathname.new(result)
|
195
|
+
end
|
196
|
+
|
177
197
|
#-----------------------------------------------------------------------#
|
178
198
|
|
179
199
|
end
|
@@ -63,17 +63,58 @@ module Pod
|
|
63
63
|
# @return [Array<Set>] The sets that contain the search term.
|
64
64
|
#
|
65
65
|
def search_by_name(query, full_text_search = false)
|
66
|
-
|
67
|
-
|
66
|
+
set_names = []
|
67
|
+
updated_search_index.each do |name, set_data|
|
68
|
+
text = name.dup
|
69
|
+
if full_text_search
|
70
|
+
text << set_data['authors'].to_s if set_data['authors']
|
71
|
+
text << set_data['summary'] if set_data['summary']
|
72
|
+
text << set_data['description'] if set_data['description']
|
73
|
+
end
|
74
|
+
set_names << name if text.downcase.include?(query.downcase)
|
75
|
+
end
|
76
|
+
|
77
|
+
sets = set_names.map { |name| aggregate.represenative_set(name) }
|
78
|
+
if sets.empty?
|
68
79
|
extra = ", author, summary, or description" if full_text_search
|
69
|
-
raise Informative "Unable to find a pod with name#{extra} matching `#{query}`"
|
80
|
+
raise Informative, "Unable to find a pod with name#{extra} matching `#{query}`"
|
70
81
|
end
|
71
|
-
|
82
|
+
sets
|
72
83
|
end
|
73
84
|
|
74
|
-
|
85
|
+
# Creates or updates the search data and returns it. The search data
|
86
|
+
# groups by name the following information for each set:
|
87
|
+
#
|
88
|
+
# - version
|
89
|
+
# - summary
|
90
|
+
# - description
|
91
|
+
# - authors
|
92
|
+
#
|
93
|
+
# @return [Hash{String => String}] The up to date search data.
|
94
|
+
#
|
95
|
+
def updated_search_index
|
96
|
+
if search_index_path.exist?
|
97
|
+
stored_index = YAML.load(search_index_path.read)
|
98
|
+
search_index = aggregate.update_search_index(stored_index)
|
99
|
+
else
|
100
|
+
search_index = aggregate.generate_search_index
|
101
|
+
end
|
102
|
+
|
103
|
+
File.open(search_index_path, 'w') {|f| f.write(search_index.to_yaml) }
|
104
|
+
search_index
|
105
|
+
end
|
106
|
+
|
107
|
+
# @return [Pathname] The path where the search index should be stored.
|
108
|
+
#
|
109
|
+
def search_index_path
|
110
|
+
caches_path = Pathname.new(File.expand_path(CACHE_ROOT))
|
111
|
+
caches_path + 'search_index.yaml'
|
112
|
+
end
|
113
|
+
|
114
|
+
public
|
75
115
|
|
76
116
|
# @!group Updating Sources
|
117
|
+
#-----------------------------------------------------------------------#
|
77
118
|
|
78
119
|
extend Executable
|
79
120
|
executable :git
|
@@ -87,10 +128,10 @@ module Pod
|
|
87
128
|
#
|
88
129
|
def update(source_name = nil, show_output = false)
|
89
130
|
if source_name
|
90
|
-
|
91
|
-
raise Informative, "Unable to find the `#{source_name}` repo." unless
|
92
|
-
raise Informative, "The `#{source_name}` repo is not a git repo." unless git_repo?(
|
93
|
-
sources = [
|
131
|
+
specified_source = aggregate.all.find { |s| s.name == source_name }
|
132
|
+
raise Informative, "Unable to find the `#{source_name}` repo." unless specified_source
|
133
|
+
raise Informative, "The `#{source_name}` repo is not a git repo." unless git_repo?(specified_source.repo)
|
134
|
+
sources = [specified_source]
|
94
135
|
else
|
95
136
|
sources = aggregate.all.select { |source| git_repo?(source.repo) }
|
96
137
|
end
|
@@ -195,9 +236,10 @@ module Pod
|
|
195
236
|
yaml_file.exist? ? YAML.load_file(yaml_file) : {}
|
196
237
|
end
|
197
238
|
|
198
|
-
|
239
|
+
public
|
199
240
|
|
200
241
|
# @!group Master repo
|
242
|
+
#-----------------------------------------------------------------------#
|
201
243
|
|
202
244
|
# @return [Pathname] The path of the master repo.
|
203
245
|
#
|
@@ -213,6 +255,10 @@ module Pod
|
|
213
255
|
def master_repo_functional?
|
214
256
|
master_repo_dir.exist? && repo_compatible?(master_repo_dir)
|
215
257
|
end
|
258
|
+
|
259
|
+
#-----------------------------------------------------------------------#
|
260
|
+
|
216
261
|
end
|
217
262
|
end
|
218
263
|
end
|
264
|
+
|
@@ -142,35 +142,6 @@ module Pod
|
|
142
142
|
puts("\n[!] #{message}".green)
|
143
143
|
end
|
144
144
|
|
145
|
-
# Stores important warning to the user optionally followed by actions
|
146
|
-
# that the user should take. To print them use #{print_warnings}
|
147
|
-
#
|
148
|
-
# @param [String] message The message to print.
|
149
|
-
# @param [Array] actions The actions that the user should take.
|
150
|
-
#
|
151
|
-
# return [void]
|
152
|
-
#
|
153
|
-
def warn(message, actions = [], verbose_only = false)
|
154
|
-
warnings << { :message => message, :actions => actions, :verbose_only => verbose_only }
|
155
|
-
end
|
156
|
-
|
157
|
-
# Prints the stored warnings. This method is intended to be called at the
|
158
|
-
# end of the execution of the binary.
|
159
|
-
#
|
160
|
-
# @return [void]
|
161
|
-
#
|
162
|
-
def print_warnings
|
163
|
-
STDOUT.flush
|
164
|
-
warnings.each do |warning|
|
165
|
-
next if warning[:verbose_only] && !config.verbose?
|
166
|
-
STDERR.puts("\n[!] #{warning[:message]}".yellow)
|
167
|
-
warning[:actions].each do |action|
|
168
|
-
indented = wrap_string(action, " - ")
|
169
|
-
puts(indented)
|
170
|
-
end
|
171
|
-
end
|
172
|
-
end
|
173
|
-
|
174
145
|
# Returns a string containing relative location of a path from the Podfile.
|
175
146
|
# The returned path is quoted. If the argument is nit it returns the
|
176
147
|
# empty string.
|
@@ -226,14 +197,6 @@ module Pod
|
|
226
197
|
end
|
227
198
|
end
|
228
199
|
|
229
|
-
# @!group Basic printing
|
230
|
-
|
231
|
-
# Prints a message unless config is silent.
|
232
|
-
#
|
233
|
-
def puts(message = '')
|
234
|
-
super(message) unless config.silent?
|
235
|
-
end
|
236
|
-
|
237
200
|
# Prints a message respecting the current indentation level and
|
238
201
|
# wrapping it to the terminal width if necessary.
|
239
202
|
#
|
@@ -242,9 +205,56 @@ module Pod
|
|
242
205
|
puts(indented)
|
243
206
|
end
|
244
207
|
|
208
|
+
# Prints the stored warnings. This method is intended to be called at the
|
209
|
+
# end of the execution of the binary.
|
210
|
+
#
|
211
|
+
# @return [void]
|
212
|
+
#
|
213
|
+
def print_warnings
|
214
|
+
STDOUT.flush
|
215
|
+
warnings.each do |warning|
|
216
|
+
next if warning[:verbose_only] && !config.verbose?
|
217
|
+
STDERR.puts("\n[!] #{warning[:message]}".yellow)
|
218
|
+
warning[:actions].each do |action|
|
219
|
+
indented = wrap_string(action, " - ")
|
220
|
+
puts(indented)
|
221
|
+
end
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
225
|
+
public
|
226
|
+
|
227
|
+
# @!group Basic methods
|
228
|
+
#-----------------------------------------------------------------------#
|
229
|
+
|
230
|
+
# prints a message followed by a new line unless config is silent.
|
231
|
+
#
|
232
|
+
def puts(message = '')
|
233
|
+
STDOUT.puts(message) unless config.silent?
|
234
|
+
end
|
235
|
+
|
236
|
+
# prints a message followed by a new line unless config is silent.
|
237
|
+
#
|
238
|
+
def print(message)
|
239
|
+
STDOUT.print(message) unless config.silent?
|
240
|
+
end
|
241
|
+
|
242
|
+
# Stores important warning to the user optionally followed by actions
|
243
|
+
# that the user should take. To print them use {#print_warnings}.
|
244
|
+
#
|
245
|
+
# @param [String] message The message to print.
|
246
|
+
# @param [Array] actions The actions that the user should take.
|
247
|
+
#
|
248
|
+
# return [void]
|
249
|
+
#
|
250
|
+
def warn(message, actions = [], verbose_only = false)
|
251
|
+
warnings << { :message => message, :actions => actions, :verbose_only => verbose_only }
|
252
|
+
end
|
253
|
+
|
245
254
|
private
|
246
255
|
|
247
256
|
# @!group Helpers
|
257
|
+
#-----------------------------------------------------------------------#
|
248
258
|
|
249
259
|
# @return [String] Wraps a string taking into account the width of the
|
250
260
|
# terminal and an option indent. Adapted from
|
data/lib/cocoapods/validator.rb
CHANGED
@@ -56,19 +56,14 @@ module Pod
|
|
56
56
|
#
|
57
57
|
def validate
|
58
58
|
@results = []
|
59
|
-
unless
|
60
|
-
|
61
|
-
$stdout.flush
|
62
|
-
end
|
59
|
+
UI.print " -> #{spec ? spec.name : file.basename}\r" unless config.silent?
|
60
|
+
$stdout.flush
|
63
61
|
|
64
62
|
perform_linting
|
65
|
-
check_repo_path if spec && repo_path
|
66
63
|
perform_extensive_analysis if spec && !quick
|
67
64
|
|
68
|
-
|
69
|
-
|
70
|
-
print_results
|
71
|
-
end
|
65
|
+
UI.puts " -> ".send(result_color) << (spec ? spec.to_s : file.basename.to_s)
|
66
|
+
print_results
|
72
67
|
validated?
|
73
68
|
end
|
74
69
|
|
@@ -98,16 +93,6 @@ module Pod
|
|
98
93
|
|
99
94
|
# @!group Configuration
|
100
95
|
|
101
|
-
# @return [Bool] Whether the validator should print the results of the
|
102
|
-
# validation. This is useful for clients which want to customize
|
103
|
-
# output.
|
104
|
-
#
|
105
|
-
attr_accessor :disable_ui_output
|
106
|
-
|
107
|
-
# @return [Pathname] whether the validation should be performed against a repo.
|
108
|
-
#
|
109
|
-
attr_accessor :repo_path
|
110
|
-
|
111
96
|
# @return [Bool] whether the validation should skip the checks that
|
112
97
|
# requires the download of the library.
|
113
98
|
#
|
@@ -182,16 +167,6 @@ module Pod
|
|
182
167
|
@results.concat(linter.results)
|
183
168
|
end
|
184
169
|
|
185
|
-
#
|
186
|
-
#
|
187
|
-
def check_repo_path
|
188
|
-
expected_path = "#{spec.name}/#{spec.version}/#{spec.name}.podspec"
|
189
|
-
path = file.relative_path_from(repo_path).to_s
|
190
|
-
unless path == expected_path
|
191
|
-
error "Incorrect path, the path is `#{file}` and should be `#{expected_path}`"
|
192
|
-
end
|
193
|
-
end
|
194
|
-
|
195
170
|
#
|
196
171
|
#
|
197
172
|
def perform_extensive_analysis
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.17.0.
|
4
|
+
version: 0.17.0.rc6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eloy Duran
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-03-
|
12
|
+
date: 2013-03-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: cocoapods-core
|
@@ -17,14 +17,14 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - '='
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 0.17.0.
|
20
|
+
version: 0.17.0.rc6
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - '='
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 0.17.0.
|
27
|
+
version: 0.17.0.rc6
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: claide
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|