cocoapods-core 0.37.2 → 0.38.0.beta.1

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: 6e053438b3db2de494ab0ee1d76eec36a4d3f087
4
- data.tar.gz: 2544c41abf9e1658bb3cd4f18f1a0ac621c000c7
3
+ metadata.gz: 6424a1ddf29f5d1f2c1e0c105be4021f69e6bf79
4
+ data.tar.gz: f8b56bedf50e57284d111f8dc3199b8aa7ca7c7c
5
5
  SHA512:
6
- metadata.gz: 31aa9c985163f24fcb8f1fbf9a769673861a39de5263d2ff1830890fdb8f354b61c2510d12d0b5ca2bf0d46a753f66632ac09b4ad26600a7fbe5c6a979bb818f
7
- data.tar.gz: ec05ab1709917c93cdeef6ccbe48683ccf5e554b505cb7fdfe77fdd8219d4554bf6a64ebccc878a4cfd611379d49d956e515cd5d48ff3acceb4a5a92fb1448c6
6
+ metadata.gz: 58ec6a75d9be566df2a5c513263132cca2f51b19906a030ac1247ee86172871ee770b082989e94bd320d4b3cb1759507a7a053aa637309e46e9b1f73352e8aa1
7
+ data.tar.gz: 5496cd625328c5c1d6dc3a21a1db91c71cbb67fd36cf3ef6b999a56324d2e8ea6839d17efe037690cc6cd28e76d2be6caf3b074e23a96edfa27a4292571b10df
@@ -1,5 +1,5 @@
1
1
  module Pod
2
2
  # The version of the cocoapods-core.
3
3
  #
4
- CORE_VERSION = '0.37.2' unless defined? Pod::CORE_VERSION
4
+ CORE_VERSION = '0.38.0.beta.1' unless defined? Pod::CORE_VERSION
5
5
  end
@@ -67,6 +67,10 @@ module Pod
67
67
  new :osx
68
68
  end
69
69
 
70
+ def self.watchos
71
+ new :watchos
72
+ end
73
+
70
74
  # Checks if a platform is equivalent to another one or to a symbol
71
75
  # representation.
72
76
  #
@@ -188,6 +192,7 @@ module Pod
188
192
  case symbolic_name
189
193
  when :ios then 'iOS'
190
194
  when :osx then 'OS X'
195
+ when :watchos then 'watchOS'
191
196
  else symbolic_name.to_s end
192
197
  end
193
198
  end
@@ -234,29 +234,39 @@ module Pod
234
234
 
235
235
  # Configures a new Podfile from the given ruby string.
236
236
  #
237
- # @param [String] string
238
- # The ruby string which will configure the podfile with the DSL.
239
- #
240
237
  # @param [Pathname] path
241
238
  # The path from which the Podfile is loaded.
242
239
  #
240
+ # @param [String] contents
241
+ # The ruby string which will configure the podfile with the DSL.
242
+ #
243
243
  # @return [Podfile] the new Podfile
244
244
  #
245
- def self.from_ruby(path)
246
- string = File.open(path, 'r:utf-8') { |f| f.read }
245
+ def self.from_ruby(path, contents = nil)
246
+ contents ||= File.open(path, 'r:utf-8') { |f| f.read }
247
+
247
248
  # Work around for Rubinius incomplete encoding in 1.9 mode
248
- if string.respond_to?(:encoding) && string.encoding.name != 'UTF-8'
249
- string.encode!('UTF-8')
249
+ if contents.respond_to?(:encoding) && contents.encoding.name != 'UTF-8'
250
+ contents.encode!('UTF-8')
250
251
  end
252
+
253
+ if contents.tr!('“”‘’‛', %(""'''))
254
+ # Changes have been made
255
+ CoreUI.warn "Your #{path.basename} has had smart quotes sanitised. " \
256
+ 'To avoid issues in the future, you should not use ' \
257
+ 'TextEdit for editing it. If you are not using TextEdit, ' \
258
+ 'you should turn off smart quotes in your editor of choice.'
259
+ end
260
+
251
261
  podfile = Podfile.new(path) do
252
262
  # rubocop:disable Lint/RescueException
253
263
  begin
254
264
  # rubocop:disable Eval
255
- eval(string, nil, path.to_s)
265
+ eval(contents, nil, path.to_s)
256
266
  # rubocop:enable Eval
257
267
  rescue Exception => e
258
268
  message = "Invalid `#{path.basename}` file: #{e.message}"
259
- raise DSLError.new(message, path, e.backtrace, string)
269
+ raise DSLError.new(message, path, e.backtrace, contents)
260
270
  end
261
271
  # rubocop:enable Lint/RescueException
262
272
  end
@@ -311,17 +311,17 @@ module Pod
311
311
 
312
312
  #-----------------------------------------------------------------------#
313
313
 
314
- # Specifies the platform for which a static library should be build.
314
+ # Specifies the platform for which a static library should be built.
315
315
  #
316
316
  # CocoaPods provides a default deployment target if one is not specified.
317
- # The current default values are `4.3` for iOS and `10.6` for OS X.
317
+ # The current default values are `4.3` for iOS, `10.6` for OS X and `2.0` for watchOS.
318
318
  #
319
319
  # If the deployment target requires it (iOS < `4.3`), `armv6`
320
320
  # architecture will be added to `ARCHS`.
321
321
  #
322
322
  # @param [Symbol] name
323
- # the name of platform, can be either `:osx` for OS X or `:ios`
324
- # for iOS.
323
+ # the name of platform, can be either `:osx` for OS X, `:ios`
324
+ # for iOS or `:watchos` for watchOS.
325
325
  #
326
326
  # @param [String, Version] target
327
327
  # The optional deployment. If not provided a default value
@@ -583,12 +583,12 @@ module Pod
583
583
  # been downloaded but before they are installed.
584
584
  #
585
585
  # It receives the
586
- # [`Pod::Hooks::InstallerRepresentation`](http://rubydoc.info/gems/cocoapods/Pod/Hooks/InstallerRepresentation/)
586
+ # [`Pod::Installer`](http://rubydoc.info/gems/cocoapods/Pod/Installer/)
587
587
  # as its only argument.
588
588
  #
589
589
  # @example Defining a pre install hook in a Podfile.
590
590
  #
591
- # pre_install do |installer_representation|
591
+ # pre_install do |installer|
592
592
  # # Do something fancy!
593
593
  # end
594
594
  #
@@ -602,13 +602,13 @@ module Pod
602
602
  # to perform.
603
603
  #
604
604
  # It receives the
605
- # [`Pod::Hooks::InstallerRepresentation`](http://rubydoc.info/gems/cocoapods/Pod/Hooks/InstallerRepresentation/)
605
+ # [`Pod::Installer`](http://rubydoc.info/gems/cocoapods/Pod/Installer/)
606
606
  # as its only argument.
607
607
  #
608
- # @example Customising the `OTHER_LDFLAGS` of all targets
608
+ # @example Customising the build settings of all targets
609
609
  #
610
- # post_install do |installer_representation|
611
- # installer_representation.project.targets.each do |target|
610
+ # post_install do |installer|
611
+ # installer.pods_project.targets.each do |target|
612
612
  # target.build_configurations.each do |config|
613
613
  # config.build_settings['GCC_ENABLE_OBJC_GC'] = 'supported'
614
614
  # end
@@ -401,6 +401,8 @@ module Pod
401
401
 
402
402
  #--------------------------------------#
403
403
 
404
+ PLATFORM_DEFAULTS = { :ios => '4.3', :osx => '10.6', :watchos => '2.0' }.freeze
405
+
404
406
  # @return [Platform] the platform of the target definition.
405
407
  #
406
408
  # @note If no deployment target has been specified a default value is
@@ -415,7 +417,7 @@ module Pod
415
417
  else
416
418
  name = name_or_hash.to_sym
417
419
  end
418
- target ||= (name == :ios ? '4.3' : '10.6')
420
+ target ||= PLATFORM_DEFAULTS[name]
419
421
  Platform.new(name, target)
420
422
  else
421
423
  parent.platform unless root?
@@ -435,9 +437,9 @@ module Pod
435
437
  # @return [void]
436
438
  #
437
439
  def set_platform(name, target = nil)
438
- unless [:ios, :osx].include?(name)
440
+ unless [:ios, :osx, :watchos].include?(name)
439
441
  raise StandardError, "Unsupported platform `#{name}`. Platform " \
440
- 'must be `:ios` or `:osx`.'
442
+ 'must be `:ios`, `:osx`, or `:watchos`.'
441
443
  end
442
444
 
443
445
  if target
@@ -583,6 +583,18 @@ module Pod
583
583
  end
584
584
  @defined_in_file = file
585
585
  end
586
+
587
+ # @!group Validation
588
+
589
+ # Validates the cocoapods_version in the specification against the current version of Core.
590
+ # It will raise an Informative error if the version is not satisfied.
591
+ #
592
+ def validate_cocoapods_version
593
+ unless cocoapods_version.satisfied_by?(Version.create(CORE_VERSION))
594
+ raise Informative, "`#{name}` requires CocoaPods version `#{cocoapods_version}`, " \
595
+ "which is not satisified by your current version, `#{CORE_VERSION}`."
596
+ end
597
+ end
586
598
  end
587
599
 
588
600
  #---------------------------------------------------------------------------#
@@ -88,9 +88,20 @@ module Pod
88
88
  spec_attr_accessor :compiler_flags
89
89
 
90
90
  # @return [Hash{String => String}] the xcconfig flags for the current
91
- # specification.
91
+ # specification for the pod target.
92
92
  #
93
- spec_attr_accessor :xcconfig
93
+ def pod_target_xcconfig
94
+ attr = Specification::DSL.attributes[:pod_target_xcconfig]
95
+ merge_values(attr, value_for_attribute(:xcconfig), value_for_attribute(:pod_target_xcconfig))
96
+ end
97
+
98
+ # @return [Hash{String => String}] the xcconfig flags for the current
99
+ # specification for the user target.
100
+ #
101
+ def user_target_xcconfig
102
+ attr = Specification::DSL.attributes[:user_target_xcconfig]
103
+ merge_values(attr, value_for_attribute(:xcconfig), value_for_attribute(:user_target_xcconfig))
104
+ end
94
105
 
95
106
  # @return [String] The contents of the prefix header.
96
107
  #
@@ -1,7 +1,6 @@
1
1
  require 'cocoapods-core/specification/dsl/attribute_support'
2
2
  require 'cocoapods-core/specification/dsl/attribute'
3
3
  require 'cocoapods-core/specification/dsl/platform_proxy'
4
- require 'cocoapods-core/specification/dsl/deprecations'
5
4
 
6
5
  module Pod
7
6
  class Specification
@@ -43,6 +42,9 @@ module Pod
43
42
  module DSL
44
43
  extend Pod::Specification::DSL::AttributeSupport
45
44
 
45
+ # Deprecations must be required after include AttributeSupport
46
+ require 'cocoapods-core/specification/dsl/deprecations'
47
+
46
48
  #-----------------------------------------------------------------------#
47
49
 
48
50
  # @!group Root specification
@@ -98,6 +100,22 @@ module Pod
98
100
  root_attribute :version,
99
101
  :required => true
100
102
 
103
+ #-----------------------------------------------------------------------#
104
+
105
+ # @!method cocoapods_version=(cocoapods_version)
106
+ #
107
+ # The version of CocoaPods that the sepcification supports.
108
+ #
109
+ # @example
110
+ #
111
+ # spec.cocoapods_version = '>= 0.36'
112
+ #
113
+ # @param [String] cocoapods_version
114
+ # the CocoaPods version that the specification supports.
115
+ # CocoaPods follows [semantic versioning](http://semver.org).
116
+ #
117
+ root_attribute :cocoapods_version
118
+
101
119
  #------------------#
102
120
 
103
121
  # @!method authors=(authors)
@@ -443,7 +461,7 @@ module Pod
443
461
 
444
462
  # The names of the platforms supported by the specification class.
445
463
  #
446
- PLATFORMS = [:osx, :ios].freeze
464
+ PLATFORMS = [:osx, :ios, :watchos].freeze
447
465
 
448
466
  # @todo This currently is not used in the Ruby DSL.
449
467
  #
@@ -717,18 +735,53 @@ module Pod
717
735
 
718
736
  #------------------#
719
737
 
720
- # @!method xcconfig=(value)
738
+ # @!method pod_target_xcconfig=(value)
739
+ #
740
+ # Any flag to add to the final __private__ pod target xcconfig file.
741
+ #
742
+ # @example
743
+ #
744
+ # spec.pod_target_xcconfig = { 'OTHER_LDFLAGS' => '-lObjC' }
745
+ #
746
+ # @param [Hash{String => String}] value
747
+ # Key-value pairs representing build settings.
748
+ #
749
+ attribute :pod_target_xcconfig,
750
+ :container => Hash,
751
+ :inherited => true
752
+
753
+ # @!method user_target_xcconfig=(value)
754
+ #
755
+ # Specifies flags to add to the final aggregate target xcconfig file,
756
+ # which propagates to non-overridden and inheriting build settings to
757
+ # the integrated user targets.
721
758
  #
722
- # Any flag to add to the final xcconfig file.
759
+ # ---
760
+ #
761
+ # This attribute is __not recommended__ as Pods should not pollute the
762
+ # build settings of the user project and this can cause conflicts.
763
+ #
764
+ # Multiple definitions for build settings that take multiple values
765
+ # will be merged. The user is warned on conflicting definitions for
766
+ # custom build settings and build settings that take only one value.
767
+ #
768
+ # Typically clang compiler flags or precompiler macro definitions go
769
+ # in here if they are required when importing the pod in the user
770
+ # target. Note that, this influences not only the compiler view of the
771
+ # public interface of your pod, but also all other integrated pods
772
+ # alongside to yours. You should always prefer [`pod_target_xcconfig`](
773
+ # http://guides.cocoapods.org/syntax/podspec.html#pod_target_xcconfig),
774
+ # which can contain the same settings, but only influence the
775
+ # toolchain when compiling your pod target.
723
776
  #
724
777
  # @example
725
778
  #
726
- # spec.xcconfig = { 'OTHER_LDFLAGS' => '-lObjC' }
779
+ # spec.user_target_xcconfig = { 'MY_SUBSPEC' => 'YES' }
727
780
  #
728
781
  # @param [Hash{String => String}] value
729
- # A representing an xcconfig.
782
+ # Key-value pairs representing build settings.
730
783
  #
731
- attribute :xcconfig,
784
+ attribute :user_target_xcconfig,
732
785
  :container => Hash,
733
786
  :inherited => true
734
787
 
@@ -1316,6 +1369,10 @@ module Pod
1316
1369
  def osx
1317
1370
  PlatformProxy.new(self, :osx)
1318
1371
  end
1372
+
1373
+ def watchos
1374
+ PlatformProxy.new(self, :watchos)
1375
+ end
1319
1376
  end
1320
1377
  end
1321
1378
  end
@@ -9,6 +9,17 @@ module Pod
9
9
  CoreUI.warn "[#{self}] `preferred_dependency` has been renamed "\
10
10
  'to `default_subspecs`.'
11
11
  end
12
+
13
+ DSL.attribute :xcconfig,
14
+ :container => Hash,
15
+ :inherited => true
16
+
17
+ def xcconfig=(value)
18
+ self.pod_target_xcconfig = value
19
+ self.user_target_xcconfig = value
20
+ CoreUI.warn "[#{self}] `xcconfig` has been split into "\
21
+ '`pod_target_xcconfig` and `user_target_xcconfig`.'
22
+ end
12
23
  end
13
24
  end
14
25
  end
@@ -372,7 +372,9 @@ module Pod
372
372
  if git = s[:git]
373
373
  return unless git =~ /^#{URI.regexp}$/
374
374
  git_uri = URI.parse(git)
375
- perform_github_uri_checks(git, git_uri) if git_uri.host.end_with?('github.com')
375
+ if git_uri.host
376
+ perform_github_uri_checks(git, git_uri) if git_uri.host.end_with?('github.com')
377
+ end
376
378
  end
377
379
  end
378
380
 
@@ -34,6 +34,12 @@ module Pod
34
34
  end
35
35
  end
36
36
 
37
+ # @return [Requirement] The CocoaPods version required to use the specification.
38
+ #
39
+ def cocoapods_version
40
+ @cocoapods_version ||= Requirement.create(attributes_hash['cocoapods_version'])
41
+ end
42
+
37
43
  # @return [Hash] a hash containing the authors as the keys and their
38
44
  # email address as the values.
39
45
  #
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.37.2
4
+ version: 0.38.0.beta.1
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: 2015-05-27 00:00:00.000000000 Z
12
+ date: 2015-06-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -137,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
137
137
  version: '0'
138
138
  requirements: []
139
139
  rubyforge_project:
140
- rubygems_version: 2.4.7
140
+ rubygems_version: 2.4.8
141
141
  signing_key:
142
142
  specification_version: 3
143
143
  summary: The models of CocoaPods