cocoapods 0.18.1 → 0.19.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6e0881feaf291a34b53110b92c56d327e0b956a1
4
- data.tar.gz: a65960c704edd79a75f03dbc2a574c3da7799057
3
+ metadata.gz: 9e460bfedda8d6e9df7398183867f5c605b1bbe2
4
+ data.tar.gz: 771269534428bde0e97b8f167f709a4013ad9e0f
5
5
  SHA512:
6
- metadata.gz: 681f330ef6eba8a347504cec27bfdc43653797d3f6d2c9ed4937e5d14580f67a3735d7e99927b80d5a3ed12c8649c5f9e30e58a462a4c52cc0b70f42426acda6
7
- data.tar.gz: e95439f57785df354f3b4be232813ea8fc94d2504781dfad64b4ad72dd2cf0c70fa35e2218eec68423c7e87733eec426e6c9f40c671051f1b25833282176960c
6
+ metadata.gz: b5495d6f6d3e041470e7d8a09483faa989a97c8f2292f28bb237c5bd7c7a64aa176a995f2f7ad30774d5e12cca94c368e8bc53efc85cee2b095f947584fc2049
7
+ data.tar.gz: f34a4f956ed9bc12305259bc457f148de99b0bf4ba40d41252f98ebe6e75024ad9089ed152f86645c8469d3f6e82a33c3b3fceebcfc67fa11d6bc33911206bc1
@@ -1,3 +1,43 @@
1
+ ## 0.19.0
2
+ [CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.18.1...0.19.0)
3
+ • [cocoapods-core](https://github.com/CocoaPods/Core/compare/0.18.1...0.19.0)
4
+
5
+ ###### Enhancements
6
+
7
+ * Added `pod podfile-info` command. Shows list of used Pods and their info
8
+ in a project or supplied Podfile.
9
+ Options: `--all` - with dependancies. `--md` - in Markdown.
10
+ [#855](https://github.com/CocoaPods/CocoaPods/issues/855)
11
+ * CocoaPods now defines the `COCOAPODS=1` macro in the Pod and the Client
12
+ targets. This is useful for libraries which conditionally expose interfaces.
13
+ [#903](https://github.com/CocoaPods/CocoaPods/issues/903)
14
+ * Compile time introspection. Macro definitions which allow to inspect the
15
+ installed Pods and their version have been introduced in the build
16
+ environment of the Pod libraries
17
+ ([example](https://gist.github.com/irrationalfab/5348551)).
18
+ * CocoaPods now defines the deployment target of the Pods project computed as
19
+ the minimum deployment target of the Pods libraries.
20
+ [#556](https://github.com/CocoaPods/CocoaPods/issues/556)
21
+ * Added `pod help` command. You can still use the old format
22
+ with --help flag.
23
+ [#957](https://github.com/CocoaPods/CocoaPods/pull/957)
24
+ * Restored support for Podfiles named `CocoaPods.podfile`. Moreover, the
25
+ experimental YAML format of the Podfile now is associated with files named
26
+ `CocoaPods.podfile.yaml`.
27
+ [#1004](https://github.com/CocoaPods/CocoaPods/pull/1004)
28
+
29
+ ###### Deprecations
30
+
31
+ * `:local` flag in Podfile is deprecated. Please use `:path` when
32
+ specifying a pod source.
33
+ [#971](https://github.com/CocoaPods/CocoaPods/issues/971)
34
+ ###### Bug fixes
35
+
36
+ * Fix issue related to `pod outdated` and external sources.
37
+ [#954](https://github.com/CocoaPods/CocoaPods/issues/954)
38
+ * Fix issue with .svn folders in copy resources script.
39
+ [#972](https://github.com/CocoaPods/CocoaPods/issues/972)
40
+
1
41
  ## 0.18.1
2
42
  [CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.18.0...0.18.1)
3
43
  • [cocoapods-core](https://github.com/CocoaPods/Core/compare/0.18.0...0.18.)
@@ -39,29 +39,29 @@ module Pod
39
39
  #
40
40
  STATISTICS_CACHE_FILE = CACHE_ROOT + 'statistics.yml'
41
41
 
42
- autoload :Command, 'cocoapods/command'
43
- autoload :Executable, 'cocoapods/executable'
44
- autoload :ExternalSources, 'cocoapods/external_sources'
45
- autoload :Installer, 'cocoapods/installer'
46
- autoload :SourcesManager, 'cocoapods/sources_manager'
47
- autoload :Library, 'cocoapods/library'
48
- autoload :Project, 'cocoapods/project'
49
- autoload :Resolver, 'cocoapods/resolver'
50
- autoload :Sandbox, 'cocoapods/sandbox'
51
- autoload :UI, 'cocoapods/user_interface'
52
- autoload :Validator, 'cocoapods/validator'
42
+ autoload :Command, 'cocoapods/command'
43
+ autoload :Executable, 'cocoapods/executable'
44
+ autoload :ExternalSources, 'cocoapods/external_sources'
45
+ autoload :Installer, 'cocoapods/installer'
46
+ autoload :SourcesManager, 'cocoapods/sources_manager'
47
+ autoload :Library, 'cocoapods/library'
48
+ autoload :Project, 'cocoapods/project'
49
+ autoload :Resolver, 'cocoapods/resolver'
50
+ autoload :Sandbox, 'cocoapods/sandbox'
51
+ autoload :UI, 'cocoapods/user_interface'
52
+ autoload :Validator, 'cocoapods/validator'
53
53
 
54
54
  module Generator
55
- autoload :Acknowledgements, 'cocoapods/generator/acknowledgements'
56
- autoload :BridgeSupport, 'cocoapods/generator/bridge_support'
57
- autoload :CopyResourcesScript, 'cocoapods/generator/copy_resources_script'
58
- autoload :Documentation, 'cocoapods/generator/documentation'
59
- autoload :DummySource, 'cocoapods/generator/dummy_source'
60
- autoload :Markdown, 'cocoapods/generator/acknowledgements/markdown'
61
- autoload :Plist, 'cocoapods/generator/acknowledgements/plist'
62
- autoload :PrefixHeader, 'cocoapods/generator/prefix_header'
63
- autoload :TargetHeader, 'cocoapods/generator/target_header'
64
- autoload :XCConfig, 'cocoapods/generator/xcconfig'
55
+ autoload :Acknowledgements, 'cocoapods/generator/acknowledgements'
56
+ autoload :BridgeSupport, 'cocoapods/generator/bridge_support'
57
+ autoload :CopyResourcesScript, 'cocoapods/generator/copy_resources_script'
58
+ autoload :Documentation, 'cocoapods/generator/documentation'
59
+ autoload :DummySource, 'cocoapods/generator/dummy_source'
60
+ autoload :Markdown, 'cocoapods/generator/acknowledgements/markdown'
61
+ autoload :Plist, 'cocoapods/generator/acknowledgements/plist'
62
+ autoload :PrefixHeader, 'cocoapods/generator/prefix_header'
63
+ autoload :TargetEnvironmentHeader, 'cocoapods/generator/target_environment_header'
64
+ autoload :XCConfig, 'cocoapods/generator/xcconfig'
65
65
  end
66
66
 
67
67
  module Hooks
@@ -16,7 +16,9 @@ module Pod
16
16
  require 'cocoapods/command/search'
17
17
  require 'cocoapods/command/setup'
18
18
  require 'cocoapods/command/spec'
19
+ require 'cocoapods/command/help'
19
20
  require 'cocoapods/command/inter_process_communication'
21
+ require 'cocoapods/command/podfile_info'
20
22
 
21
23
  self.abstract_command = true
22
24
  self.command = 'pod'
@@ -0,0 +1,23 @@
1
+ module Pod
2
+ class Command
3
+ class Help < Command
4
+ self.summary = 'Show help for the given command.'
5
+ self.arguments = '[COMMAND]'
6
+
7
+ def initialize(argv)
8
+ @help_command = Pod::Command.parse(argv) unless argv.empty?
9
+ super
10
+ end
11
+
12
+ def run
13
+ help_command.help!
14
+ end
15
+
16
+ private
17
+
18
+ def help_command
19
+ @help_command || self
20
+ end
21
+ end
22
+ end
23
+ end
@@ -19,6 +19,7 @@ module Pod
19
19
 
20
20
  # @todo the command report new dependencies added to the Podfile as
21
21
  # updates.
22
+ #
22
23
  # @todo fix.
23
24
  #
24
25
  def run
@@ -30,6 +31,7 @@ module Pod
30
31
  updates = []
31
32
  pods.each do |pod_name|
32
33
  set = SourcesManager.search(Dependency.new(pod_name))
34
+ next unless set
33
35
  source_version = set.versions.first
34
36
  lockfile_version = lockfile.version(pod_name)
35
37
  if source_version > lockfile_version
@@ -42,7 +44,7 @@ module Pod
42
44
  else
43
45
  UI.section "The following updates are available:" do
44
46
  updates.each do |(name, from_version, to_version)|
45
- UI.message "- #{name} #{from_version} -> #{to_version}"
47
+ UI.puts "- #{name} #{from_version} -> #{to_version}"
46
48
  end
47
49
  end
48
50
  end
@@ -0,0 +1,91 @@
1
+ module Pod
2
+ class Command
3
+
4
+ class PodfileInfo < Command
5
+
6
+ self.summary = 'Shows information on installed Pods.'
7
+ self.description = <<-DESC
8
+ Shows information on installed Pods in current Project.
9
+ If optional `PODFILE_PATH` provided, the info will be shown for
10
+ that specific Podfile
11
+ DESC
12
+ self.arguments = '[PODFILE_PATH]'
13
+
14
+ def self.options
15
+ [
16
+ ["--all", "Show information about all Pods with dependencies that are used in a project"],
17
+ ["--md", "Output information in Markdown format"]
18
+ ].concat(super)
19
+ end
20
+
21
+ def initialize(argv)
22
+ @info_all = argv.flag?('all')
23
+ @info_in_md = argv.flag?('md')
24
+ @podfile_path = argv.shift_argument
25
+ super
26
+ end
27
+
28
+ def run
29
+ use_podfile = (@podfile_path || !config.lockfile)
30
+
31
+ if !use_podfile
32
+ UI.puts "Using lockfile" if config.verbose?
33
+ verify_lockfile_exists!
34
+ lockfile = config.lockfile
35
+ pods = lockfile.pod_names
36
+ if @info_all
37
+ deps = lockfile.dependencies.map{|d| d.name}
38
+ pods = (deps + pods).uniq
39
+ end
40
+ elsif @podfile_path
41
+ podfile = Pod::Podfile.from_file(@podfile_path)
42
+ pods = pods_from_podfile(podfile)
43
+ else
44
+ verify_podfile_exists!
45
+ podfile = config.podfile
46
+ pods = pods_from_podfile(podfile)
47
+ end
48
+
49
+ UI.puts "\nPods used:\n".yellow unless @info_in_md
50
+ pods_info(pods, @info_in_md)
51
+ end
52
+
53
+ def pods_from_podfile(podfile)
54
+ pods = []
55
+ podfile.root_target_definitions.each {|e| h = e.to_hash; pods << h['dependencies'] if h['dependencies']}
56
+ pods.flatten!
57
+ pods.collect! {|pod| (pod.is_a?(Hash)) ? pod.keys.first : pod}
58
+ end
59
+
60
+ def pods_info_hash(pods, keys=[:name, :homepage, :summary])
61
+ pods_info = []
62
+ pods.each do |pod|
63
+ spec = (Pod::SourcesManager.search_by_name(pod).first rescue nil)
64
+ if spec
65
+ info = {}
66
+ keys.each { |k| info[k] = spec.specification.send(k) }
67
+ pods_info << info
68
+ else
69
+
70
+ end
71
+
72
+ end
73
+ pods_info
74
+ end
75
+
76
+ def pods_info(pods, in_md=false)
77
+ pods = pods_info_hash(pods, [:name, :homepage, :summary])
78
+
79
+ pods.each do |pod|
80
+ if in_md
81
+ UI.puts "* [#{pod[:name]}](#{pod[:homepage]}) - #{pod[:summary]}"
82
+ else
83
+ UI.puts "- #{pod[:name]} - #{pod[:summary]}"
84
+ end
85
+ end
86
+ end
87
+
88
+ end
89
+
90
+ end
91
+ end
@@ -188,7 +188,8 @@ module Pod
188
188
  #
189
189
  def podfile_path
190
190
  unless @podfile_path
191
- path = installation_root + 'Podfile.yaml'
191
+ path = installation_root + 'CocoaPods.podfile.yaml'
192
+ path = installation_root + 'CocoaPods.podfile' unless path.exist?
192
193
  path = installation_root + 'Podfile' unless path.exist?
193
194
  @podfile_path = path
194
195
  end
@@ -13,11 +13,16 @@ module Pod
13
13
  name = dependency.root_name
14
14
  params = dependency.external_source
15
15
 
16
- klass = if params.key?(:git) then GitSource
17
- elsif params.key?(:svn) then SvnSource
18
- elsif params.key?(:hg) then MercurialSource
19
- elsif params.key?(:podspec) then PodspecSource
20
- elsif params.key?(:local) then LocalSource
16
+ klass = if params.key?(:git) then GitSource
17
+ elsif params.key?(:svn) then SvnSource
18
+ elsif params.key?(:hg) then MercurialSource
19
+ elsif params.key?(:podspec) then PodspecSource
20
+ elsif params.key?(:path) then PathSource
21
+ end
22
+
23
+ if params.key?(:local)
24
+ klass = PathSource
25
+ UI.warn "The `:local` option of the Podfile has been renamed to `:path` and is deprecated." \
21
26
  end
22
27
 
23
28
  if klass
@@ -286,7 +291,7 @@ module Pod
286
291
 
287
292
  # @!group Helpers
288
293
 
289
- # @return [String] The uri of the podspec appending the name of the file
294
+ # @return [String] The uri of the podspec appending the name of the file
290
295
  # and expanding it if necessary.
291
296
  #
292
297
  # @note If the declared path is expanded only if the represents a path
@@ -312,7 +317,7 @@ module Pod
312
317
  #
313
318
  # Works with the {LocalPod::LocalSourcedPod} class.
314
319
  #
315
- class LocalSource < AbstractExternalSource
320
+ class PathSource < AbstractExternalSource
316
321
 
317
322
  # @see AbstractExternalSource#fetch
318
323
  #
@@ -327,7 +332,7 @@ module Pod
327
332
  # @see AbstractExternalSource#description
328
333
  #
329
334
  def description
330
- "from `#{params[:local]}`"
335
+ "from `#{params[:path] || params[:local]}`"
331
336
  end
332
337
 
333
338
  #--------------------------------------#
@@ -339,7 +344,7 @@ module Pod
339
344
  # @return [Pathname] the path of the podspec.
340
345
  #
341
346
  def podspec_path
342
- declared_path = params[:local].to_s
347
+ declared_path = (params[:path] || params[:local]).to_s
343
348
  path_with_ext = File.extname(declared_path) == '.podspec' ? declared_path : "#{declared_path}/#{name}.podspec"
344
349
  podfile_dir = File.dirname(podfile_path || '')
345
350
  absolute_path = File.expand_path(path_with_ext, podfile_dir)
@@ -2,6 +2,6 @@ module Pod
2
2
 
3
3
  # The version of the cocoapods command line tool.
4
4
  #
5
- VERSION = '0.18.1' unless defined? Pod::VERSION
5
+ VERSION = '0.19.0' unless defined? Pod::VERSION
6
6
  end
7
7
 
@@ -24,8 +24,8 @@ install_resource()
24
24
  xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename $1 .xcdatamodeld`.momd"
25
25
  ;;
26
26
  *)
27
- echo "cp -R ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
28
- cp -R "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
27
+ echo "rsync -av --exclude '*/.svn/*' ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
28
+ rsync -av --exclude '*/.svn/*' "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
29
29
  ;;
30
30
  esac
31
31
  }
@@ -10,6 +10,7 @@ module Pod
10
10
 
11
11
  def save_as(pathname)
12
12
  pathname.open('w') do |source|
13
+ source.puts "#import <Foundation/Foundation.h>"
13
14
  source.puts "@interface #{class_name} : NSObject"
14
15
  source.puts "@end"
15
16
  source.puts "@implementation #{class_name}"
@@ -0,0 +1,86 @@
1
+ module Pod
2
+ module Generator
3
+
4
+ # Generates a header which allows to inspect at compile time the installed
5
+ # pods and the installed specifications of a pod.
6
+ #
7
+ # Example output:
8
+ #
9
+ # #define COCOAPODS_POD_AVAILABLE_ObjectiveSugar 1
10
+ # #define COCOAPODS_VERSION_MAJOR_ObjectiveSugar 0
11
+ # #define COCOAPODS_VERSION_MINOR_ObjectiveSugar 6
12
+ # #define COCOAPODS_VERSION_PATCH_ObjectiveSugar 2
13
+ #
14
+ # Example usage:
15
+ #
16
+ # #ifdef COCOAPODS
17
+ # #ifdef COCOAPODS_POD_AVAILABLE_ObjectiveSugar
18
+ # #import "ObjectiveSugar.h"
19
+ # #endif
20
+ # #else
21
+ # // Non CocoaPods code
22
+ # #endif
23
+ #
24
+ class TargetEnvironmentHeader
25
+
26
+ # @return [Array<LocalPod>] the specifications installed for the target.
27
+ #
28
+ attr_reader :specs
29
+
30
+ # @param [Array<LocalPod>] pods @see pods
31
+ #
32
+ def initialize(specs)
33
+ @specs = specs
34
+ end
35
+
36
+ # Generates and saves the file.
37
+ #
38
+ # @param [Pathname] pathname
39
+ # The path where to save the generated file.
40
+ #
41
+ # @return [void]
42
+ #
43
+ def save_as(pathname)
44
+ pathname.open('w') do |source|
45
+ source.puts
46
+ source.puts "// To check if a library is compiled with CocoaPods you"
47
+ source.puts "// can use the `COCOAPODS` macro definition which is"
48
+ source.puts "// defined in the xcconfigs so it is available in"
49
+ source.puts "// headers also when they are imported in the client"
50
+ source.puts "// project."
51
+ source.puts
52
+ source.puts
53
+ specs.each do |spec|
54
+ spec_name = safe_spec_name(spec.name)
55
+ source.puts "// #{spec.name}"
56
+ source.puts "#define COCOAPODS_POD_AVAILABLE_#{spec_name}"
57
+ if spec.version.semantic?
58
+ source.puts "#define COCOAPODS_VERSION_MAJOR_#{spec_name} #{spec.version.major}"
59
+ source.puts "#define COCOAPODS_VERSION_MINOR_#{spec_name} #{spec.version.minor}"
60
+ source.puts "#define COCOAPODS_VERSION_PATCH_#{spec_name} #{spec.version.patch}"
61
+ else
62
+ source.puts "// This library does not follow semantic-versioning,"
63
+ source.puts "// so we were not able to define version macros."
64
+ source.puts "// Please contact the author."
65
+ source.puts "// Version: #{spec.version}."
66
+ end
67
+ source.puts
68
+ end
69
+ end
70
+ end
71
+
72
+ #-----------------------------------------------------------------------#
73
+
74
+ private
75
+
76
+ # !@group Private Helpers
77
+
78
+ def safe_spec_name(spec_name)
79
+ spec_name.gsub(/[^\w]/,'_')
80
+ end
81
+
82
+ #-----------------------------------------------------------------------#
83
+
84
+ end
85
+ end
86
+ end
@@ -58,6 +58,7 @@ module Pod
58
58
  'PODS_HEADERS_SEARCH_PATHS' => '${PODS_PUBLIC_HEADERS_SEARCH_PATHS}',
59
59
  'PODS_BUILD_HEADERS_SEARCH_PATHS' => quote(sandbox.build_headers.search_paths),
60
60
  'PODS_PUBLIC_HEADERS_SEARCH_PATHS' => quote(sandbox.public_headers.search_paths),
61
+ 'GCC_PREPROCESSOR_DEFINITIONS' => 'COCOAPODS=1'
61
62
  })
62
63
 
63
64
  spec_consumers.each do |consumer|
@@ -2,7 +2,7 @@ module Pod
2
2
 
3
3
  class Specification
4
4
  def config
5
- UI.warn "Specification#config is deprecated. The config is accessible from " \
5
+ UI.warn "[#{name}] Specification#config is deprecated. The config is accessible from " \
6
6
  "the parameter passed to the hooks"
7
7
  Config.instance
8
8
  end
@@ -55,9 +55,9 @@ module Pod
55
55
  # @param [Lockfile] lockfile @see lockfile
56
56
  #
57
57
  def initialize(sandbox, podfile, lockfile = nil)
58
- @sandbox = sandbox
59
- @podfile = podfile
60
- @lockfile = lockfile
58
+ @sandbox = sandbox
59
+ @podfile = podfile
60
+ @lockfile = lockfile
61
61
  end
62
62
 
63
63
  # @return [Bool] Whether the installer is in update mode. In update mode
@@ -151,7 +151,17 @@ module Pod
151
151
 
152
152
  # @return [void]
153
153
  #
154
+ # @note The warning about the version of the Lockfile doesn't uses the
155
+ # `UI.warn` method because it prints the output only at the end
156
+ # of the installation. At that time CocoaPods could have crashed.
157
+ #
154
158
  def analyze
159
+ if lockfile && lockfile.cocoapods_version > Version.new(VERSION)
160
+ STDERR.puts '[!] The version of CocoaPods used to generate the lockfile is '\
161
+ 'higher that the one of the current executable. Incompatibility' \
162
+ 'issues might arise.'.yellow
163
+ end
164
+
155
165
  analyzer = Analyzer.new(sandbox, podfile, lockfile)
156
166
  analyzer.update_mode = update_mode
157
167
  @analysis_result = analyzer.analyze
@@ -276,6 +286,13 @@ module Pod
276
286
  @pods_project.add_podfile(config.podfile_path)
277
287
  end
278
288
  sandbox.project = @pods_project
289
+ platforms = libraries.map(&:platform)
290
+ osx_deployment_target = platforms.select { |p| p.name == :osx }.map(&:deployment_target).min
291
+ ios_deployment_target = platforms.select { |p| p.name == :ios }.map(&:deployment_target).min
292
+ @pods_project.build_configurations.each do |build_configuration|
293
+ build_configuration.build_settings['MACOSX_DEPLOYMENT_TARGET'] = osx_deployment_target.to_s if osx_deployment_target
294
+ build_configuration.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = ios_deployment_target.to_s if ios_deployment_target
295
+ end
279
296
  end
280
297
  end
281
298
 
@@ -372,7 +389,7 @@ module Pod
372
389
  executed = false
373
390
  libraries_using_spec(spec).each do |lib|
374
391
  lib_representation = library_rep(lib)
375
- executed ||= run_spec_pre_install_hook(spec, lib_representation)
392
+ executed |= run_spec_pre_install_hook(spec, lib_representation)
376
393
  end
377
394
  UI.message "- #{spec.name}" if executed
378
395
  end
@@ -431,7 +448,7 @@ module Pod
431
448
  executed = false
432
449
  libraries_using_spec(spec).each do |lib|
433
450
  lib_representation = library_rep(lib)
434
- executed ||= run_spec_post_install_hook(spec, lib_representation)
451
+ executed |= run_spec_post_install_hook(spec, lib_representation)
435
452
  end
436
453
  UI.message "- #{spec.name}" if executed
437
454
  end
@@ -170,9 +170,9 @@ module Pod
170
170
  #
171
171
  def generated_libraries
172
172
  libraries = []
173
- podfile.target_definitions.values.each do |target_definition|
174
- lib = Library.new(target_definition)
175
- lib.support_files_root = sandbox.library_support_files_dir(lib.name)
173
+ podfile.target_definition_list.each do |target_definition|
174
+ lib = Library.new(target_definition)
175
+ lib.support_files_root = sandbox.library_support_files_dir(lib.name)
176
176
 
177
177
  if config.integrate_targets?
178
178
  project_path = compute_user_project_path(target_definition)
@@ -248,7 +248,7 @@ module Pod
248
248
  pods_to_fetch = result.podfile_state.added + result.podfile_state.changed
249
249
  deps_to_fetch = deps_with_external_source.select { |dep| pods_to_fetch.include?(dep.root_name) }
250
250
  deps_to_fetch_if_needed = deps_with_external_source.select { |dep| result.podfile_state.unchanged.include?(dep.root_name) }
251
- deps_to_fetch += deps_to_fetch_if_needed.select { |dep| sandbox.specification(dep.root_name).nil? || !dep.external_source[:local].nil? }
251
+ deps_to_fetch += deps_to_fetch_if_needed.select { |dep| sandbox.specification(dep.root_name).nil? || !dep.external_source[:local].nil? || !dep.external_source[:path].nil? }
252
252
  end
253
253
 
254
254
  unless deps_to_fetch.empty?
@@ -446,8 +446,7 @@ module Pod
446
446
  end
447
447
 
448
448
  target_definition.set_platform(name, deployment_target)
449
- platform = Platform.new(name, deployment_target)
450
- platform
449
+ Platform.new(name, deployment_target)
451
450
  end
452
451
 
453
452
  #-----------------------------------------------------------------------#
@@ -35,7 +35,7 @@ module Pod
35
35
  create_suport_files_group
36
36
 
37
37
  create_xcconfig_file
38
- create_target_header
38
+ create_target_environment_header
39
39
  create_prefix_header
40
40
  create_bridge_support_file
41
41
  create_copy_resources_script
@@ -158,10 +158,10 @@ module Pod
158
158
  # Generates a header which allows to inspect at compile time the installed
159
159
  # pods and the installed specifications of a pod.
160
160
  #
161
- def create_target_header
162
- path = library.target_header_path
163
- UI.message "- Generating target header at #{UI.path(path)}" do
164
- generator = Generator::TargetHeader.new(library.specs)
161
+ def create_target_environment_header
162
+ path = library.target_environment_header_path
163
+ UI.message "- Generating target environment header at #{UI.path(path)}" do
164
+ generator = Generator::TargetEnvironmentHeader.new(library.specs)
165
165
  generator.save_as(path)
166
166
  add_file_to_support_group(path)
167
167
  end
@@ -177,7 +177,7 @@ module Pod
177
177
  path = library.prefix_header_path
178
178
  UI.message "- Generating prefix header at #{UI.path(path)}" do
179
179
  generator = Generator::PrefixHeader.new(library.file_accessors, library.platform)
180
- generator.imports << library.target_header_path.basename
180
+ generator.imports << library.target_environment_header_path.basename
181
181
  generator.save_as(path)
182
182
  add_file_to_support_group(path)
183
183
 
@@ -152,7 +152,7 @@ module Pod
152
152
  diff "${PODS_ROOT}/../Podfile.lock" "${PODS_ROOT}/Manifest.lock" > /dev/null
153
153
  if [[ $? != 0 ]] ; then
154
154
  cat << EOM
155
- error: The sanbox is not in sync with the Podfile.lock. Run 'pod install'.
155
+ error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.
156
156
  EOM
157
157
  exit 1
158
158
  fi
@@ -127,8 +127,8 @@ module Pod
127
127
  # @return [Pathname] the absolute path of the header file which contains
128
128
  # the information about the installed pods.
129
129
  #
130
- def target_header_path
131
- support_files_root + "#{label}-header.h"
130
+ def target_environment_header_path
131
+ support_files_root + "#{label}-environment.h"
132
132
  end
133
133
 
134
134
  # @return [Pathname] the absolute path of the prefix header file.
@@ -320,6 +320,8 @@ module Pod
320
320
  # @return [Hash{String=>String}] The path of the Pods with a local source
321
321
  # grouped by their name.
322
322
  #
323
+ # @todo Rename (e.g. `pods_with_local_path`)
324
+ #
323
325
  attr_reader :local_pods
324
326
 
325
327
  # Checks if a Pod is locally sourced?
@@ -80,11 +80,13 @@ module Pod
80
80
  #
81
81
  def public_headers
82
82
  public_headers = paths_for_attribute(:public_header_files)
83
+ private_headers = paths_for_attribute(:private_header_files)
83
84
  if public_headers.nil? || public_headers.empty?
84
- headers
85
+ header_files = headers
85
86
  else
86
- public_headers
87
+ header_files = public_headers
87
88
  end
89
+ header_files - private_headers
88
90
  end
89
91
 
90
92
  # @return [Hash{ Symbol => Array<Pathname> }] the resources of the
@@ -38,11 +38,7 @@ module Pod
38
38
  # @raise If no source including the set can be found.
39
39
  #
40
40
  def search(dependency)
41
- set = aggregate.search(dependency)
42
- unless set
43
- raise Informative, "Unable to find a pod named `#{dependency.name}`"
44
- end
45
- set
41
+ aggregate.search(dependency)
46
42
  end
47
43
 
48
44
  # Search all the sources with the given search term.
@@ -63,18 +59,21 @@ module Pod
63
59
  # @return [Array<Set>] The sets that contain the search term.
64
60
  #
65
61
  def search_by_name(query, full_text_search = false)
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']
62
+ if full_text_search
63
+ set_names = []
64
+ updated_search_index.each do |name, set_data|
65
+ text = name.dup
66
+ if full_text_search
67
+ text << set_data['authors'].to_s if set_data['authors']
68
+ text << set_data['summary'] if set_data['summary']
69
+ text << set_data['description'] if set_data['description']
70
+ end
71
+ set_names << name if text.downcase.include?(query.downcase)
73
72
  end
74
- set_names << name if text.downcase.include?(query.downcase)
73
+ sets = set_names.sort.map { |name| aggregate.represenative_set(name) }
74
+ else
75
+ sets = aggregate.search_by_name(query, false)
75
76
  end
76
-
77
- sets = set_names.sort.map { |name| aggregate.represenative_set(name) }
78
77
  if sets.empty?
79
78
  extra = ", author, summary, or description" if full_text_search
80
79
  raise Informative, "Unable to find a pod with name#{extra} matching `#{query}`"
@@ -90,24 +89,34 @@ module Pod
90
89
  # - description
91
90
  # - authors
92
91
  #
92
+ # @note This operation is fairly expensive, because of the YAML
93
+ # conversion.
94
+ #
93
95
  # @return [Hash{String => String}] The up to date search data.
94
96
  #
95
97
  def updated_search_index
96
- if search_index_path.exist?
97
- stored_index = YAML.load(search_index_path.read)
98
- if stored_index && stored_index.is_a?(Hash)
99
- search_index = aggregate.update_search_index(stored_index)
98
+ unless @updated_search_index
99
+ if search_index_path.exist?
100
+ stored_index = YAML.load(search_index_path.read)
101
+ if stored_index && stored_index.is_a?(Hash)
102
+ search_index = aggregate.update_search_index(stored_index)
103
+ else
104
+ search_index = aggregate.generate_search_index
105
+ end
100
106
  else
101
107
  search_index = aggregate.generate_search_index
102
108
  end
103
- else
104
- search_index = aggregate.generate_search_index
105
- end
106
109
 
107
- File.open(search_index_path, 'w') {|f| f.write(search_index.to_yaml) }
108
- search_index
110
+ File.open(search_index_path, 'w') {|f| f.write(search_index.to_yaml) }
111
+ @updated_search_index = search_index
112
+ end
113
+ @updated_search_index
109
114
  end
110
115
 
116
+ # Allows to clear the search index.
117
+ #
118
+ attr_writer :updated_search_index
119
+
111
120
  # @return [Pathname] The path where the search index should be stored.
112
121
  #
113
122
  def search_index_path
@@ -106,7 +106,7 @@ module Pod
106
106
  # @return [Bool] whether the validation should be performed against the root of
107
107
  # the podspec instead to its original source.
108
108
  #
109
- # @note Uses the `:local` option of the Podfile.
109
+ # @note Uses the `:path` option of the Podfile.
110
110
  #
111
111
  attr_writer :local
112
112
  def local?; @local; end
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.18.1
4
+ version: 0.19.0
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-04-10 00:00:00.000000000 Z
12
+ date: 2013-04-30 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.18.1
20
+ version: 0.19.0
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.18.1
27
+ version: 0.19.0
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: claide
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -207,9 +207,11 @@ executables:
207
207
  extensions: []
208
208
  extra_rdoc_files: []
209
209
  files:
210
+ - lib/cocoapods/command/help.rb
210
211
  - lib/cocoapods/command/inter_process_communication.rb
211
212
  - lib/cocoapods/command/list.rb
212
213
  - lib/cocoapods/command/outdated.rb
214
+ - lib/cocoapods/command/podfile_info.rb
213
215
  - lib/cocoapods/command/project.rb
214
216
  - lib/cocoapods/command/push.rb
215
217
  - lib/cocoapods/command/repo.rb
@@ -231,7 +233,7 @@ files:
231
233
  - lib/cocoapods/generator/documentation.rb
232
234
  - lib/cocoapods/generator/dummy_source.rb
233
235
  - lib/cocoapods/generator/prefix_header.rb
234
- - lib/cocoapods/generator/target_header.rb
236
+ - lib/cocoapods/generator/target_environment_header.rb
235
237
  - lib/cocoapods/generator/xcconfig.rb
236
238
  - lib/cocoapods/hooks/installer_representation.rb
237
239
  - lib/cocoapods/hooks/library_representation.rb
@@ -273,7 +275,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
273
275
  requirements:
274
276
  - - '>='
275
277
  - !ruby/object:Gem::Version
276
- version: '0'
278
+ version: 1.8.7
277
279
  required_rubygems_version: !ruby/object:Gem::Requirement
278
280
  requirements:
279
281
  - - '>='
@@ -281,7 +283,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
281
283
  version: '0'
282
284
  requirements: []
283
285
  rubyforge_project:
284
- rubygems_version: 2.0.0
286
+ rubygems_version: 2.0.3
285
287
  signing_key:
286
288
  specification_version: 3
287
289
  summary: An Objective-C library package manager.
@@ -1,58 +0,0 @@
1
- module Pod
2
- module Generator
3
-
4
- # Generates a header which allows to inspect at compile time the installed
5
- # pods and the installed specifications of a pod.
6
- #
7
- # Example output:
8
- #
9
- # #define __COCOA_PODS
10
- #
11
- # #define __POD_AFIncrementaStore
12
- # #define __POD_AFNetworking
13
- # #define __POD_libextobjc_EXTConcreteProtocol
14
- # #define __POD_libextobjc_EXTKeyPathCoding
15
- # #define __POD_libextobjc_EXTScope
16
- #
17
- # Example usage:
18
- #
19
- # #ifdef __COCOA_PODS
20
- # #ifdef __POD__AFNetworking
21
- # #import "MYLib+AFNetworking.h"
22
- # #endif
23
- # #else
24
- # // Non CocoaPods code
25
- # #endif
26
- #
27
- class TargetHeader
28
-
29
- # @return [Array<LocalPod>] the specifications installed for the target.
30
- #
31
- attr_reader :specs
32
-
33
- # @param [Array<LocalPod>] pods @see pods
34
- #
35
- def initialize(specs)
36
- @specs = specs
37
- end
38
-
39
- # Generates and saves the file.
40
- #
41
- # @param [Pathname] pathname
42
- # The path where to save the generated file.
43
- #
44
- # @return [void]
45
- #
46
- def save_as(pathname)
47
- pathname.open('w') do |source|
48
- source.puts "// WARNING: This feature of CocoaPods is present for discussion purposes and might be discontinued or changed in future"
49
- source.puts "#define __COCOA_PODS"
50
- source.puts
51
- specs.each do |specs|
52
- source.puts "#define __POD_#{specs.name.gsub(/[^\w]/,'_')}"
53
- end
54
- end
55
- end
56
- end
57
- end
58
- end