cocoapods 0.36.0.beta.1 → 0.36.0.beta.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +67 -5
  3. data/bin/pod +11 -10
  4. data/bin/sandbox-pod +1 -1
  5. data/lib/cocoapods.rb +1 -1
  6. data/lib/cocoapods/command/lib.rb +0 -1
  7. data/lib/cocoapods/command/outdated.rb +1 -3
  8. data/lib/cocoapods/command/repo.rb +5 -267
  9. data/lib/cocoapods/command/repo/add.rb +53 -0
  10. data/lib/cocoapods/command/repo/lint.rb +73 -0
  11. data/lib/cocoapods/command/repo/list.rb +95 -0
  12. data/lib/cocoapods/command/repo/remove.rb +36 -0
  13. data/lib/cocoapods/command/repo/update.rb +27 -0
  14. data/lib/cocoapods/command/setup.rb +1 -1
  15. data/lib/cocoapods/command/spec.rb +5 -546
  16. data/lib/cocoapods/command/spec/cat.rb +51 -0
  17. data/lib/cocoapods/command/spec/create.rb +279 -0
  18. data/lib/cocoapods/command/spec/edit.rb +87 -0
  19. data/lib/cocoapods/command/spec/lint.rb +105 -0
  20. data/lib/cocoapods/command/spec/which.rb +43 -0
  21. data/lib/cocoapods/downloader.rb +0 -2
  22. data/lib/cocoapods/external_sources/podspec_source.rb +13 -3
  23. data/lib/cocoapods/gem_version.rb +1 -1
  24. data/lib/cocoapods/generator/copy_resources_script.rb +22 -11
  25. data/lib/cocoapods/generator/embed_frameworks_script.rb +3 -0
  26. data/lib/cocoapods/generator/header.rb +3 -3
  27. data/lib/cocoapods/generator/target_environment_header.rb +1 -1
  28. data/lib/cocoapods/generator/xcconfig/aggregate_xcconfig.rb +7 -7
  29. data/lib/cocoapods/generator/xcconfig/public_pod_xcconfig.rb +1 -1
  30. data/lib/cocoapods/hooks_manager.rb +4 -4
  31. data/lib/cocoapods/installer.rb +17 -4
  32. data/lib/cocoapods/installer/analyzer.rb +19 -12
  33. data/lib/cocoapods/installer/pod_source_installer.rb +1 -1
  34. data/lib/cocoapods/installer/target_installer.rb +1 -1
  35. data/lib/cocoapods/installer/target_installer/aggregate_target_installer.rb +9 -8
  36. data/lib/cocoapods/installer/user_project_integrator/target_integrator.rb +2 -2
  37. data/lib/cocoapods/sandbox.rb +0 -2
  38. data/lib/cocoapods/sandbox/headers_store.rb +1 -1
  39. data/lib/cocoapods/sources_manager.rb +8 -7
  40. data/lib/cocoapods/target.rb +1 -1
  41. data/lib/cocoapods/target/aggregate_target.rb +1 -0
  42. data/lib/cocoapods/target/pod_target.rb +1 -1
  43. data/lib/cocoapods/user_interface/error_report.rb +10 -0
  44. data/lib/cocoapods/validator.rb +15 -4
  45. metadata +17 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d901c87f1445f2710eec3c2eb0eb6811632af6ac
4
- data.tar.gz: 25b99c19eb28e2b133bd2a1c0729d6b08b5c7464
3
+ metadata.gz: 86bf745ff3beb43f547d72bdc3bb5561250836ef
4
+ data.tar.gz: 527fecbbab8649bf447a7fb6ea5130340a9ffd65
5
5
  SHA512:
6
- metadata.gz: 9a6452b52e0383745bd85757371c0e66e468cf3c6369d3f51cd047e8c05a42c6865b47600685f02eaf3befa3335f10a66eb79c322dfbf087bcea180f57002d41
7
- data.tar.gz: 63c0bd80d23a5ca73c3634ee40a1aaf8b1b9df767a685971cee811576840eab3a8a1ceca06a379327302982d15cd0dac48d31cf20f15fa92dd1fdef8f2d40196
6
+ metadata.gz: 691fb6ca9b5324b5a1ac63a496e9cb87429941ce7d178b45501649890a5029a9eeb1801850e9a73e655405c016a40da7cfaa53326f63825123939e501f6ad9c5
7
+ data.tar.gz: bf435ded4cbcaca3b11a79aa9df3aecfcc65b9f54f070f98bf451f98a8dc2b010ce58d2353cb117f7a5488e8bf51b10ff8f9461aac0d7f6b9ec652544d3f64c1
@@ -4,6 +4,69 @@ To install or update CocoaPods see this [guide](http://docs.cocoapods.org/guides
4
4
 
5
5
  To install release candidates run `[sudo] gem install cocoapods --pre`
6
6
 
7
+ ## 0.36.0.beta.2
8
+
9
+ [Xcodeproj](https://github.com/CocoaPods/Xcodeproj/compare/0.21.0...0.21.2)
10
+
11
+ ##### Breaking
12
+
13
+ * Changes the default spec repositories used from all configured spec
14
+ repositories, to the master spec repository when no spec repositories
15
+ are explicitly configured in a Podfile.
16
+ [Kyle Fuller](https://github.com/kylef)
17
+ [#2946](https://github.com/CocoaPods/CocoaPods/issues/2946)
18
+
19
+ ##### Enhancements
20
+
21
+ * Set the APPLICATION_EXTENSION_API_ONLY build setting if integrating with an app extension target.
22
+ [Boris Bügling](https://github.com/neonichu)
23
+ [#2980](https://github.com/CocoaPods/CocoaPods/issues/2980)
24
+
25
+ * Xcodebuild warnings will now be reported as `warning` during linting
26
+ instead of `note`.
27
+ [Hugo Tunius](https://github.com/K0nserv)
28
+
29
+ * Copy only the resources required for the current build configuration.
30
+ [Samuel Giddins](https://github.com/segiddins)
31
+ [#2391](https://github.com/CocoaPods/CocoaPods/issues/2391)
32
+
33
+ ##### Bug Fixes
34
+
35
+ * Ensure that linting fails if xcodebuild doesn't successfully build your Pod.
36
+ [Kyle Fuller](https://github.com/kylef)
37
+ [#2981](https://github.com/CocoaPods/CocoaPods/issues/2981)
38
+ [cocoapods-trunk#33](https://github.com/CocoaPods/cocoapods-trunk/issues/33)
39
+
40
+ * Clone the master spec repository when no spec repositories are explicitly
41
+ defined in the Podfile. This fixes problems using CocoaPods for the first
42
+ time without any explicit spec repositories.
43
+ [Kyle Fuller](https://github.com/kylef)
44
+ [#2946](https://github.com/CocoaPods/CocoaPods/issues/2946)
45
+
46
+ * Xcodebuild warnings with the string `error` in them will no longer be
47
+ linted as errors if they are in fact warnings.
48
+ [Hugo Tunius](https://github.com/K0nserv)
49
+ [#2579](https://github.com/CocoaPods/CocoaPods/issues/2579)
50
+
51
+ * Any errors which occur during fetching of external podspecs over HTTP
52
+ will now be gracefully handled.
53
+ [Hugo Tunius](https://github.com/K0nserv)
54
+ [#2823](https://github.com/CocoaPods/CocoaPods/issues/2823)
55
+
56
+ * When updating spec repositories only update the git sourced repos.
57
+ [Dustin Clark](https://github.com/clarkda)
58
+ [#2558](https://github.com/CocoaPods/CocoaPods/issues/2558)
59
+
60
+ * Pods referenced via the `:podspec` option will have their podspecs properly
61
+ parsed in the local directory if the path points to a local file.
62
+ [Samuel Giddins](https://github.com/segiddins)
63
+
64
+ * Fix an issue where using Swift frameworks in an Objective-C host application
65
+ causes an error because the Swift frameworks we're not code signed.
66
+ [Joseph Ross](https://github.com/jrosssavant)
67
+ [#3008](https://github.com/CocoaPods/CocoaPods/issues/3008)
68
+
69
+
7
70
  ## 0.36.0.beta.1
8
71
 
9
72
  [CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.35.0...0.36.0.beta.1)
@@ -76,10 +139,6 @@ To install release candidates run `[sudo] gem install cocoapods --pre`
76
139
 
77
140
  ##### Bug Fixes
78
141
 
79
- * Fix resource bundles for not build targets.
80
- [Boris Bügling](https://github.com/neonichu)
81
- [#2934](https://github.com/CocoaPods/CocoaPods/issues/2934)
82
-
83
142
  * Fix updating a pod that has subspec dependencies.
84
143
  [Samuel Giddins](https://github.com/segiddins)
85
144
  [#2879](https://github.com/CocoaPods/CocoaPods/issues/2879)
@@ -99,7 +158,7 @@ To install release candidates run `[sudo] gem install cocoapods --pre`
99
158
  [Samuel Giddins](https://github.com/segiddins)
100
159
  [#1919](https://github.com/CocoaPods/CocoaPods/issues/1919)
101
160
 
102
- * Fix the reading of podspecs that come from the `:git`, `:svn`, ':http', or
161
+ * Fix the reading of podspecs that come from the `:git`, `:svn`, `:http`, or
103
162
  `:hg` options in your `Podfile` that used context-dependent ruby code, such as
104
163
  reading a file to determine the specification version.
105
164
  [Samuel Giddins](https://github.com/segiddins)
@@ -174,6 +233,9 @@ For more details, see :memo: [CocoaPods 0.35](http://blog.cocoapods.org/CocoaPod
174
233
  copying resources to main application bundle.
175
234
  [Yan Rabovik](https://github.com/rabovik)
176
235
 
236
+ * Fix uninitialized constant Class::YAML crash in some cases.
237
+ [Tim Shadel](https://github.com/timshadel)
238
+
177
239
  ##### Enhancements
178
240
 
179
241
  * `pod search`, `pod spec which`, `pod spec cat` and `pod spec edit`
data/bin/pod CHANGED
@@ -26,16 +26,17 @@ require 'cocoapods'
26
26
 
27
27
  if profile_filename = ENV['PROFILE']
28
28
  require 'ruby-prof'
29
- reporter = case (profile_extname = File.extname(profile_filename))
30
- when '.txt'
31
- RubyProf::FlatPrinterWithLineNumbers
32
- when '.html'
33
- RubyProf::GraphHtmlPrinter
34
- when '.callgrind'
35
- RubyProf::CallTreePrinter
36
- else
37
- raise "Unknown profiler format indicated by extension: #{profile_extname}"
38
- end
29
+ reporter =
30
+ case (profile_extname = File.extname(profile_filename))
31
+ when '.txt'
32
+ RubyProf::FlatPrinterWithLineNumbers
33
+ when '.html'
34
+ RubyProf::GraphHtmlPrinter
35
+ when '.callgrind'
36
+ RubyProf::CallTreePrinter
37
+ else
38
+ raise "Unknown profiler format indicated by extension: #{profile_extname}"
39
+ end
39
40
  File.open(profile_filename, 'w') do |io|
40
41
  reporter.new(RubyProf.profile { Pod::Command.run(ARGV) }).print(io)
41
42
  end
@@ -153,7 +153,7 @@ class Profile
153
153
  File.expand_path('../..', developer_prefix)
154
154
  end
155
155
 
156
- # TODO raise SAFE level (0) to 4 if possible.
156
+ # TODO: raise SAFE level (0) to 4 if possible.
157
157
  def generate
158
158
  ERB.new(PROFILE_ERB_TEMPLATE, 0, '>').result(binding)
159
159
  end
@@ -7,7 +7,7 @@ require 'xcodeproj'
7
7
  require 'active_support/core_ext/string/strip'
8
8
  require 'active_support/core_ext/string/inflections'
9
9
  require 'active_support/core_ext/array/conversions'
10
- # TODO check what this actually does by the time we're going to add support for
10
+ # TODO: check what this actually does by the time we're going to add support for
11
11
  # other locales.
12
12
  require 'i18n'
13
13
  if I18n.respond_to?(:enforce_available_locales=)
@@ -138,7 +138,6 @@ module Pod
138
138
  def run
139
139
  UI.puts
140
140
  podspecs_to_lint.each do |podspec|
141
-
142
141
  validator = Validator.new(podspec, @source_urls)
143
142
  validator.local = true
144
143
  validator.quick = @quick
@@ -67,10 +67,8 @@ module Pod
67
67
  if source_version > lockfile_version
68
68
  matching_spec = unlocked_pods.find { |s| s.name == pod_name }
69
69
  matching_version =
70
- matching_spec ? matching_spec.version : "(unused)"
70
+ matching_spec ? matching_spec.version : '(unused)'
71
71
  [pod_name, lockfile_version, matching_version, source_version]
72
- else
73
- nil
74
72
  end
75
73
  end.compact.uniq
76
74
  end
@@ -1,5 +1,10 @@
1
1
  require 'fileutils'
2
+ require 'cocoapods/command/repo/add'
3
+ require 'cocoapods/command/repo/lint'
4
+ require 'cocoapods/command/repo/list'
2
5
  require 'cocoapods/command/repo/push'
6
+ require 'cocoapods/command/repo/remove'
7
+ require 'cocoapods/command/repo/update'
3
8
 
4
9
  module Pod
5
10
  class Command
@@ -11,273 +16,6 @@ module Pod
11
16
  self.summary = 'Manage spec-repositories'
12
17
  self.default_subcommand = 'list'
13
18
 
14
- class Add < Repo
15
- self.summary = 'Add a spec repo.'
16
-
17
- self.description = <<-DESC
18
- Clones `URL` in the local spec-repos directory at `~/.cocoapods/repos/`. The
19
- remote can later be referred to by `NAME`.
20
- DESC
21
-
22
- self.arguments = [
23
- CLAide::Argument.new('NAME', true),
24
- CLAide::Argument.new('URL', true),
25
- CLAide::Argument.new('BRANCH', false),
26
- ]
27
-
28
- def self.options
29
- [
30
- ['--shallow', 'Create a shallow clone (fast clone, but no push capabilities)'],
31
- ].concat(super)
32
- end
33
-
34
- def initialize(argv)
35
- @shallow = argv.flag?('shallow', false)
36
- @name, @url, @branch = argv.shift_argument, argv.shift_argument, argv.shift_argument
37
- super
38
- end
39
-
40
- def validate!
41
- super
42
- unless @name && @url
43
- help! 'Adding a repo needs a `NAME` and a `URL`.'
44
- end
45
- end
46
-
47
- def run
48
- prefix = @shallow ? 'Creating shallow clone of' : 'Cloning'
49
- UI.section("#{prefix} spec repo `#{@name}` from `#{@url}`#{" (branch `#{@branch}`)" if @branch}") do
50
- config.repos_dir.mkpath
51
- Dir.chdir(config.repos_dir) do
52
- command = "clone '#{@url}' #{@name}"
53
- command << ' --depth=1' if @shallow
54
- git!(command)
55
- end
56
- Dir.chdir(dir) { git!("checkout #{@branch}") } if @branch
57
- SourcesManager.check_version_information(dir)
58
- end
59
- end
60
- end
61
-
62
- #-----------------------------------------------------------------------#
63
-
64
- class Update < Repo
65
- self.summary = 'Update a spec repo.'
66
-
67
- self.description = <<-DESC
68
- Updates the local clone of the spec-repo `NAME`. If `NAME` is omitted
69
- this will update all spec-repos in `~/.cocoapods/repos`.
70
- DESC
71
-
72
- self.arguments = [
73
- CLAide::Argument.new('NAME', false),
74
- ]
75
-
76
- def initialize(argv)
77
- @name = argv.shift_argument
78
- super
79
- end
80
-
81
- def run
82
- SourcesManager.update(@name, true)
83
- end
84
- end
85
-
86
- #-----------------------------------------------------------------------#
87
-
88
- class Lint < Repo
89
- self.summary = 'Validates all specs in a repo.'
90
-
91
- self.description = <<-DESC
92
- Lints the spec-repo `NAME`. If a directory is provided it is assumed
93
- to be the root of a repo. Finally, if `NAME` is not provided this
94
- will lint all the spec-repos known to CocoaPods.
95
- DESC
96
-
97
- self.arguments = [
98
- CLAide::Argument.new(%w(NAME DIRECTORY), false),
99
- ]
100
-
101
- def self.options
102
- [['--only-errors', 'Lint presents only the errors']].concat(super)
103
- end
104
-
105
- def initialize(argv)
106
- @name = argv.shift_argument
107
- @only_errors = argv.flag?('only-errors')
108
- super
109
- end
110
-
111
- # @todo Part of this logic needs to be ported to cocoapods-core so web
112
- # services can validate the repo.
113
- #
114
- # @todo add UI.print and enable print statements again.
115
- #
116
- def run
117
- if @name
118
- dirs = File.exist?(@name) ? [Pathname.new(@name)] : [dir]
119
- else
120
- dirs = config.repos_dir.children.select(&:directory?)
121
- end
122
- dirs.each do |dir|
123
- SourcesManager.check_version_information(dir)
124
- UI.puts "\nLinting spec repo `#{dir.realpath.basename}`\n".yellow
125
-
126
- validator = Source::HealthReporter.new(dir)
127
- validator.pre_check do |_name, _version|
128
- UI.print '.'
129
- end
130
- report = validator.analyze
131
- UI.puts
132
- UI.puts
133
-
134
- report.pods_by_warning.each do |message, versions_by_name|
135
- UI.puts "-> #{message}".yellow
136
- versions_by_name.each { |name, versions| UI.puts " - #{name} (#{versions * ', '})" }
137
- UI.puts
138
- end
139
-
140
- report.pods_by_error.each do |message, versions_by_name|
141
- UI.puts "-> #{message}".red
142
- versions_by_name.each { |name, versions| UI.puts " - #{name} (#{versions * ', '})" }
143
- UI.puts
144
- end
145
-
146
- UI.puts "Analyzed #{report.analyzed_paths.count} podspecs files.\n\n"
147
- if report.pods_by_error.count.zero?
148
- UI.puts 'All the specs passed validation.'.green << "\n\n"
149
- else
150
- raise Informative, "#{report.pods_by_error.count} podspecs failed validation."
151
- end
152
- end
153
- end
154
- end
155
-
156
- #-----------------------------------------------------------------------#
157
-
158
- class Remove < Repo
159
- self.summary = 'Remove a spec repo'
160
-
161
- self.description = <<-DESC
162
- Deletes the remote named `NAME` from the local spec-repos directory at `~/.cocoapods/repos/.`
163
- DESC
164
-
165
- self.arguments = [
166
- CLAide::Argument.new('NAME', true),
167
- ]
168
-
169
- def initialize(argv)
170
- @name = argv.shift_argument
171
- super
172
- end
173
-
174
- def validate!
175
- super
176
- help! 'Deleting a repo needs a `NAME`.' unless @name
177
- help! "repo #{@name} does not exist" unless File.directory?(dir)
178
- help! "You do not have permission to delete the #{@name} repository." \
179
- 'Perhaps try prefixing this command with sudo.' unless File.writable?(dir)
180
- end
181
-
182
- def run
183
- UI.section("Removing spec repo `#{@name}`") do
184
- FileUtils.rm_rf(dir)
185
- end
186
- end
187
- end
188
-
189
- #-----------------------------------------------------------------------#
190
-
191
- class List < Repo
192
- self.summary = 'List repos'
193
-
194
- self.description = <<-DESC
195
- List the repos from the local spec-repos directory at `~/.cocoapods/repos/.`
196
- DESC
197
-
198
- def self.options
199
- [["--count-only", "Show the total number of repos"]].concat(super)
200
- end
201
-
202
- def initialize(argv)
203
- @count_only = argv.flag?('count-only')
204
- super
205
- end
206
-
207
- # @output Examples:
208
- #
209
- # master
210
- # - type: git (origin)
211
- # - URL: https://github.com/CocoaPods/Specs.git
212
- # - path: /Users/lascorbe/.cocoapods/repos/master
213
- #
214
- # test
215
- # - type: local copy
216
- # - path: /Users/lascorbe/.cocoapods/repos/test
217
- #
218
- def run
219
- sources = SourcesManager.all
220
- print_sources(sources) unless @count_only
221
- print_count_of_sources(sources)
222
- end
223
-
224
- private
225
-
226
- # Pretty-prints the source at the given path.
227
- #
228
- # @param [String,Pathname] path
229
- # The path of the source to be printed.
230
- #
231
- # @return [void]
232
- #
233
- def print_source_at_path(path)
234
- Dir.chdir(path) do
235
- if SourcesManager.git_repo?(path)
236
- remote_name = branch_remote_name(branch_name)
237
- if remote_name
238
- UI.puts "- Type: git (#{remote_name})"
239
- url = url_of_git_repo(remote_name)
240
- UI.puts "- URL: #{url}"
241
- else
242
- UI.puts "- Type: git (no remote information available)"
243
- end
244
- else
245
- UI.puts "- Type: local copy"
246
- end
247
- UI.puts "- Path: #{path}"
248
- end
249
- end
250
-
251
- # Pretty-prints the given sources.
252
- #
253
- # @param [Array<Source>] sources
254
- # The sources that should be printed.
255
- #
256
- # @return [void]
257
- #
258
- def print_sources(sources)
259
- sources.each do |source|
260
- UI.title source.name do
261
- print_source_at_path source.repo
262
- end
263
- end
264
- UI.puts "\n"
265
- end
266
-
267
- # Pretty-prints the number of sources.
268
- #
269
- # @param [Array<Source>] sources
270
- # The sources whose count should be printed.
271
- #
272
- # @return [void]
273
- #
274
- def print_count_of_sources(sources)
275
- number_of_repos = sources.length
276
- repo_string = number_of_repos != 1 ? 'repos' : 'repo'
277
- UI.puts "#{number_of_repos} #{repo_string}".green
278
- end
279
- end
280
-
281
19
  #-----------------------------------------------------------------------#
282
20
 
283
21
  extend Executable