cocoapods 0.17.0.rc5 → 0.17.0.rc6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
[](http://badge.fury.io/rb/cocoapods)
|
4
|
-
[](https://travis-ci.org/CocoaPods/CocoaPods)
|
5
4
|
[](https://gemnasium.com/CocoaPods/CocoaPods)
|
5
|
+
[](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
|