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

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.
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