cocoapods 0.36.0.beta.2 → 0.36.0.rc.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: 86bf745ff3beb43f547d72bdc3bb5561250836ef
4
- data.tar.gz: 527fecbbab8649bf447a7fb6ea5130340a9ffd65
3
+ metadata.gz: ef4ce8ae91c04f6565e9e5607da50a2f6b6d96f1
4
+ data.tar.gz: e913792e08a80a242b1817fb186456219cc3cca1
5
5
  SHA512:
6
- metadata.gz: 691fb6ca9b5324b5a1ac63a496e9cb87429941ce7d178b45501649890a5029a9eeb1801850e9a73e655405c016a40da7cfaa53326f63825123939e501f6ad9c5
7
- data.tar.gz: bf435ded4cbcaca3b11a79aa9df3aecfcc65b9f54f070f98bf451f98a8dc2b010ce58d2353cb117f7a5488e8bf51b10ff8f9461aac0d7f6b9ec652544d3f64c1
6
+ metadata.gz: 697dbb533f3490b27c2683c110f6f7ddea96b2197be16d042d805ed3baa3a17e36807f24821abb559f43c4c0f0c44b6afbb4487d1a9f613ea265e9b5d9f85d57
7
+ data.tar.gz: 5a881818cfcc504b8f45e1bda435397279a806e357768c6520bd2fe198eb5521b35e32f85481d971a97e8b7e8ba69b8437effe506ee5aa7ffcb40f9b2cb514fd
@@ -4,6 +4,130 @@ 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.rc.1
8
+
9
+ ##### Enhancements
10
+
11
+ * Set the `APPLICATION_EXTENSION_API_ONLY` build setting if integrating with a watch extension target.
12
+ [Boris Bügling](https://github.com/neonichu)
13
+ [#3153](https://github.com/CocoaPods/CocoaPods/issues/3153)
14
+
15
+ * Build for iOS simulator only during validation. This allows validation without having
16
+ provisioning profiles set up.
17
+ [Boris Bügling](https://github.com/neonichu)
18
+ [#3083](https://github.com/CocoaPods/CocoaPods/issues/3083)
19
+ [Swift#13](https://github.com/CocoaPods/swift/issues/13)
20
+
21
+ * Explicitly inform the user to close existing project when switching to
22
+ a workspace for the first time.
23
+ [Kyle Fuller](https://github.com/kylef)
24
+ [#2996](https://github.com/CocoaPods/CocoaPods/issues/2996)
25
+
26
+ * Automatically detect conflicts between framework names.
27
+ [Samuel Giddins](https://github.com/segiddins)
28
+ [#2943](https://github.com/CocoaPods/CocoaPods/issues/2943)
29
+
30
+ * Use the proper `TMPDIR` for the CocoaPods process, instead of blindly using
31
+ `/tmp`.
32
+ [Samuel Giddins](https://github.com/segiddins)
33
+
34
+ * Let lint fail for Swift pods supporting deployment targets below iOS 8.0.
35
+ [Boris Bügling](https://github.com/neonichu)
36
+ [#2963](https://github.com/CocoaPods/CocoaPods/issues/2963)
37
+
38
+ * Reject installation if a static library is used as a transitive dependency
39
+ while integrating Pods as frameworks.
40
+ [Samuel Giddins](https://github.com/segiddins)
41
+ [#2926](https://github.com/CocoaPods/CocoaPods/issues/2926)
42
+
43
+ * Do not copy Swift standard libraries multiple times.
44
+ [Boris Bügling](https://github.com/neonichu)
45
+ [#3131](https://github.com/CocoaPods/CocoaPods/issues/3131)
46
+
47
+ * Check for Xcode License Agreement before running commands.
48
+ [Xavi Matos](https://github.com/CalQL8ed-K-OS)
49
+ [#3002](https://github.com/CocoaPods/CocoaPods/issues/3002)
50
+
51
+ * `pod update PODNAME` will update pods in a case-insensitive manner.
52
+ [Samuel Giddins](https://github.com/segiddins)
53
+ [#2992](https://github.com/CocoaPods/CocoaPods/issues/2992)
54
+
55
+ * Allow specifying repo names to `pod {spec,lib} lint --sources`.
56
+ [Samuel Giddins](https://github.com/segiddins)
57
+ [#2685](https://github.com/CocoaPods/CocoaPods/issues/2685)
58
+
59
+ * Require explicit use of `use_frameworks!` for Pods written in Swift.
60
+ [Boris Bügling](https://github.com/neonichu)
61
+ [#3029](https://github.com/CocoaPods/CocoaPods/issues/3029)
62
+
63
+ * Lint as framework automatically. If needed, `--use-libraries` option
64
+ allows linting as a static library.
65
+ [Boris Bügling](https://github.com/neonichu)
66
+ [#2912](https://github.com/CocoaPods/CocoaPods/issues/2912)
67
+
68
+ * Adding Xcode Legacy build location support for default Pods.xcodeproj.
69
+ It defaults to `${SRCROOT}/../build` but can be changed in a `post_install`
70
+ hook by using the `Project#symroot=` writer.
71
+ [Sam Marshall](https://github.com/samdmarshall)
72
+
73
+ ##### Bug Fixes
74
+
75
+ * Set `SKIP_INSTALL=YES` for all generated targets to avoid producing
76
+ *Generic Xcode Archives* on Archive.
77
+ [Marius Rackwitz](https://github.com/mrackwitz)
78
+ [#3188](https://github.com/CocoaPods/CocoaPods/issues/3188)
79
+
80
+ * Added support for .tpp C++ header files in specs (previously were getting
81
+ filtered out and symlinks wouldn't get created in the Pods/Headers folder.)
82
+ [Honza Dvorsky](https://github.com/czechboy0)
83
+ [#3129](https://github.com/CocoaPods/CocoaPods/pull/3129)
84
+
85
+ * Fixed installation for app-extension targets which had no dependencies
86
+ configured in the Podfile.
87
+ [Boris Bügling](https://github.com/neonichu)
88
+ [#3102](https://github.com/CocoaPods/CocoaPods/issues/3102)
89
+
90
+ * Correct escaping of resource bundles in 'Copy Pods Resources' script.
91
+ [Seán Labastille](https://github.com/flufff42)
92
+ [#3082](https://github.com/CocoaPods/CocoaPods/issues/3082)
93
+
94
+ * Correctly update sources when calling `pod outdated`, and also respect the
95
+ `--[no-]repo-update` flag.
96
+ [Samuel Giddins](https://github.com/segiddins)
97
+ [#3137](https://github.com/CocoaPods/CocoaPods/issues/3137)
98
+
99
+ * Fix the `OTHER_SWIFT_FLAGS` generated, so `#if COCOAPODS` works in Swift.
100
+ [Samuel Giddins](https://github.com/segiddins)
101
+ [#2983](https://github.com/CocoaPods/CocoaPods/issues/2983)
102
+
103
+ * Output a properly-formed `Podfile` when running `pod init` with a target that
104
+ contains a `'` in its name.
105
+ [Samuel Giddins](https://github.com/segiddins)
106
+ [#3136](https://github.com/CocoaPods/CocoaPods/issues/3136)
107
+
108
+ * Remove the stored lockfile checkout source when switching to a development
109
+ pod.
110
+ [Samuel Giddins](https://github.com/segiddins)
111
+ [#3141](https://github.com/CocoaPods/CocoaPods/issues/3141)
112
+
113
+ * Migrate local Ruby podspecs to JSON, allowing updating those pods to work.
114
+ [Samuel Giddins](https://github.com/segiddins)
115
+ [#3038](https://github.com/CocoaPods/CocoaPods/issues/3038)
116
+
117
+ * Removing grep color markup in the embed frameworks script.
118
+ [Adriano Bonat](https://github.com/tanob)
119
+ [#3117](https://github.com/CocoaPods/CocoaPods/issues/3117)
120
+
121
+ * Fixes an issue where `pod ipc list` and `pod ipc podfile` was returning an
122
+ error.
123
+ [Kyle Fuller](https://github.com/kylef)
124
+ [#3134](https://github.com/CocoaPods/CocoaPods/issues/3134)
125
+
126
+ * Fixes an issue with spaces in the path to the user's developer tools.
127
+ [Boris Bügling](https://github.com/neonichu)
128
+ [#3181](https://github.com/CocoaPods/CocoaPods/issues/3181)
129
+
130
+
7
131
  ## 0.36.0.beta.2
8
132
 
9
133
  [Xcodeproj](https://github.com/CocoaPods/Xcodeproj/compare/0.21.0...0.21.2)
@@ -16,6 +16,7 @@ end
16
16
 
17
17
  module Pod
18
18
  require 'pathname'
19
+ require 'tmpdir'
19
20
 
20
21
  require 'cocoapods/gem_version'
21
22
  require 'cocoapods-core'
@@ -35,6 +36,8 @@ module Pod
35
36
  end
36
37
  end
37
38
 
39
+ Xcodeproj::PlainInformative.send(:include, CLAide::InformativeError)
40
+
38
41
  autoload :AggregateTarget, 'cocoapods/target/aggregate_target'
39
42
  autoload :Command, 'cocoapods/command'
40
43
  autoload :Executable, 'cocoapods/executable'
@@ -41,6 +41,7 @@ module Pod
41
41
 
42
42
  def self.run(argv)
43
43
  help! 'You cannot run CocoaPods as root.' if Process.uid == 0
44
+ verify_xcode_license_approved!
44
45
 
45
46
  super(argv)
46
47
  UI.print_warnings
@@ -121,5 +122,13 @@ module Pod
121
122
  raise Informative, "No `Podfile.lock' found in the project directory, run `pod install'."
122
123
  end
123
124
  end
125
+
126
+ def self.verify_xcode_license_approved!
127
+ if `/usr/bin/xcrun clang 2>&1` =~ /license/ && !$?.success?
128
+ raise Informative, 'You have not agreed to the Xcode license, which ' \
129
+ 'you must do to use CocoaPods. Agree to the license by running: ' \
130
+ '`xcodebuild -license`.'
131
+ end
132
+ end
124
133
  end
125
134
  end
@@ -72,7 +72,7 @@ module Pod
72
72
  # @return [String] the text for the target module
73
73
  #
74
74
  def target_module(target)
75
- target_module = "\ntarget '#{target.name}' do\n"
75
+ target_module = "\ntarget '#{target.name.gsub(/'/, "\\\\\'")}' do\n"
76
76
 
77
77
  if target.name =~ /tests?/i
78
78
  target_module << template_contents(config.default_test_podfile_path)
@@ -54,6 +54,7 @@ module Pod
54
54
  end
55
55
 
56
56
  def run
57
+ require 'yaml'
57
58
  podfile = Pod::Podfile.from_file(@path)
58
59
  output_pipe.puts podfile.to_yaml
59
60
  end
@@ -77,6 +78,7 @@ module Pod
77
78
  DESC
78
79
 
79
80
  def run
81
+ require 'yaml'
80
82
  sets = SourcesManager.aggregate.all_sets
81
83
  result = {}
82
84
  sets.each do |set|
@@ -113,8 +113,8 @@ module Pod
113
113
  ['--subspec=NAME', 'Lint validates only the given subspec'],
114
114
  ['--no-subspecs', 'Lint skips validation of subspecs'],
115
115
  ['--no-clean', 'Lint leaves the build directory intact for inspection'],
116
- ['--use-frameworks', 'Lint uses frameworks to install the spec'],
117
- ['--sources=https://github.com/artsy/Specs', 'The sources from which to pull dependant pods ' \
116
+ ['--use-libraries', 'Lint uses static libraries to install the spec'],
117
+ ['--sources=https://github.com/artsy/Specs,master', 'The sources from which to pull dependant pods ' \
118
118
  '(defaults to https://github.com/CocoaPods/Specs.git). '\
119
119
  'Multiple sources must be comma-delimited.']].concat(super)
120
120
  end
@@ -125,7 +125,7 @@ module Pod
125
125
  @clean = argv.flag?('clean', true)
126
126
  @subspecs = argv.flag?('subspecs', true)
127
127
  @only_subspec = argv.option('subspec')
128
- @use_frameworks = argv.flag?('use-frameworks')
128
+ @use_frameworks = !argv.flag?('use-libraries')
129
129
  @source_urls = argv.option('sources', 'https://github.com/CocoaPods/Specs.git').split(',')
130
130
  @podspecs_paths = argv.arguments!
131
131
  super
@@ -13,7 +13,7 @@ module Pod
13
13
  end
14
14
 
15
15
  def initialize(argv)
16
- config.skip_repo_update = argv.flag?('repo-update', config.skip_repo_update)
16
+ config.skip_repo_update = !argv.flag?('repo-update', !config.skip_repo_update)
17
17
  super
18
18
  end
19
19
 
@@ -96,6 +96,7 @@ module Pod
96
96
 
97
97
  def spec_sets
98
98
  @spec_sets ||= begin
99
+ analyzer.send(:update_repositories_if_needed)
99
100
  aggregate = Source::Aggregate.new(analyzer.sources.map(&:repo))
100
101
  installed_pods.map do |pod_name|
101
102
  aggregate.search(Dependency.new(pod_name))
@@ -21,6 +21,7 @@ module Pod
21
21
 
22
22
  def self.options
23
23
  [['--allow-warnings', 'Allows pushing even if there are warnings'],
24
+ ['--use-libraries', 'Linter uses static libraries to install the spec'],
24
25
  ['--local-only', 'Does not perform the step of pushing REPO to its remote']].concat(super)
25
26
  end
26
27
 
@@ -29,6 +30,7 @@ module Pod
29
30
  @local_only = argv.flag?('local-only')
30
31
  @repo = argv.shift_argument
31
32
  @podspec = argv.shift_argument
33
+ @use_frameworks = !argv.flag?('use-libraries')
32
34
  super
33
35
  end
34
36
 
@@ -84,10 +86,12 @@ module Pod
84
86
  podspec_files.each do |podspec|
85
87
  validator = Validator.new(podspec, SourcesManager.all.map(&:url))
86
88
  validator.allow_warnings = @allow_warnings
89
+ validator.use_frameworks = @use_frameworks
87
90
  begin
88
91
  validator.validate
89
- rescue
90
- raise Informative, "The `#{podspec}` specification does not validate."
92
+ rescue => e
93
+ raise Informative, "The `#{podspec}` specification does not validate." \
94
+ "\n\n#{e.message}"
91
95
  end
92
96
  raise Informative, "The `#{podspec}` specification does not validate." unless validator.validated?
93
97
  end
@@ -20,8 +20,8 @@ module Pod
20
20
  ['--subspec=NAME', 'Lint validates only the given subspec'],
21
21
  ['--no-subspecs', 'Lint skips validation of subspecs'],
22
22
  ['--no-clean', 'Lint leaves the build directory intact for inspection'],
23
- ['--use-frameworks', 'Lint uses frameworks to install the spec'],
24
- ['--sources=https://github.com/artsy/Specs', 'The sources from which to pull dependant pods ' \
23
+ ['--use-libraries', 'Lint uses static libraries to install the spec'],
24
+ ['--sources=https://github.com/artsy/Specs,master', 'The sources from which to pull dependant pods ' \
25
25
  '(defaults to https://github.com/CocoaPods/Specs.git). '\
26
26
  'Multiple sources must be comma-delimited.']].concat(super)
27
27
  end
@@ -32,9 +32,9 @@ module Pod
32
32
  @clean = argv.flag?('clean', true)
33
33
  @subspecs = argv.flag?('subspecs', true)
34
34
  @only_subspec = argv.option('subspec')
35
- @use_frameworks = argv.flag?('use-frameworks')
35
+ @use_frameworks = !argv.flag?('use-libraries')
36
36
  @source_urls = argv.option('sources', 'https://github.com/CocoaPods/Specs.git').split(',')
37
- @podspecs_paths = argv.arguments!
37
+ @podspecs_paths = argv.arguments!
38
38
  super
39
39
  end
40
40
 
@@ -97,7 +97,7 @@ module Pod
97
97
  end
98
98
 
99
99
  def podspecs_tmp_dir
100
- Pathname(File.join(Pathname.new('/tmp').realpath, '/CocoaPods/Lint_podspec'))
100
+ Pathname.new(Dir.tmpdir) + 'CocoaPods/Lint_podspec'
101
101
  end
102
102
  end
103
103
  end
@@ -52,8 +52,9 @@ module Pod
52
52
  raise Informative, "Unable to locate the executable `#{executable}`" if bin.empty?
53
53
 
54
54
  require 'open4'
55
+ require 'shellwords'
55
56
 
56
- full_command = "#{bin} #{command}"
57
+ full_command = "#{bin.shellescape} #{command}"
57
58
 
58
59
  if Config.instance.verbose?
59
60
  UI.message("$ #{full_command}")
@@ -141,6 +141,9 @@ module Pod
141
141
  if spec.is_a? Pathname
142
142
  spec = Specification.from_file(spec).to_pretty_json
143
143
  json = true
144
+ elsif spec.is_a?(String) && !json
145
+ spec = Specification.from_string(spec, 'spec.podspec').to_pretty_json
146
+ json = true
144
147
  end
145
148
  sandbox.store_podspec(name, spec, true, json)
146
149
  end
@@ -19,6 +19,7 @@ module Pod
19
19
  store_podspec(sandbox, podspec, podspec.extname == '.json')
20
20
  is_absolute = absolute?(declared_path)
21
21
  sandbox.store_local_path(name, podspec.dirname, is_absolute)
22
+ sandbox.remove_checkout_source(name)
22
23
  end
23
24
  end
24
25
 
@@ -1,5 +1,5 @@
1
1
  module Pod
2
2
  # The version of the cocoapods command line tool.
3
3
  #
4
- VERSION = '0.36.0.beta.2' unless defined? Pod::VERSION
4
+ VERSION = '0.36.0.rc.1' unless defined? Pod::VERSION
5
5
  end
@@ -76,7 +76,7 @@ module Pod
76
76
  unless resources.empty?
77
77
  script += %(if [[ "$CONFIGURATION" == "#{config}" ]]; then\n)
78
78
  resources.each do |resource|
79
- script += " install_resource '#{resource}'\n"
79
+ script += %( install_resource "#{resource}"\n)
80
80
  end
81
81
  script += "fi\n"
82
82
  end
@@ -57,7 +57,7 @@ module Pod
57
57
  local source="${BUILT_PRODUCTS_DIR}/#{target_definition.label}/$1"
58
58
  local destination="${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
59
59
 
60
- if [ -L ${source} ]; then
60
+ if [ -L "${source}" ]; then
61
61
  echo "Symlinked..."
62
62
  source=$(readlink "${source}")
63
63
  fi
@@ -74,10 +74,10 @@ module Pod
74
74
  local basename
75
75
  basename=$(echo $1 | sed -E s/\\\\..+// && exit ${PIPESTATUS[0]})
76
76
  local swift_runtime_libs
77
- swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/$1/${basename}" | grep @rpath/libswift | sed -E s/@rpath\\\\/\\(.+dylib\\).*/\\\\1/g | uniq -u && exit ${PIPESTATUS[0]})
77
+ swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/$1/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\\\/\\(.+dylib\\).*/\\\\1/g | uniq -u && exit ${PIPESTATUS[0]})
78
78
  for lib in $swift_runtime_libs; do
79
- echo "rsync -av \\"${SWIFT_STDLIB_PATH}/${lib}\\" \\"${destination}\\""
80
- rsync -av "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
79
+ echo "rsync -auv \\"${SWIFT_STDLIB_PATH}/${lib}\\" \\"${destination}\\""
80
+ rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
81
81
  if [ "${CODE_SIGNING_REQUIRED}" == "YES" ]; then
82
82
  code_sign "${destination}/${lib}"
83
83
  fi
@@ -54,6 +54,7 @@ module Pod
54
54
  'PODS_ROOT' => '${SRCROOT}',
55
55
  'HEADER_SEARCH_PATHS' => XCConfigHelper.quote(search_paths),
56
56
  'GCC_PREPROCESSOR_DEFINITIONS' => '$(inherited) COCOAPODS=1',
57
+ 'SKIP_INSTALL' => 'YES',
57
58
  # 'USE_HEADERMAP' => 'NO'
58
59
  }
59
60
 
@@ -160,7 +160,7 @@ module Pod
160
160
  def self.add_language_specific_settings(target, xcconfig)
161
161
  if target.uses_swift?
162
162
  build_settings = {
163
- 'OTHER_SWIFT_FLAGS' => quote(['-D COCOAPODS']),
163
+ 'OTHER_SWIFT_FLAGS' => quote(%w(-D COCOAPODS)),
164
164
  }
165
165
  xcconfig.merge!(build_settings)
166
166
  end
@@ -90,6 +90,9 @@ module Pod
90
90
  resolve_dependencies
91
91
  download_dependencies
92
92
  determine_dependency_product_types
93
+ verify_no_duplicate_framework_names
94
+ verify_no_static_framework_transitive_dependencies
95
+ verify_framework_usage
93
96
  generate_pods_project
94
97
  integrate_user_project if config.integrate_targets?
95
98
  perform_post_install_actions
@@ -190,7 +193,7 @@ module Pod
190
193
  # Ensures that the white-listed build configurations are known to prevent
191
194
  # silent typos.
192
195
  #
193
- # @raise If a unknown user configuration is found.
196
+ # @raise If an unknown user configuration is found.
194
197
  #
195
198
  def validate_build_configurations
196
199
  whitelisted_configs = pod_targets.map do |target|
@@ -327,6 +330,62 @@ module Pod
327
330
  end
328
331
  end
329
332
 
333
+ def verify_no_duplicate_framework_names
334
+ aggregate_targets.each do |aggregate_target|
335
+ aggregate_target.user_build_configurations.keys.each do |config|
336
+ pod_targets = aggregate_target.pod_targets_for_build_configuration(config)
337
+ vendored_frameworks = pod_targets.flat_map(&:file_accessors).flat_map(&:vendored_frameworks)
338
+ frameworks = vendored_frameworks.map { |fw| fw.basename('.framework') }
339
+ frameworks += pod_targets.select { |pt| pt.should_build? && pt.requires_frameworks? }.map(&:product_module_name)
340
+
341
+ duplicates = frameworks.group_by { |f| f }.select { |_, v| v.size > 1 }.keys
342
+ unless duplicates.empty?
343
+ raise Informative, "The '#{aggregate_target.label}' target has " \
344
+ "frameworks with conflicting names: #{duplicates.to_sentence}."
345
+ end
346
+ end
347
+ end
348
+ end
349
+
350
+ def verify_no_static_framework_transitive_dependencies
351
+ aggregate_targets.each do |aggregate_target|
352
+ next unless aggregate_target.requires_frameworks?
353
+
354
+ aggregate_target.user_build_configurations.keys.each do |config|
355
+ pod_targets = aggregate_target.pod_targets_for_build_configuration(config)
356
+
357
+ dependencies = pod_targets.flat_map(&:dependencies)
358
+ dependended_upon_targets = pod_targets.select { |t| dependencies.include?(t.pod_name) }
359
+
360
+ static_libs = dependended_upon_targets.flat_map(&:file_accessors).flat_map do |fa|
361
+ static_frameworks = fa.vendored_frameworks.reject { |fw| `file #{fw + fw.basename('.framework')} 2>&1` =~ /dynamically linked/ }
362
+ fa.vendored_libraries + static_frameworks
363
+ end
364
+
365
+ unless static_libs.empty?
366
+ raise Informative, "The '#{aggregate_target.label}' target has " \
367
+ "transitive dependencies that include static binaries: (#{static_libs.to_sentence})"
368
+ end
369
+ end
370
+ end
371
+ end
372
+
373
+ def verify_framework_usage
374
+ aggregate_targets.each do |aggregate_target|
375
+ next if aggregate_target.requires_frameworks?
376
+
377
+ aggregate_target.user_build_configurations.keys.each do |config|
378
+ pod_targets = aggregate_target.pod_targets_for_build_configuration(config)
379
+
380
+ if pod_targets.any?(&:uses_swift?)
381
+ raise Informative, 'Pods written in Swift can only be integrated as frameworks; this ' \
382
+ 'feature is still in beta. Add `use_frameworks!` to your Podfile or target to opt ' \
383
+ 'into using it.'
384
+ end
385
+ end
386
+ end
387
+ end
388
+
330
389
  # Performs any post-installation actions
331
390
  #
332
391
  # @return [void]
@@ -467,10 +526,12 @@ module Pod
467
526
  def set_target_dependencies
468
527
  frameworks_group = pods_project.frameworks_group
469
528
  aggregate_targets.each do |aggregate_target|
470
- is_app_extension = aggregate_target.user_targets.map(&:symbol_type).include?(:app_extension)
471
- configure_app_extension_api_only_for_target(aggregate_target) if is_app_extension
529
+ is_app_extension = !(aggregate_target.user_targets.map(&:symbol_type) &
530
+ [:app_extension, :watch_extension]).empty?
472
531
 
473
532
  aggregate_target.pod_targets.each do |pod_target|
533
+ configure_app_extension_api_only_for_target(aggregate_target) if is_app_extension
534
+
474
535
  unless pod_target.should_build?
475
536
  pod_target.resource_bundle_targets.each do |resource_bundle_target|
476
537
  aggregate_target.native_target.add_dependency(resource_bundle_target)
@@ -33,8 +33,8 @@ module Pod
33
33
  end
34
34
 
35
35
  pods_to_update = pods_to_update.flat_map do |u|
36
- root_name = Specification.root_name(u)
37
- dependency_graph.vertices.keys.select { |n| Specification.root_name(n) == root_name }
36
+ root_name = Specification.root_name(u).downcase
37
+ dependency_graph.vertices.keys.select { |n| Specification.root_name(n).downcase == root_name }
38
38
  end
39
39
 
40
40
  pods_to_update.each do |u|
@@ -52,6 +52,14 @@ module Pod
52
52
  def migrate_to_0_36(sandbox)
53
53
  UI.message('Migrating to CocoaPods 0.36') do
54
54
  move(sandbox.root + 'Headers/Build', sandbox.root + 'Headers/Private')
55
+
56
+ sandbox.specifications_root.children.each do |child|
57
+ next unless child.basename.to_s =~ /\.podspec$/
58
+ spec = Specification.from_file(child)
59
+ child.delete
60
+ child = Pathname("#{child}.json")
61
+ File.open(child, 'w') { |f| f.write spec.to_pretty_json }
62
+ end
55
63
  end
56
64
  end
57
65
 
@@ -41,6 +41,7 @@ module Pod
41
41
  'OTHER_LDFLAGS' => '',
42
42
  'OTHER_LIBTOOLFLAGS' => '',
43
43
  'PODS_ROOT' => '$(SRCROOT)',
44
+ 'SKIP_INSTALL' => 'YES',
44
45
  }
45
46
  super.merge(settings)
46
47
  end
@@ -118,7 +119,7 @@ module Pod
118
119
  target.user_build_configurations.keys.each do |config|
119
120
  file_accessors = library_targets.select { |t| t.include_in_build_config?(config) }.flat_map(&:file_accessors)
120
121
  resource_paths = file_accessors.flat_map { |accessor| accessor.resources.flat_map { |res| res.relative_path_from(project.path.dirname) } }
121
- resource_bundles = file_accessors.flat_map { |accessor| accessor.resource_bundles.keys.map { |name| "${BUILT_PRODUCTS_DIR}/#{name}.bundle" } }
122
+ resource_bundles = file_accessors.flat_map { |accessor| accessor.resource_bundles.keys.map { |name| "${BUILT_PRODUCTS_DIR}/#{name.shellescape}.bundle" } }
122
123
  resources_by_config[config] = resource_paths + resource_bundles
123
124
  resources_by_config[config] << bridge_support_file if bridge_support_file
124
125
  end
@@ -94,7 +94,7 @@ module Pod
94
94
  end
95
95
 
96
96
  else
97
- UI.notice "From now on use `#{workspace_path.basename}`."
97
+ UI.notice "Please close any current Xcode sessions and use `#{workspace_path.basename}` for this project from now on."
98
98
  workspace = Xcodeproj::Workspace.new(*file_references)
99
99
  workspace.save_as(workspace_path)
100
100
  end
@@ -17,6 +17,7 @@ module Pod
17
17
  @refs_by_absolute_path = {}
18
18
  @pods = new_group('Pods')
19
19
  @development_pods = new_group('Development Pods')
20
+ self.symroot = LEGACY_BUILD_ROOT
20
21
  end
21
22
 
22
23
  # @return [PBXGroup] The group for the support files of the aggregate
@@ -34,6 +35,25 @@ module Pod
34
35
 
35
36
  public
36
37
 
38
+ # @!group Legacy Xcode build root
39
+ #-------------------------------------------------------------------------#
40
+
41
+ LEGACY_BUILD_ROOT = '${SRCROOT}/../build'
42
+
43
+ # @param [String] symroot
44
+ # The build root that is used when Xcode is configured to not use the
45
+ # workspace’s build root. Defaults to `${SRCROOT}/../build`.
46
+ #
47
+ # @return [void]
48
+ #
49
+ def symroot=(symroot)
50
+ root_object.build_configuration_list.build_configurations.each do |config|
51
+ config.build_settings['SYMROOT'] = symroot
52
+ end
53
+ end
54
+
55
+ public
56
+
37
57
  # @!group Pod Groups
38
58
  #-------------------------------------------------------------------------#
39
59
 
@@ -354,6 +354,18 @@ module Pod
354
354
  checkout_sources[root_name] = source
355
355
  end
356
356
 
357
+ # Removes the checkout source of a Pod.
358
+ #
359
+ # @param [String] name
360
+ # The name of the Pod.
361
+ #
362
+ # @return [void]
363
+ #
364
+ def remove_checkout_source(name)
365
+ root_name = Specification.root_name(name)
366
+ checkout_sources.delete(root_name)
367
+ end
368
+
357
369
  # @return [Hash{String=>Hash}] The options necessary to recreate the exact
358
370
  # checkout of a given Pod grouped by its name.
359
371
  #
@@ -12,7 +12,7 @@ module Pod
12
12
  GLOB_PATTERNS = {
13
13
  :readme => 'readme{*,.*}'.freeze,
14
14
  :license => 'licen{c,s}e{*,.*}'.freeze,
15
- :source_files => '*.{h,hpp,hh,m,mm,c,cpp,swift}'.freeze,
15
+ :source_files => '*.{h,hpp,tpp,hh,m,mm,c,cpp,swift}'.freeze,
16
16
  :public_header_files => "*{#{HEADER_EXTENSIONS.join(',')}}".freeze,
17
17
  }.freeze
18
18
 
@@ -57,6 +57,20 @@ module Pod
57
57
  source
58
58
  end
59
59
 
60
+ # Returns the source whose {Source#name} or {Source#url} is equal to the
61
+ # given `name_or_url`.
62
+ #
63
+ # @return [Source] The source whose {Source#name} or {Source#url} is equal to the
64
+ # given `name_or_url`.
65
+ #
66
+ # @param [String] name_or_url
67
+ # The name or the URL of the source.
68
+ #
69
+ def source_with_name_or_url(name_or_url)
70
+ all.find { |s| s.name == name_or_url } ||
71
+ find_or_create_source_with_url(name_or_url)
72
+ end
73
+
60
74
  # @return [Array<Source>] The list of all the sources known to this
61
75
  # installation of CocoaPods.
62
76
  #
@@ -91,13 +91,8 @@ module Pod
91
91
  # @return [Boolean] whether the generated target needs to be implemented
92
92
  # as a framework
93
93
  #
94
- # @note This applies either if Swift was used by the host, which was checked
95
- # eagerly by the analyzer before, or in the given target or its
96
- # dependents, which can only be checked after the specs were been
97
- # fetched.
98
- #
99
94
  def requires_frameworks?
100
- host_requires_frameworks? || uses_swift?
95
+ host_requires_frameworks? || false
101
96
  end
102
97
 
103
98
  #-------------------------------------------------------------------------#
@@ -23,7 +23,7 @@ module Pod
23
23
  # the Source URLs to use in creating a {Podfile}.
24
24
  #
25
25
  def initialize(spec_or_path, source_urls)
26
- @source_urls = source_urls
26
+ @source_urls = source_urls.map { |url| SourcesManager.source_with_name_or_url(url) }.map(&:url)
27
27
  @linter = Specification::Linter.new(spec_or_path)
28
28
  end
29
29
 
@@ -183,7 +183,7 @@ module Pod
183
183
  # @return [Pathname] the temporary directory used by the linter.
184
184
  #
185
185
  def validation_dir
186
- Pathname.new(File.join(Pathname.new('/tmp').realpath, 'CocoaPods/Lint'))
186
+ Pathname(Dir.tmpdir) + 'CocoaPods/Lint'
187
187
  end
188
188
 
189
189
  #-------------------------------------------------------------------------#
@@ -310,6 +310,11 @@ module Pod
310
310
  installer.install!
311
311
 
312
312
  file_accessors = installer.aggregate_targets.map do |target|
313
+ if target.pod_targets.any?(&:uses_swift?) && consumer.platform_name == :ios &&
314
+ (deployment_target.nil? || Version.new(deployment_target).major < 8)
315
+ error('swift', 'Swift support uses dynamic frameworks and is therefore only supported on iOS > 8.')
316
+ end
317
+
313
318
  target.pod_targets.map(&:file_accessors)
314
319
  end.flatten
315
320
 
@@ -473,14 +478,14 @@ module Pod
473
478
  # @note The generated podfile takes into account whether the linter is
474
479
  # in local mode.
475
480
  #
476
- def podfile_from_spec(platform_name, deployment_target, use_frameworks = nil)
481
+ def podfile_from_spec(platform_name, deployment_target, use_frameworks = true)
477
482
  name = subspec_name ? subspec_name : spec.name
478
483
  podspec = file.realpath
479
484
  local = local?
480
485
  urls = source_urls
481
486
  podfile = Pod::Podfile.new do
482
487
  urls.each { |u| source(u) }
483
- use_frameworks!(use_frameworks) unless use_frameworks.nil?
488
+ use_frameworks!(use_frameworks)
484
489
  platform(platform_name, deployment_target)
485
490
  if local
486
491
  pod name, :path => podspec.dirname.to_s
@@ -504,13 +509,13 @@ module Pod
504
509
  def parse_xcodebuild_output(output)
505
510
  lines = output.split("\n")
506
511
  selected_lines = lines.select do |l|
507
- l.include?('error: ') &&
512
+ l.include?('error: ') && (l !~ /frameworks only run on iOS 8/) &&
508
513
  (l !~ /errors? generated\./) && (l !~ /error: \(null\)/) ||
509
514
  l.include?('warning: ') && (l !~ /warnings? generated\./) ||
510
515
  l.include?('note: ') && (l !~ /expanded from macro/)
511
516
  end
512
517
  selected_lines.map do |l|
513
- new = l.gsub(%r{/tmp/CocoaPods/Lint/Pods/}, '')
518
+ new = l.gsub(%r{#{validation_dir}/Pods/}, '')
514
519
  new.gsub!(/^ */, ' ')
515
520
  end
516
521
  end
@@ -519,11 +524,12 @@ module Pod
519
524
  # returns its output (both STDOUT and STDERR).
520
525
  #
521
526
  def xcodebuild
522
- UI.puts 'xcodebuild clean build -target Pods' if config.verbose?
523
- output = `xcodebuild clean build -target Pods 2>&1`
527
+ command = 'xcodebuild clean build -target Pods CODE_SIGN_IDENTITY=-'
528
+ command << ' -sdk iphonesimulator' if consumer.platform_name == :ios
529
+ output, status = _xcodebuild "#{command} 2>&1"
524
530
 
525
- unless $?.success?
526
- message = 'Returned a unsuccessful exit code.'
531
+ unless status.success?
532
+ message = 'Returned an unsuccessful exit code.'
527
533
  message += ' You can use `--verbose` for more information.' unless config.verbose?
528
534
  error('xcodebuild', message)
529
535
  end
@@ -531,6 +537,17 @@ module Pod
531
537
  output
532
538
  end
533
539
 
540
+ # Executes the given command in the current working directory.
541
+ #
542
+ # @return [(String, Status)] The output of the given command and its
543
+ # resulting status.
544
+ #
545
+ def _xcodebuild(command)
546
+ UI.puts command if config.verbose
547
+ output = `#{command}`
548
+ [output, $?]
549
+ end
550
+
534
551
  #-------------------------------------------------------------------------#
535
552
  end
536
553
  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.36.0.beta.2
4
+ version: 0.36.0.rc.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-01-28 00:00:00.000000000 Z
12
+ date: 2015-02-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cocoapods-core
@@ -17,222 +17,222 @@ dependencies:
17
17
  requirements:
18
18
  - - '='
19
19
  - !ruby/object:Gem::Version
20
- version: 0.36.0.beta.2
20
+ version: 0.36.0.rc.1
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.36.0.beta.2
27
+ version: 0.36.0.rc.1
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: claide
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ~>
32
+ - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: 0.8.0
34
+ version: 0.8.1
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ~>
39
+ - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: 0.8.0
41
+ version: 0.8.1
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: xcodeproj
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ~>
46
+ - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: 0.21.2
48
+ version: 0.22.0
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ~>
53
+ - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: 0.21.2
55
+ version: 0.22.0
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: cocoapods-downloader
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ~>
60
+ - - "~>"
61
61
  - !ruby/object:Gem::Version
62
62
  version: 0.8.1
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
69
  version: 0.8.1
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: cocoapods-plugins
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - ~>
74
+ - - "~>"
75
75
  - !ruby/object:Gem::Version
76
- version: 0.4.0
76
+ version: 0.4.1
77
77
  type: :runtime
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - ~>
81
+ - - "~>"
82
82
  - !ruby/object:Gem::Version
83
- version: 0.4.0
83
+ version: 0.4.1
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: cocoapods-try
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - ~>
88
+ - - "~>"
89
89
  - !ruby/object:Gem::Version
90
90
  version: 0.4.3
91
91
  type: :runtime
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - ~>
95
+ - - "~>"
96
96
  - !ruby/object:Gem::Version
97
97
  version: 0.4.3
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: cocoapods-trunk
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - ~>
102
+ - - "~>"
103
103
  - !ruby/object:Gem::Version
104
- version: 0.5.0
104
+ version: 0.5.1
105
105
  type: :runtime
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
- - - ~>
109
+ - - "~>"
110
110
  - !ruby/object:Gem::Version
111
- version: 0.5.0
111
+ version: 0.5.1
112
112
  - !ruby/object:Gem::Dependency
113
113
  name: molinillo
114
114
  requirement: !ruby/object:Gem::Requirement
115
115
  requirements:
116
- - - ~>
116
+ - - "~>"
117
117
  - !ruby/object:Gem::Version
118
- version: 0.2.0
118
+ version: 0.2.1
119
119
  type: :runtime
120
120
  prerelease: false
121
121
  version_requirements: !ruby/object:Gem::Requirement
122
122
  requirements:
123
- - - ~>
123
+ - - "~>"
124
124
  - !ruby/object:Gem::Version
125
- version: 0.2.0
125
+ version: 0.2.1
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: colored
128
128
  requirement: !ruby/object:Gem::Requirement
129
129
  requirements:
130
- - - ~>
130
+ - - "~>"
131
131
  - !ruby/object:Gem::Version
132
132
  version: '1.2'
133
133
  type: :runtime
134
134
  prerelease: false
135
135
  version_requirements: !ruby/object:Gem::Requirement
136
136
  requirements:
137
- - - ~>
137
+ - - "~>"
138
138
  - !ruby/object:Gem::Version
139
139
  version: '1.2'
140
140
  - !ruby/object:Gem::Dependency
141
141
  name: escape
142
142
  requirement: !ruby/object:Gem::Requirement
143
143
  requirements:
144
- - - ~>
144
+ - - "~>"
145
145
  - !ruby/object:Gem::Version
146
146
  version: 0.0.4
147
147
  type: :runtime
148
148
  prerelease: false
149
149
  version_requirements: !ruby/object:Gem::Requirement
150
150
  requirements:
151
- - - ~>
151
+ - - "~>"
152
152
  - !ruby/object:Gem::Version
153
153
  version: 0.0.4
154
154
  - !ruby/object:Gem::Dependency
155
155
  name: open4
156
156
  requirement: !ruby/object:Gem::Requirement
157
157
  requirements:
158
- - - ~>
158
+ - - "~>"
159
159
  - !ruby/object:Gem::Version
160
160
  version: '1.3'
161
161
  type: :runtime
162
162
  prerelease: false
163
163
  version_requirements: !ruby/object:Gem::Requirement
164
164
  requirements:
165
- - - ~>
165
+ - - "~>"
166
166
  - !ruby/object:Gem::Version
167
167
  version: '1.3'
168
168
  - !ruby/object:Gem::Dependency
169
169
  name: activesupport
170
170
  requirement: !ruby/object:Gem::Requirement
171
171
  requirements:
172
- - - '>='
172
+ - - ">="
173
173
  - !ruby/object:Gem::Version
174
174
  version: 3.2.15
175
175
  type: :runtime
176
176
  prerelease: false
177
177
  version_requirements: !ruby/object:Gem::Requirement
178
178
  requirements:
179
- - - '>='
179
+ - - ">="
180
180
  - !ruby/object:Gem::Version
181
181
  version: 3.2.15
182
182
  - !ruby/object:Gem::Dependency
183
183
  name: nap
184
184
  requirement: !ruby/object:Gem::Requirement
185
185
  requirements:
186
- - - ~>
186
+ - - "~>"
187
187
  - !ruby/object:Gem::Version
188
188
  version: '0.8'
189
189
  type: :runtime
190
190
  prerelease: false
191
191
  version_requirements: !ruby/object:Gem::Requirement
192
192
  requirements:
193
- - - ~>
193
+ - - "~>"
194
194
  - !ruby/object:Gem::Version
195
195
  version: '0.8'
196
196
  - !ruby/object:Gem::Dependency
197
197
  name: bundler
198
198
  requirement: !ruby/object:Gem::Requirement
199
199
  requirements:
200
- - - ~>
200
+ - - "~>"
201
201
  - !ruby/object:Gem::Version
202
202
  version: '1.3'
203
203
  type: :development
204
204
  prerelease: false
205
205
  version_requirements: !ruby/object:Gem::Requirement
206
206
  requirements:
207
- - - ~>
207
+ - - "~>"
208
208
  - !ruby/object:Gem::Version
209
209
  version: '1.3'
210
210
  - !ruby/object:Gem::Dependency
211
211
  name: rake
212
212
  requirement: !ruby/object:Gem::Requirement
213
213
  requirements:
214
- - - '>='
214
+ - - ">="
215
215
  - !ruby/object:Gem::Version
216
216
  version: '0'
217
217
  type: :development
218
218
  prerelease: false
219
219
  version_requirements: !ruby/object:Gem::Requirement
220
220
  requirements:
221
- - - '>='
221
+ - - ">="
222
222
  - !ruby/object:Gem::Version
223
223
  version: '0'
224
224
  - !ruby/object:Gem::Dependency
225
225
  name: bacon
226
226
  requirement: !ruby/object:Gem::Requirement
227
227
  requirements:
228
- - - ~>
228
+ - - "~>"
229
229
  - !ruby/object:Gem::Version
230
230
  version: '1.1'
231
231
  type: :development
232
232
  prerelease: false
233
233
  version_requirements: !ruby/object:Gem::Requirement
234
234
  requirements:
235
- - - ~>
235
+ - - "~>"
236
236
  - !ruby/object:Gem::Version
237
237
  version: '1.1'
238
238
  description: |-
@@ -250,40 +250,46 @@ executables:
250
250
  extensions: []
251
251
  extra_rdoc_files: []
252
252
  files:
253
+ - CHANGELOG.md
254
+ - LICENSE
255
+ - README.md
256
+ - bin/pod
257
+ - bin/sandbox-pod
258
+ - lib/cocoapods.rb
259
+ - lib/cocoapods/command.rb
253
260
  - lib/cocoapods/command/init.rb
254
261
  - lib/cocoapods/command/inter_process_communication.rb
255
262
  - lib/cocoapods/command/lib.rb
256
263
  - lib/cocoapods/command/list.rb
257
264
  - lib/cocoapods/command/outdated.rb
258
265
  - lib/cocoapods/command/project.rb
266
+ - lib/cocoapods/command/repo.rb
259
267
  - lib/cocoapods/command/repo/add.rb
260
268
  - lib/cocoapods/command/repo/lint.rb
261
269
  - lib/cocoapods/command/repo/list.rb
262
270
  - lib/cocoapods/command/repo/push.rb
263
271
  - lib/cocoapods/command/repo/remove.rb
264
272
  - lib/cocoapods/command/repo/update.rb
265
- - lib/cocoapods/command/repo.rb
266
273
  - lib/cocoapods/command/search.rb
267
274
  - lib/cocoapods/command/setup.rb
275
+ - lib/cocoapods/command/spec.rb
268
276
  - lib/cocoapods/command/spec/cat.rb
269
277
  - lib/cocoapods/command/spec/create.rb
270
278
  - lib/cocoapods/command/spec/edit.rb
271
279
  - lib/cocoapods/command/spec/lint.rb
272
280
  - lib/cocoapods/command/spec/which.rb
273
- - lib/cocoapods/command/spec.rb
274
- - lib/cocoapods/command.rb
275
281
  - lib/cocoapods/config.rb
276
282
  - lib/cocoapods/downloader.rb
277
283
  - lib/cocoapods/executable.rb
284
+ - lib/cocoapods/external_sources.rb
278
285
  - lib/cocoapods/external_sources/abstract_external_source.rb
279
286
  - lib/cocoapods/external_sources/downloader_source.rb
280
287
  - lib/cocoapods/external_sources/path_source.rb
281
288
  - lib/cocoapods/external_sources/podspec_source.rb
282
- - lib/cocoapods/external_sources.rb
283
289
  - lib/cocoapods/gem_version.rb
290
+ - lib/cocoapods/generator/acknowledgements.rb
284
291
  - lib/cocoapods/generator/acknowledgements/markdown.rb
285
292
  - lib/cocoapods/generator/acknowledgements/plist.rb
286
- - lib/cocoapods/generator/acknowledgements.rb
287
293
  - lib/cocoapods/generator/bridge_support.rb
288
294
  - lib/cocoapods/generator/copy_resources_script.rb
289
295
  - lib/cocoapods/generator/dummy_source.rb
@@ -294,50 +300,44 @@ files:
294
300
  - lib/cocoapods/generator/prefix_header.rb
295
301
  - lib/cocoapods/generator/target_environment_header.rb
296
302
  - lib/cocoapods/generator/umbrella_header.rb
303
+ - lib/cocoapods/generator/xcconfig.rb
297
304
  - lib/cocoapods/generator/xcconfig/aggregate_xcconfig.rb
298
305
  - lib/cocoapods/generator/xcconfig/private_pod_xcconfig.rb
299
306
  - lib/cocoapods/generator/xcconfig/public_pod_xcconfig.rb
300
307
  - lib/cocoapods/generator/xcconfig/xcconfig_helper.rb
301
- - lib/cocoapods/generator/xcconfig.rb
302
308
  - lib/cocoapods/hooks/installer_representation.rb
303
309
  - lib/cocoapods/hooks/library_representation.rb
304
310
  - lib/cocoapods/hooks/pod_representation.rb
305
311
  - lib/cocoapods/hooks_manager.rb
312
+ - lib/cocoapods/installer.rb
313
+ - lib/cocoapods/installer/analyzer.rb
306
314
  - lib/cocoapods/installer/analyzer/locking_dependency_analyzer.rb
307
315
  - lib/cocoapods/installer/analyzer/sandbox_analyzer.rb
308
- - lib/cocoapods/installer/analyzer.rb
309
316
  - lib/cocoapods/installer/file_references_installer.rb
310
317
  - lib/cocoapods/installer/hooks_context.rb
311
318
  - lib/cocoapods/installer/migrator.rb
312
319
  - lib/cocoapods/installer/pod_source_installer.rb
320
+ - lib/cocoapods/installer/target_installer.rb
313
321
  - lib/cocoapods/installer/target_installer/aggregate_target_installer.rb
314
322
  - lib/cocoapods/installer/target_installer/pod_target_installer.rb
315
- - lib/cocoapods/installer/target_installer.rb
316
- - lib/cocoapods/installer/user_project_integrator/target_integrator/xcconfig_integrator.rb
317
- - lib/cocoapods/installer/user_project_integrator/target_integrator.rb
318
323
  - lib/cocoapods/installer/user_project_integrator.rb
319
- - lib/cocoapods/installer.rb
324
+ - lib/cocoapods/installer/user_project_integrator/target_integrator.rb
325
+ - lib/cocoapods/installer/user_project_integrator/target_integrator/xcconfig_integrator.rb
320
326
  - lib/cocoapods/open_uri.rb
321
327
  - lib/cocoapods/project.rb
322
- - lib/cocoapods/resolver/lazy_specification.rb
323
328
  - lib/cocoapods/resolver.rb
329
+ - lib/cocoapods/resolver/lazy_specification.rb
330
+ - lib/cocoapods/sandbox.rb
324
331
  - lib/cocoapods/sandbox/file_accessor.rb
325
332
  - lib/cocoapods/sandbox/headers_store.rb
326
333
  - lib/cocoapods/sandbox/path_list.rb
327
- - lib/cocoapods/sandbox.rb
328
334
  - lib/cocoapods/sources_manager.rb
335
+ - lib/cocoapods/target.rb
329
336
  - lib/cocoapods/target/aggregate_target.rb
330
337
  - lib/cocoapods/target/pod_target.rb
331
- - lib/cocoapods/target.rb
332
- - lib/cocoapods/user_interface/error_report.rb
333
338
  - lib/cocoapods/user_interface.rb
339
+ - lib/cocoapods/user_interface/error_report.rb
334
340
  - lib/cocoapods/validator.rb
335
- - lib/cocoapods.rb
336
- - bin/pod
337
- - bin/sandbox-pod
338
- - README.md
339
- - LICENSE
340
- - CHANGELOG.md
341
341
  homepage: https://github.com/CocoaPods/CocoaPods
342
342
  licenses:
343
343
  - MIT
@@ -348,19 +348,18 @@ require_paths:
348
348
  - lib
349
349
  required_ruby_version: !ruby/object:Gem::Requirement
350
350
  requirements:
351
- - - '>='
351
+ - - ">="
352
352
  - !ruby/object:Gem::Version
353
353
  version: 2.0.0
354
354
  required_rubygems_version: !ruby/object:Gem::Requirement
355
355
  requirements:
356
- - - '>='
356
+ - - ">="
357
357
  - !ruby/object:Gem::Version
358
358
  version: '0'
359
359
  requirements: []
360
360
  rubyforge_project:
361
- rubygems_version: 2.0.14
361
+ rubygems_version: 2.4.5
362
362
  signing_key:
363
363
  specification_version: 3
364
364
  summary: The Cocoa library package manager.
365
365
  test_files: []
366
- has_rdoc: