cocoapods 0.21.0 → 0.22.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: 8458f14310c1ee86f0eba81e5bb8c74ed9eb9113
4
- data.tar.gz: aadd96a4104667cc93367759b45f3a6ed97c9325
3
+ metadata.gz: e1f552882d2489715f3154877683645345841303
4
+ data.tar.gz: f16fc98973864b454debaa5ed50d8272b075377b
5
5
  SHA512:
6
- metadata.gz: 1abd852203e0b33679e660bab511ce322f325b31c2075d92b39d5239bf1b3cc807971b161dbb29c90cb539bf09593d2731d755d1da9b3233aaef8639f8096998
7
- data.tar.gz: a7b9520a07dd88cfd699b9249145fd8d6842efc93d6db3652e11fd8067506a7a5c884e3319716b05d6d4e948f1260affe14f723ea0c7ccb4511804db5dc82aaf
6
+ metadata.gz: e16713b34307e47f67d139a3e7de88a2e00dd9f72bed30bc2e33535a2940fbd05f321b0a8e9f2cab934b22aea5132cb679d6805e59f42e17dddbc9ed3b0623b9
7
+ data.tar.gz: eca230d41a659af15dc15966008a1004b6502398a3a14529463c4c8ba3afca0f83470f8972533873d0efa3cca25e7f449535e521ff0f6d5e49a75dc48b4be817
@@ -2,6 +2,53 @@
2
2
 
3
3
  To install or update CocoaPods see this [guide](http://docs.cocoapods.org/guides/installing_cocoapods.html).
4
4
 
5
+ ## 0.22.0
6
+ [CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.21.0...0.22.0)
7
+ • [cocoapods-core](https://github.com/CocoaPods/Core/compare/0.21.0...0.22.0)
8
+ • [Xcodeproj](https://github.com/CocoaPods/Xcodeproj/compare/0.7.1...0.8.0)
9
+
10
+ ###### Enhancements
11
+
12
+ * Added the `pod lib create` subcommand which allows to create a new Pod
13
+ adhering to the best practices. The template is still a bit primitive
14
+ and we encourage users to provide feedback by submitting patches and issues
15
+ to https://github.com/CocoaPods/CocoaPods.
16
+ [#850](https://github.com/CocoaPods/CocoaPods/issues/850)
17
+
18
+ * Added the `pod lib lint` subcommand which allows to lint the Pod stored
19
+ in the working directory (a pod spec in the root is needed).
20
+ [#850](https://github.com/CocoaPods/CocoaPods/issues/850)
21
+
22
+ * The dependencies of the targets of the Pods project are now made explicit.
23
+ [#1165](https://github.com/CocoaPods/CocoaPods/issues/1165)
24
+
25
+ * The size of the cache used for the git repos is now configurable. For more
26
+ details see
27
+ https://github.com/CocoaPods/CocoaPods/blob/master/lib/cocoapods/config.rb#L7-L25
28
+ [#1159](https://github.com/CocoaPods/CocoaPods/issues/1159)
29
+
30
+ * The copy resources shell script now aborts if any error occurs.
31
+ [#1098](https://github.com/CocoaPods/CocoaPods/issues/1098)
32
+
33
+ * The output of shell script build phases no longer includes environment
34
+ variables to reduce noise.
35
+ [#1122](https://github.com/CocoaPods/CocoaPods/issues/1122)
36
+
37
+ * CocoaPods no longer sets the deprecated `ALWAYS_SEARCH_USER_PATHS` build
38
+ setting.
39
+
40
+ ###### Bug fixes
41
+
42
+ * Pods whose head state changes now are correctly detected and reinstalled.
43
+ [#1160](https://github.com/CocoaPods/CocoaPods/issues/1160)
44
+
45
+ * Fixed the library reppresentation of the hooks which caused issues with the
46
+ `#copy_resources_script_path` method.
47
+ [#1157](https://github.com/CocoaPods/CocoaPods/issues/1157)
48
+
49
+ * Frameworks symlinks are not properly preserved by the copy resources script.
50
+ Thanks to Thomas Dohmke (ashtom) for the fix.
51
+ [#1063](https://github.com/CocoaPods/CocoaPods/issues/1063)
5
52
 
6
53
  ## 0.21.0
7
54
  [CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.21.0.rc1...0.21.0)
@@ -18,25 +18,6 @@ module Pod
18
18
  end
19
19
  end
20
20
 
21
- # @return [Pathname] The directory where CocoaPods caches the downloads.
22
- #
23
- # @todo The {Installer::PodSourceInstaller} and the #{ExternalSources}
24
- # classes build and configure the downloader from scratch.
25
- #
26
- CACHE_ROOT = Pathname.new(File.join(ENV['HOME'], 'Library/Caches/CocoaPods'))
27
- CACHE_ROOT.mkpath unless CACHE_ROOT.exist?
28
-
29
- # @return [Fixnum] The maximum size for the cache expressed in Mb.
30
- #
31
- # @todo The {Installer::PodSourceInstaller} and the #{ExternalSources}
32
- # classes build and configure the downloader from scratch.
33
- #
34
- MAX_CACHE_SIZE = 500
35
-
36
- # @return [Pathname] The file to use a cache of the statistics provider.
37
- #
38
- STATISTICS_CACHE_FILE = CACHE_ROOT + 'statistics.yml'
39
-
40
21
  autoload :Command, 'cocoapods/command'
41
22
  autoload :Executable, 'cocoapods/executable'
42
23
  autoload :ExternalSources, 'cocoapods/external_sources'
@@ -8,17 +8,18 @@ module Pod
8
8
 
9
9
  class Command < CLAide::Command
10
10
 
11
+ require 'cocoapods/command/help'
12
+ require 'cocoapods/command/inter_process_communication'
13
+ require 'cocoapods/command/lib'
11
14
  require 'cocoapods/command/list'
12
15
  require 'cocoapods/command/outdated'
16
+ require 'cocoapods/command/podfile_info'
13
17
  require 'cocoapods/command/project'
14
18
  require 'cocoapods/command/push'
15
19
  require 'cocoapods/command/repo'
16
20
  require 'cocoapods/command/search'
17
21
  require 'cocoapods/command/setup'
18
22
  require 'cocoapods/command/spec'
19
- require 'cocoapods/command/help'
20
- require 'cocoapods/command/inter_process_communication'
21
- require 'cocoapods/command/podfile_info'
22
23
 
23
24
  self.abstract_command = true
24
25
  self.default_subcommand = 'install'
@@ -0,0 +1,152 @@
1
+ module Pod
2
+ class Command
3
+ class Lib < Command
4
+ self.abstract_command = true
5
+ self.summary = 'Develop pods'
6
+
7
+ #-----------------------------------------------------------------------#
8
+
9
+ class Create < Lib
10
+ self.summary = 'Creates a new Pod'
11
+
12
+ self.description = <<-DESC
13
+ Creates a new Pod with the given name from the template in the working directory.
14
+ DESC
15
+
16
+ self.arguments = '[NAME]'
17
+
18
+ def initialize(argv)
19
+ @name = argv.shift_argument
20
+ super
21
+ end
22
+
23
+ def validate!
24
+ super
25
+ help! "A name for the Pod is required." unless @name
26
+ end
27
+
28
+ def run
29
+ clone_template
30
+ configure_template
31
+ print_info
32
+ end
33
+
34
+ private
35
+
36
+ #----------------------------------------#
37
+
38
+ # !@group Private helpers
39
+
40
+ extend Executable
41
+ executable :git
42
+ executable :ruby
43
+
44
+ TEMPLATE_REPO = "https://github.com/CocoaPods/CocoaPods.git"
45
+ TEMPLATE_INFO_URL = "https://github.com/CocoaPods/CocoaPods"
46
+
47
+ # Clones the template from the remote in the working directory using
48
+ # the name of the Pod.
49
+ #
50
+ # @return [void]
51
+ #
52
+ def clone_template
53
+ UI.section("Creating `#{@name}` Pod") do
54
+ git!"clone '#{TEMPLATE_REPO}' #{@name}"
55
+ end
56
+ end
57
+
58
+ # Runs the template configuration utilities.
59
+ #
60
+ # @return [void]
61
+ #
62
+ def configure_template
63
+ UI.section("Configuring template") do
64
+ Dir.chdir(@name) do
65
+ ruby! "_CONFIGURE.rb #{@name}"
66
+ end
67
+ end
68
+ end
69
+
70
+ # Runs the template configuration utilities.
71
+ #
72
+ # @return [void]
73
+ #
74
+ def print_info
75
+ UI.puts "\nTo learn more about the template see `#{TEMPLATE_INFO_URL}`."
76
+ end
77
+
78
+ end
79
+
80
+ #-----------------------------------------------------------------------#
81
+
82
+ class Lint < Lib
83
+ self.summary = 'Validates a Pod'
84
+
85
+ self.description = <<-DESC
86
+ Validates the Pod using the files in the working directory.
87
+ DESC
88
+
89
+ def self.options
90
+ [ ["--quick", "Lint skips checks that would require to download and build the spec"],
91
+ ["--only-errors", "Lint validates even if warnings are present"],
92
+ ["--no-clean", "Lint leaves the build directory intact for inspection"] ].concat(super)
93
+ end
94
+
95
+ def initialize(argv)
96
+ @quick = argv.flag?('quick')
97
+ @only_errors = argv.flag?('only-errors')
98
+ @clean = argv.flag?('clean', true)
99
+ super
100
+ end
101
+
102
+ def validate!
103
+ super
104
+ end
105
+
106
+ def run
107
+ UI.puts
108
+ validator = Validator.new(podspec_to_lint)
109
+ validator.local = true
110
+ validator.quick = @quick
111
+ validator.no_clean = !@clean
112
+ validator.only_errors = @only_errors
113
+ validator.validate
114
+
115
+ if validator.validated?
116
+ UI.puts "#{validator.spec.name} passed validation.".green
117
+ else
118
+ raise Informative, "#{validator.spec.name} did not pass validation."
119
+ end
120
+
121
+ unless @clean
122
+ UI.puts "Pods project available at `#{validator.validation_dir}/Pods/Pods.xcodeproj` for inspection."
123
+ UI.puts
124
+ end
125
+ end
126
+
127
+ private
128
+
129
+ #----------------------------------------#
130
+
131
+ # !@group Private helpers
132
+
133
+ # @return [Pathname] The path of the podspec found in the current
134
+ # working directory.
135
+ #
136
+ # @raise If no podspec is found.
137
+ # @raise If multiple podspecs are found.
138
+ #
139
+ def podspec_to_lint
140
+ podspecs = Pathname.glob(Pathname.pwd + '*.podspec{.yaml,}')
141
+ raise Informative, "Unable to find a podspec in the working directory" if podspecs.count.zero?
142
+ raise Informative, "Multiple podspecs detected in the working directory" if podspecs.count > 1
143
+ podspecs.first
144
+ end
145
+
146
+ end
147
+
148
+ #-----------------------------------------------------------------------#
149
+
150
+ end
151
+ end
152
+ end
@@ -48,7 +48,7 @@ module Pod
48
48
  dates, groups = {}, {}
49
49
  days.each {|d| dates[d] = Time.now - 60 * 60 * 24 * d}
50
50
  sets = SourcesManager.all_sets
51
- statistics_provider = Specification::Set::Statistics.new(STATISTICS_CACHE_FILE)
51
+ statistics_provider = Config.instance.spec_statistics_provider
52
52
  creation_dates = statistics_provider.creation_dates(sets)
53
53
 
54
54
  sets.each do |set|
@@ -1,7 +1,7 @@
1
1
  module Pod
2
2
  class Command
3
3
  class Search < Command
4
- self.summary = 'Search pods'
4
+ self.summary = 'Searches for pods'
5
5
 
6
6
  self.description = <<-DESC
7
7
  Searches for pods, ignoring case, whose name matches `QUERY'. If the
@@ -43,7 +43,7 @@ module Pod
43
43
  sets.reject!{ |set| !set.specification.available_platforms.map(&:name).include?(:osx) }
44
44
  end
45
45
 
46
- statistics_provider = Specification::Set::Statistics.new(STATISTICS_CACHE_FILE)
46
+ statistics_provider = Config.instance.spec_statistics_provider
47
47
  sets.each do |set|
48
48
  begin
49
49
  if @stats
@@ -60,14 +60,12 @@ module Pod
60
60
 
61
61
  def self.options
62
62
  [ ["--quick", "Lint skips checks that would require to download and build the spec"],
63
- ["--local", "Lint a podspec against the local files contained in its directory"],
64
63
  ["--only-errors", "Lint validates even if warnings are present"],
65
64
  ["--no-clean", "Lint leaves the build directory intact for inspection"] ].concat(super)
66
65
  end
67
66
 
68
67
  def initialize(argv)
69
68
  @quick = argv.flag?('quick')
70
- @local = argv.flag?('local')
71
69
  @only_errors = argv.flag?('only-errors')
72
70
  @clean = argv.flag?('clean', true)
73
71
  @podspecs_paths = argv.arguments!
@@ -80,7 +78,6 @@ module Pod
80
78
  podspecs_to_lint.each do |podspec|
81
79
  validator = Validator.new(podspec)
82
80
  validator.quick = @quick
83
- validator.local = @local
84
81
  validator.no_clean = !@clean
85
82
  validator.only_errors = @only_errors
86
83
  validator.validate
@@ -17,11 +17,14 @@ module Pod
17
17
  :verbose => false,
18
18
  :silent => false,
19
19
  :skip_repo_update => false,
20
- :aggressive_cache => false,
21
20
 
22
21
  :clean => true,
23
22
  :integrate_targets => true,
24
23
  :new_version_message => true,
24
+
25
+ :cache_root => Pathname.new(File.join(ENV['HOME'], 'Library/Caches/CocoaPods')),
26
+ :max_cache_size => 500,
27
+ :aggressive_cache => false,
25
28
  }
26
29
 
27
30
  public
@@ -68,6 +71,26 @@ module Pod
68
71
  attr_accessor :skip_repo_update
69
72
  alias_method :skip_repo_update?, :skip_repo_update
70
73
 
74
+ public
75
+
76
+ #-------------------------------------------------------------------------#
77
+
78
+ # @!group Cache
79
+
80
+ # @return [Fixnum] The maximum size for the cache expressed in Mb.
81
+ #
82
+ attr_accessor :max_cache_size
83
+
84
+ # @return [Pathname] The directory where CocoaPods should cache remote data
85
+ # and other expensive to compute information.
86
+ #
87
+ attr_accessor :cache_root
88
+
89
+ def cache_root
90
+ @cache_root.mkpath unless @cache_root.exist?
91
+ @cache_root
92
+ end
93
+
71
94
  # Allows to set whether the downloader should use more aggressive caching
72
95
  # options.
73
96
  #
@@ -80,7 +103,7 @@ module Pod
80
103
  # options.
81
104
  #
82
105
  def aggressive_cache?
83
- @aggressive_cache || (ENV['CP_AGGRESSIVE_CACHE'] != 'FALSE')
106
+ @aggressive_cache || (ENV['CP_AGGRESSIVE_CACHE'] == 'TRUE')
84
107
  end
85
108
 
86
109
  public
@@ -193,6 +216,42 @@ module Pod
193
216
  @lockfile_path ||= installation_root + 'Podfile.lock'
194
217
  end
195
218
 
219
+ # @return [Pathname] The file to use a cache of the statistics provider.
220
+ #
221
+ def statistics_cache_file
222
+ cache_root + 'statistics.yml'
223
+ end
224
+
225
+ # @return [Pathname] The file to use to cache the search data.
226
+ #
227
+ def search_index_file
228
+ cache_root + 'search_index.yaml'
229
+ end
230
+
231
+ public
232
+
233
+ #-------------------------------------------------------------------------#
234
+
235
+ # @!group Dependency Injection
236
+
237
+ # @return [Downloader] The downloader to use for the retrieving remote
238
+ # source.
239
+ #
240
+ def downloader(target_path, options)
241
+ downloader = Downloader.for_target(target_path, options)
242
+ downloader.cache_root = cache_root
243
+ downloader.max_cache_size = max_cache_size
244
+ downloader.aggressive_cache = aggressive_cache?
245
+ downloader
246
+ end
247
+
248
+ # @return [Specification::Set::Statistics] The statistic provider to use
249
+ # for specifications.
250
+ #
251
+ def spec_statistics_provider
252
+ Specification::Set::Statistics.new(statistics_cache_file)
253
+ end
254
+
196
255
  private
197
256
 
198
257
  #-------------------------------------------------------------------------#
@@ -136,10 +136,7 @@ module Pod
136
136
  UI.titled_section("Pre-downloading: `#{name}` #{description}", { :verbose_prefix => "-> " }) do
137
137
  target = sandbox.root + name
138
138
  target.rmtree if target.exist?
139
- downloader = Downloader.for_target(target, params)
140
- downloader.cache_root = CACHE_ROOT.to_s
141
- downloader.max_cache_size = MAX_CACHE_SIZE
142
- downloader.aggressive_cache = false
139
+ downloader = Config.instance.downloader(target, params)
143
140
  downloader.download
144
141
  store_podspec(sandbox, target + "#{name}.podspec")
145
142
  sandbox.store_pre_downloaded_pod(name)
@@ -1,6 +1,6 @@
1
1
  module Pod
2
2
  # The version of the cocoapods command line tool.
3
3
  #
4
- VERSION = '0.21.0' unless defined? Pod::VERSION
4
+ VERSION = '0.22.0' unless defined? Pod::VERSION
5
5
  end
6
6
 
@@ -79,6 +79,7 @@ module Pod
79
79
 
80
80
  INSTALL_RESOURCES_FUCTION = <<EOS
81
81
  #!/bin/sh
82
+ set -e
82
83
 
83
84
  RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
84
85
  > "$RESOURCES_TO_COPY"
@@ -95,8 +96,10 @@ install_resource()
95
96
  ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \\"$1\\" .xib`.nib" "${PODS_ROOT}/$1" --sdk "${SDKROOT}"
96
97
  ;;
97
98
  *.framework)
98
- echo "rsync -rp ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
99
- rsync -rp "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
99
+ echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
100
+ mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
101
+ echo "cp -fpR ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
102
+ cp -fpR "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
100
103
  ;;
101
104
  *.xcdatamodeld)
102
105
  echo "xcrun momc ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename $1 .xcdatamodeld`.momd"
@@ -16,7 +16,6 @@ module Pod
16
16
  #
17
17
  def generate
18
18
  config = {
19
- 'ALWAYS_SEARCH_USER_PATHS' => 'YES',
20
19
  'OTHER_LDFLAGS' => default_ld_flags,
21
20
  'HEADER_SEARCH_PATHS' => quote(sandbox.public_headers.search_paths),
22
21
  'PODS_ROOT' => target.relative_pods_root,
@@ -15,7 +15,6 @@ module Pod
15
15
  #
16
16
  def generate
17
17
  config = {
18
- 'ALWAYS_SEARCH_USER_PATHS' => 'YES',
19
18
  'OTHER_LDFLAGS' => default_ld_flags,
20
19
  'PODS_ROOT' => '${SRCROOT}',
21
20
  'HEADER_SEARCH_PATHS' => quote(target.build_headers.search_paths) + ' ' + quote(sandbox.public_headers.search_paths),
@@ -59,8 +59,8 @@ module Pod
59
59
  #
60
60
  def specs_by_lib
61
61
  result = {}
62
- installer.pod_targets.each do |lib|
63
- result[installer.library_rep(lib)] = lib.specs
62
+ installer.aggregate_targets.each do |aggregate_target|
63
+ result[installer.library_rep(aggregate_target)] = aggregate_target.specs
64
64
  end
65
65
  result
66
66
  end
@@ -83,6 +83,7 @@ module Pod
83
83
  def initialize(sandbox, library)
84
84
  @sandbox = sandbox
85
85
  @library = library
86
+ raise "[BUG]" unless library.is_a?(AggregateTarget)
86
87
  end
87
88
 
88
89
  #-----------------------------------------------------------------------#
@@ -111,6 +111,7 @@ module Pod
111
111
  prepare_pods_project
112
112
  install_file_references
113
113
  install_libraries
114
+ set_target_dependencies
114
115
  link_aggregate_target
115
116
  run_post_install_hooks
116
117
  write_pod_project
@@ -332,6 +333,43 @@ module Pod
332
333
  end
333
334
  end
334
335
 
336
+ def set_target_dependencies
337
+ aggregate_targets.each do |aggregate_target|
338
+ aggregate_target.pod_targets.each do |pod_target|
339
+ add_dependency(aggregate_target, pod_target)
340
+ pod_target.dependencies.each do |dep|
341
+
342
+ pod_dependency_target = aggregate_target.pod_targets.find { |target| target.root_spec.name == dep }
343
+ add_dependency(pod_target, pod_dependency_target)
344
+ end
345
+ end
346
+ end
347
+ end
348
+
349
+ # TODO: tmp - move
350
+ #
351
+ def add_dependency(dependent_target, dependency_target)
352
+ container_proxy = pods_project.new(Xcodeproj::Project::PBXContainerItemProxy)
353
+ # container_proxy.container_portal = '224D2C1BCDE44D8F9B674AD5'
354
+ container_proxy.proxy_type = '1'
355
+ # container_proxy.remote_global_id_string = 'F8D3306CA0564CA3861B2D4E'
356
+ # container_proxy.remote_info = 'Pods-AFHTTPRequestOperationLogger'
357
+
358
+
359
+ # reference_proxy = pods_project.new(Xcodeproj::Project::PBXReferenceProxy)
360
+ # reference_proxy.path =
361
+ # reference_proxy.file_type =
362
+ # reference_proxy.remote_ref = container_proxy
363
+ # reference_proxy.source_tree = BUILT_PRODUCTS_DIR
364
+
365
+ dependency = pods_project.new(Xcodeproj::Project::PBXTargetDependency)
366
+ dependency.target = dependency_target.target
367
+ # dependency.targetProxy = container_proxy
368
+
369
+ dependent_target.target.dependencies << dependency
370
+ end
371
+
372
+
335
373
  # Links the aggregate targets with all the dependent libraries.
336
374
  #
337
375
  # @note This is run in the integration step to ensure that targets
@@ -547,14 +585,14 @@ module Pod
547
585
 
548
586
  # @return [LibraryRepresentation]
549
587
  #
550
- def library_rep(library)
551
- Hooks::LibraryRepresentation.new(sandbox, library)
588
+ def library_rep(aggregate_target)
589
+ Hooks::LibraryRepresentation.new(sandbox, aggregate_target)
552
590
  end
553
591
 
554
592
  # @return [Array<LibraryRepresentation>]
555
593
  #
556
594
  def library_reps
557
- @library_reps ||= pod_targets.map { |lib| library_rep(lib) }
595
+ @library_reps ||= aggregate_targets.map { |lib| library_rep(lib) }
558
596
  end
559
597
 
560
598
  # @return [Array<PodRepresentation>]
@@ -571,7 +609,9 @@ module Pod
571
609
  # @return [Array<Library>] The library.
572
610
  #
573
611
  def libraries_using_spec(spec)
574
- pod_targets.select { |pod_target| pod_target.specs.include?(spec) }
612
+ aggregate_targets.select do |aggregate_target|
613
+ aggregate_target.pod_targets.any? { |pod_target| pod_target.specs.include?(spec) }
614
+ end
575
615
  end
576
616
 
577
617
  # @return [Array<Library>] The libraries generated by the installation
@@ -150,6 +150,7 @@ module Pod
150
150
  return true if resolved_spec_names(pod) != sandbox_spec_names(pod)
151
151
  return true if sandbox.predownloaded?(pod)
152
152
  return true if folder_empty?(pod)
153
+ return true if sandbox.head_pod?(pod) != sandbox_head_version?(pod)
153
154
  if update_mode
154
155
  return true if sandbox.head_pod?(pod)
155
156
  end
@@ -235,6 +236,13 @@ module Pod
235
236
  sandbox_manifest.checksum(pod)
236
237
  end
237
238
 
239
+ # @return [Bool] Wether the Pod is installed in the sandbox is in head
240
+ # mode.
241
+ #
242
+ def sandbox_head_version?(pod)
243
+ sandbox_version(pod).head? == true
244
+ end
245
+
238
246
  #--------------------------------------#
239
247
 
240
248
  def folder_exist?(pod)
@@ -125,12 +125,7 @@ module Pod
125
125
  # source.
126
126
  #
127
127
  def downloader
128
- return @downloader if @downloader
129
- @downloader = Downloader.for_target(root, root_spec.source.dup)
130
- @downloader.cache_root = CACHE_ROOT.to_s
131
- @downloader.max_cache_size = MAX_CACHE_SIZE
132
- @downloader.aggressive_cache = aggressive_cache?
133
- @downloader
128
+ @downloader ||= Config.instance.downloader(root, root_spec.source.dup)
134
129
  end
135
130
 
136
131
  #-----------------------------------------------------------------------#
@@ -29,9 +29,6 @@ module Pod
29
29
 
30
30
  # Generates the contents of the xcconfig file and saves it to disk.
31
31
  #
32
- # @note The `ALWAYS_SEARCH_USER_PATHS` flag is enabled to support
33
- # libraries like `EmbedReader`.
34
- #
35
32
  # @return [void]
36
33
  #
37
34
  def create_xcconfig_file
@@ -51,9 +51,6 @@ module Pod
51
51
 
52
52
  # Generates the contents of the xcconfig file and saves it to disk.
53
53
  #
54
- # @note The `ALWAYS_SEARCH_USER_PATHS` flag is enabled to support
55
- # libraries like `EmbedReader`.
56
- #
57
54
  # @return [void]
58
55
  #
59
56
  def create_xcconfig_file
@@ -149,6 +149,7 @@ module Pod
149
149
  native_target.new_shell_script_build_phase(phase_name)
150
150
  path = target.copy_resources_script_relative_path
151
151
  phase.shell_script = %{"#{path}"\n}
152
+ phase.show_env_vars_in_log = '0'
152
153
  end
153
154
  end
154
155
 
@@ -177,6 +178,7 @@ module Pod
177
178
  exit 1
178
179
  fi
179
180
  EOS
181
+ phase.show_env_vars_in_log = '0'
180
182
  end
181
183
  end
182
184
 
@@ -120,7 +120,7 @@ module Pod
120
120
  # @return [Pathname] The path where the search index should be stored.
121
121
  #
122
122
  def search_index_path
123
- CACHE_ROOT + 'search_index.yaml'
123
+ Config.instance.search_index_file
124
124
  end
125
125
 
126
126
  public
@@ -38,7 +38,7 @@ module Pod
38
38
  # @return [String] A string suitable for debugging.
39
39
  #
40
40
  def inspect
41
- "<#{self.class} name=#{name} platform=#{platform}>"
41
+ "<#{self.class} name=#{name} >"
42
42
  end
43
43
 
44
44
  #-------------------------------------------------------------------------#
@@ -56,9 +56,16 @@ module Pod
56
56
  #
57
57
  attr_accessor :pod_targets
58
58
 
59
- # @return [Array<SpecConsumer>]
59
+ # @return [Array<Specification>] The specifications used by this aggregate target.
60
+ #
61
+ def specs
62
+ pod_targets.map(&:specs).flatten
63
+ end
64
+
65
+ # @return [Array<Specification::Consumer>] The consumers of the Pod.
66
+ #
60
67
  def spec_consumers
61
- pod_targets.map(&:specs).flatten.map { |spec| spec.consumer(platform) }
68
+ specs.map { |spec| spec.consumer(platform) }
62
69
  end
63
70
 
64
71
  # @return [Pathname] The absolute path of acknowledgements file.
@@ -49,5 +49,14 @@ module Pod
49
49
  specs.first.root
50
50
  end
51
51
 
52
+ # @return [Array<String>] The names of the Pods on which this target
53
+ # depends.
54
+ #
55
+ def dependencies
56
+ specs.map do |spec|
57
+ spec.consumer(platform).dependencies.map { |dep| dep.name }
58
+ end.flatten
59
+ end
60
+
52
61
  end
53
62
  end
@@ -308,7 +308,7 @@ module Pod
308
308
  podfile = Pod::Podfile.new do
309
309
  platform(platform_name, deployment_target)
310
310
  if (local)
311
- pod name, :local => podspec.dirname.to_s
311
+ pod name, :path => podspec.dirname.to_s
312
312
  else
313
313
  pod name, :podspec => podspec.to_s
314
314
  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.21.0
4
+ version: 0.22.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-07-01 00:00:00.000000000 Z
12
+ date: 2013-07-03 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.21.0
20
+ version: 0.22.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.21.0
27
+ version: 0.22.0
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: claide
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -59,14 +59,14 @@ dependencies:
59
59
  requirements:
60
60
  - - ~>
61
61
  - !ruby/object:Gem::Version
62
- version: 0.7.1
62
+ version: 0.8.0
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - ~>
68
68
  - !ruby/object:Gem::Version
69
- version: 0.7.1
69
+ version: 0.8.0
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: colored
72
72
  requirement: !ruby/object:Gem::Requirement
@@ -168,6 +168,7 @@ extra_rdoc_files: []
168
168
  files:
169
169
  - lib/cocoapods/command/help.rb
170
170
  - lib/cocoapods/command/inter_process_communication.rb
171
+ - lib/cocoapods/command/lib.rb
171
172
  - lib/cocoapods/command/list.rb
172
173
  - lib/cocoapods/command/outdated.rb
173
174
  - lib/cocoapods/command/podfile_info.rb
@@ -236,20 +237,53 @@ post_install_message: |2+
236
237
 
237
238
  CHANGELOG:
238
239
 
239
- ## 0.21.0
240
- [CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.21.0.rc1...0.21.0)
241
- • [cocoapods-core](https://github.com/CocoaPods/Core/compare/0.21.0.rc1...0.21.0)
242
- • [Xcodeproj](https://github.com/CocoaPods/Xcodeproj/compare/0.7.0...0.7.1)
240
+ ## 0.22.0
241
+ [CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.21.0...0.22.0)
242
+ • [cocoapods-core](https://github.com/CocoaPods/Core/compare/0.21.0...0.22.0)
243
+ • [Xcodeproj](https://github.com/CocoaPods/Xcodeproj/compare/0.7.1...0.8.0)
243
244
 
244
- ###### Bug fixes
245
+ ###### Enhancements
246
+
247
+ * Added the `pod lib create` subcommand which allows to create a new Pod
248
+ adhering to the best practices. The template is still a bit primitive
249
+ and we encourage users to provide feedback by submitting patches and issues
250
+ to https://github.com/CocoaPods/CocoaPods.
251
+ [#850](https://github.com/CocoaPods/CocoaPods/issues/850)
252
+
253
+ * Added the `pod lib lint` subcommand which allows to lint the Pod stored
254
+ in the working directory (a pod spec in the root is needed).
255
+ [#850](https://github.com/CocoaPods/CocoaPods/issues/850)
256
+
257
+ * The dependencies of the targets of the Pods project are now made explicit.
258
+ [#1165](https://github.com/CocoaPods/CocoaPods/issues/1165)
259
+
260
+ * The size of the cache used for the git repos is now configurable. For more
261
+ details see
262
+ https://github.com/CocoaPods/CocoaPods/blob/master/lib/cocoapods/config.rb#L7-L25
263
+ [#1159](https://github.com/CocoaPods/CocoaPods/issues/1159)
245
264
 
246
- * Fixed a linter issue related to the dedicated targets change.
247
- [#1130](https://github.com/CocoaPods/CocoaPods/issues/1130)
265
+ * The copy resources shell script now aborts if any error occurs.
266
+ [#1098](https://github.com/CocoaPods/CocoaPods/issues/1098)
267
+
268
+ * The output of shell script build phases no longer includes environment
269
+ variables to reduce noise.
270
+ [#1122](https://github.com/CocoaPods/CocoaPods/issues/1122)
271
+
272
+ * CocoaPods no longer sets the deprecated `ALWAYS_SEARCH_USER_PATHS` build
273
+ setting.
274
+
275
+ ###### Bug fixes
248
276
 
249
- * Fixed xcconfig issues related to Pods including a dot in the name.
250
- [#1152](https://github.com/CocoaPods/CocoaPods/issues/1152)
277
+ * Pods whose head state changes now are correctly detected and reinstalled.
278
+ [#1160](https://github.com/CocoaPods/CocoaPods/issues/1160)
251
279
 
280
+ * Fixed the library reppresentation of the hooks which caused issues with the
281
+ `#copy_resources_script_path` method.
282
+ [#1157](https://github.com/CocoaPods/CocoaPods/issues/1157)
252
283
 
284
+ * Frameworks symlinks are not properly preserved by the copy resources script.
285
+ Thanks to Thomas Dohmke (ashtom) for the fix.
286
+ [#1063](https://github.com/CocoaPods/CocoaPods/issues/1063)
253
287
 
254
288
  rdoc_options: []
255
289
  require_paths: