cocoapods 1.2.1.beta.1 → 1.2.1.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: eb9eda85e1b9046c779bb13ac2cd2b16d794ac5d
4
- data.tar.gz: 4aa4fbfc96bd441f9dc9b89e3f86438842e66b89
3
+ metadata.gz: 666655faba4b49391d62a9f10e7f3b4a427d925b
4
+ data.tar.gz: ac8cc0d14bb90c79d42a2d4f80ae301f65d69897
5
5
  SHA512:
6
- metadata.gz: 2cbe8cde671b565a37d727b7df2d58092d8d91769f5150e7f27653d837d5a3ae3392ac37d94ebfa671dfdf6f4d7f374a8c6e78a008148a99e30e3b4d40d77ad7
7
- data.tar.gz: 57abe56a456b33abfe8a9eddb473c7d6d9490db167bdee833d391e0c0c5dd758444abcab93403e44d9c12e23fe3758f64099ed6f1a1ff866997c560448dd210f
6
+ metadata.gz: b210990c83e1c54887ed8ac795923e936c8dc5cbe94015f9f4d53671705eb19075074c19cbfbc7d13d95efeba3eee8cb7329162da4016107865f742345711171
7
+ data.tar.gz: 12256a5266085c5d411f4205420dd443438989a280c6a7d0d903625f8d2240c38d7bfa6370cb2ce219195eab1e89318a02d10b995e4332860cc137aa93b9db78
@@ -4,6 +4,52 @@ 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
+ ## 1.2.1.rc.1 (2017-04-05)
8
+
9
+ ##### Enhancements
10
+
11
+ * None.
12
+
13
+ ##### Bug Fixes
14
+
15
+ * Fix generating `LD_RUNPATH_SEARCH_PATHS` without `use_frameworks!` but consuming a vendored dynamic artifact.
16
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
17
+ [#6596](https://github.com/CocoaPods/CocoaPods/issues/6596)
18
+
19
+ * Fix building with static lib subprojects (previously only supported framework subprojects).
20
+ [Ben Asher](https://github.com/benasher44)
21
+ [#5830](https://github.com/CocoaPods/CocoaPods/issues/5830)
22
+ [#6306](https://github.com/CocoaPods/CocoaPods/issues/6306)
23
+
24
+ * Fix regression from #6457 to ensure a correct error message is given when a spec is not found.
25
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
26
+ [#6457](https://github.com/CocoaPods/CocoaPods/issues/6457)
27
+
28
+ * Provide a better error message if a podspec is found but cannot be parsed.
29
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
30
+ [#6457](https://github.com/CocoaPods/CocoaPods/issues/6457)
31
+
32
+ * Only share pod target xcscheme if present during validation.
33
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
34
+ [#6558](https://github.com/CocoaPods/CocoaPods/pull/6558)
35
+
36
+ * Properly compile storyboard for watch device family.
37
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
38
+ [#6516](https://github.com/CocoaPods/CocoaPods/issues/6516)
39
+
40
+ * Support git progress for `pod repo update` and `pod install --repo-update`
41
+ [Alfredo Delli Bovi](https://github.com/adellibovi)
42
+ [#6525](https://github.com/CocoaPods/CocoaPods/issues/6525)
43
+
44
+ * Return new exit code (31) when spec not found
45
+ [Alfredo Delli Bovi](https://github.com/adellibovi)
46
+ [#6033](https://github.com/CocoaPods/CocoaPods/issues/6033)
47
+
48
+ * Provide better error message when spec not found
49
+ [Alfredo Delli Bovi](https://github.com/adellibovi)
50
+ [#6033](https://github.com/CocoaPods/CocoaPods/issues/6033)
51
+
52
+
7
53
  ## 1.2.1.beta.1 (2017-03-08)
8
54
 
9
55
  ##### Enhancements
@@ -12,6 +58,10 @@ To install release candidates run `[sudo] gem install cocoapods --pre`
12
58
  [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
13
59
  [#6534](https://github.com/CocoaPods/CocoaPods/issues/6534)
14
60
 
61
+ * Provide installation option to disable multiple pod sources warnings.
62
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
63
+ [#6497](https://github.com/CocoaPods/CocoaPods/pull/6497)
64
+
15
65
  * Use the colored2 gem instead of colored.
16
66
  [Orta Therox](https://github.com/orta)
17
67
  [xcodeproj#463](https://github.com/CocoaPods/Xcodeproj/pull/463)
@@ -20,8 +70,16 @@ To install release candidates run `[sudo] gem install cocoapods --pre`
20
70
  [Ken Wigginton](https://github.com/hailstorm350)
21
71
  [#6434](https://github.com/CocoaPods/CocoaPods/pull/6434)
22
72
 
73
+ * Created `NOMENCLATURE.md` to keep a glossary of the most common terms used in cocoapods.
74
+ [Rob Contreras](https://github.com/robcontreras)
75
+ [#2379](https://github.com/CocoaPods/CocoaPods/pull/2379)
76
+
23
77
  ##### Bug Fixes
24
78
 
79
+ * Ensure Core Data models get added to the compile sources phase for header generation.
80
+ [Ben Asher](https://github.com/benasher44)
81
+ [#6259](https://github.com/CocoaPods/CocoaPods/issues/6259)
82
+
25
83
  * Do not crash when attempting to install pod with no supported targets.
26
84
  [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
27
85
  [#6465](https://github.com/CocoaPods/CocoaPods/issues/6465)
@@ -21,6 +21,10 @@ module Pod
21
21
  This will configure the project to reference the Pods static library,
22
22
  add a build configuration file, and add a post build script to copy
23
23
  Pod resources.
24
+
25
+ This may return one of several error codes if it encounters problems.
26
+ * `1` Generic error code
27
+ * `31` Spec not found (i.e out-of-date source repos, mistyped Pod name etc...)
24
28
  DESC
25
29
 
26
30
  def self.options
@@ -111,7 +111,13 @@ module Pod
111
111
  title = "Pre-downloading: `#{name}` #{description}"
112
112
  UI.titled_section(title, :verbose_prefix => '-> ') do
113
113
  target = sandbox.pod_dir(name)
114
- download_result = Downloader.download(download_request, target, :can_cache => can_cache)
114
+ begin
115
+ download_result = Downloader.download(download_request, target, :can_cache => can_cache)
116
+ rescue Pod::DSLError => e
117
+ raise Informative, "Failed to load '#{name}' podspec: #{e.message}"
118
+ rescue => _
119
+ raise Informative, "Failed to download '#{name}'."
120
+ end
115
121
  spec = download_result.spec
116
122
 
117
123
  raise Informative, "Unable to find a specification for '#{name}'." unless spec
@@ -147,17 +153,21 @@ module Pod
147
153
  # @return [void]
148
154
  #
149
155
  def store_podspec(sandbox, spec, json = false)
150
- spec = case spec
151
- when Pathname
152
- Specification.from_file(spec)
153
- when String
154
- path = "#{name}.podspec"
155
- path << '.json' if json
156
- Specification.from_string(spec, path)
157
- when Specification
158
- spec.dup
159
- else
160
- raise "Unknown spec type: #{spec}"
156
+ begin
157
+ spec = case spec
158
+ when Pathname
159
+ Specification.from_file(spec)
160
+ when String
161
+ path = "#{name}.podspec"
162
+ path << '.json' if json
163
+ Specification.from_string(spec, path)
164
+ when Specification
165
+ spec.dup
166
+ else
167
+ raise "Unknown spec type: #{spec}"
168
+ end
169
+ rescue Pod::DSLError => e
170
+ raise Informative, "Failed to load '#{name}' podspec: #{e.message}"
161
171
  end
162
172
  spec.defined_in_file = nil
163
173
  validate_podspec(spec)
@@ -1,5 +1,5 @@
1
1
  module Pod
2
2
  # The version of the CocoaPods command line tool.
3
3
  #
4
- VERSION = '1.2.1.beta.1'.freeze unless defined? Pod::VERSION
4
+ VERSION = '1.2.1.rc.1'.freeze unless defined? Pod::VERSION
5
5
  end
@@ -117,6 +117,9 @@ case "${TARGETED_DEVICE_FAMILY}" in
117
117
  3)
118
118
  TARGET_DEVICE_ARGS="--target-device tv"
119
119
  ;;
120
+ 4)
121
+ TARGET_DEVICE_ARGS="--target-device watch"
122
+ ;;
120
123
  *)
121
124
  TARGET_DEVICE_ARGS="--target-device mac"
122
125
  ;;
@@ -80,7 +80,11 @@ module Pod
80
80
  # See https://github.com/CocoaPods/CocoaPods/issues/1216
81
81
  @xcconfig.attributes.delete('USE_HEADERMAP')
82
82
 
83
- generate_ld_runpath_search_paths if target.requires_frameworks?
83
+ # If any of the aggregate target dependencies bring in any vendored dynamic artifacts we should ensure to
84
+ # update the runpath search paths.
85
+ vendored_dynamic_artifacts = pod_targets.flat_map(&:file_accessors).flat_map(&:vendored_dynamic_artifacts)
86
+
87
+ generate_ld_runpath_search_paths if target.requires_frameworks? || vendored_dynamic_artifacts.count > 0
84
88
 
85
89
  @xcconfig
86
90
  end
@@ -156,6 +156,11 @@ module Pod
156
156
 
157
157
  private
158
158
 
159
+ # @return [Bool] Whether the analysis has updated sources repositories.
160
+ #
161
+ attr_accessor :specs_updated
162
+ alias_method :specs_updated?, :specs_updated
163
+
159
164
  def validate_podfile!
160
165
  validator = Installer::PodfileValidator.new(podfile)
161
166
  validator.validate
@@ -217,11 +222,12 @@ module Pod
217
222
  def update_repositories
218
223
  sources.each do |source|
219
224
  if source.git?
220
- config.sources_manager.update(source.name)
225
+ config.sources_manager.update(source.name, true)
221
226
  else
222
227
  UI.message "Skipping `#{source.name}` update because the repository is not a git source repository."
223
228
  end
224
229
  end
230
+ @specs_updated = true
225
231
  end
226
232
 
227
233
  private
@@ -236,11 +242,17 @@ module Pod
236
242
  # @param [Array<AggregateTarget>] embedded_aggregate_targets the aggregate targets
237
243
  # representing the embedded targets to be integrated
238
244
  #
239
- def copy_embedded_target_pod_targets_to_host(aggregate_target, embedded_aggregate_targets)
245
+ # @param [Boolean] libraries_only if true, only library-type embedded
246
+ # targets are considered, otherwise, all other types are have
247
+ # their pods copied to their host targets as well (extensions, etc.)
248
+ #
249
+ def copy_embedded_target_pod_targets_to_host(aggregate_target, embedded_aggregate_targets, libraries_only)
240
250
  return if aggregate_target.requires_host_target?
241
251
  pod_target_names = Set.new(aggregate_target.pod_targets.map(&:name))
242
252
  aggregate_user_target_uuids = Set.new(aggregate_target.user_targets.map(&:uuid))
243
253
  embedded_aggregate_targets.each do |embedded_aggregate_target|
254
+ # Skip non libraries in library-only mode
255
+ next if libraries_only && !embedded_aggregate_target.library?
244
256
  next unless embedded_aggregate_target.user_targets.any? do |embedded_user_target|
245
257
  # You have to ask the host target's project for the host targets of
246
258
  # the embedded target, as opposed to asking user_project for the
@@ -351,11 +363,21 @@ module Pod
351
363
  generate_target(target_definition, pod_targets)
352
364
  end
353
365
  if installation_options.integrate_targets?
354
- # Copy embedded target pods that cannot have their pods embedded as frameworks to their host targets
355
- embedded_targets = aggregate_targets.select(&:requires_host_target?).select(&:requires_frameworks?)
366
+ # Copy embedded target pods that cannot have their pods embedded as frameworks to
367
+ # their host targets, and ensure we properly link library pods to their host targets
368
+ embedded_targets = aggregate_targets.select(&:requires_host_target?)
356
369
  analyze_host_targets_in_podfile(aggregate_targets, embedded_targets)
370
+
371
+ use_frameworks_embedded_targets = embedded_targets.select(&:requires_frameworks?)
372
+ non_use_frameworks_embedded_targets = embedded_targets.reject(&:requires_frameworks?)
357
373
  aggregate_targets.each do |target|
358
- copy_embedded_target_pod_targets_to_host(target, embedded_targets)
374
+ # For targets that require frameworks, we always have to copy their pods to their
375
+ # host targets because those frameworks will all be loaded from the host target's bundle
376
+ copy_embedded_target_pod_targets_to_host(target, use_frameworks_embedded_targets, false)
377
+
378
+ # For targets that don't require frameworks, we only have to consider library-type
379
+ # targets because their host targets will still need to link their pods
380
+ copy_embedded_target_pod_targets_to_host(target, non_use_frameworks_embedded_targets, true)
359
381
  end
360
382
  end
361
383
  aggregate_targets.each do |target|
@@ -716,6 +738,7 @@ module Pod
716
738
  specs_by_target = nil
717
739
  UI.section "Resolving dependencies of #{UI.path(podfile.defined_in_file) || 'Podfile'}" do
718
740
  resolver = Resolver.new(sandbox, podfile, locked_dependencies, sources)
741
+ resolver.specs_updated = specs_updated?
719
742
  specs_by_target = resolver.resolve
720
743
  specs_by_target.values.flatten(1).each(&:validate_cocoapods_version)
721
744
  end
@@ -106,6 +106,7 @@ module Pod
106
106
  option :deterministic_uuids, true
107
107
  option :integrate_targets, true
108
108
  option :lock_pod_sources, true
109
+ option :warn_for_multiple_pod_sources, true
109
110
  option :share_schemes_for_development_pods, false
110
111
 
111
112
  module Mixin
@@ -69,13 +69,26 @@ module Pod
69
69
  # added by their parent directory. This will also include references to the parent [PBXVariantGroup]
70
70
  # for all resources underneath it.
71
71
  #
72
- # @param Array[<Pathname>] resource_file_references
72
+ # @param [Array<Pathname>] resource_file_references
73
73
  # The array of all resource file references to filter.
74
-
75
- # @return [Array<Pathname>] The filtered resource file references.
74
+ #
75
+ # @yield_param [Array<PBXFileReference>} The filtered resource file references to be installed
76
+ # in the copy resources phase.
77
+ #
78
+ # @yield_param [Array<PBXFileReference>} The filtered resource file references to be installed
79
+ # in the compile sources phase.
80
+ #
81
+ # @note Core Data model directories (.xcdatamodeld) used to be added to the
82
+ # `Copy Resources` build phase like all other resources, since they would
83
+ # compile correctly in either the resources or compile phase. In recent
84
+ # versions of xcode, there's an exception for data models that generate
85
+ # headers. These need to be added to the compile sources phase of a real
86
+ # target for the headers to be built in time for code in the target to
87
+ # use them. These kinds of models generally break when added to resource
88
+ # bundles.
76
89
  #
77
90
  def filter_resource_file_references(resource_file_references)
78
- resource_file_references.map do |resource_file_reference|
91
+ file_references = resource_file_references.map do |resource_file_reference|
79
92
  ref = project.reference_for_path(resource_file_reference)
80
93
 
81
94
  # Some nested files are not directly present in the Xcode project, such as the contents
@@ -87,7 +100,11 @@ module Pod
87
100
  next ref.parent if ref.parent.is_a?(Xcodeproj::Project::Object::PBXVariantGroup)
88
101
 
89
102
  ref
90
- end
103
+ end.compact.uniq
104
+ compile_phase_matcher = lambda { |ref| !(ref.path =~ /.*\.xcdatamodeld/i).nil? }
105
+ resources_phase_refs = file_references.reject(&compile_phase_matcher)
106
+ compile_phase_refs = file_references.select(&compile_phase_matcher)
107
+ yield resources_phase_refs, compile_phase_refs
91
108
  end
92
109
 
93
110
  #-----------------------------------------------------------------------#
@@ -136,9 +153,10 @@ module Pod
136
153
 
137
154
  next unless target.requires_frameworks?
138
155
 
139
- resource_refs = filter_resource_file_references(file_accessor.resources.flatten).compact
140
-
141
- native_target.add_resources(resource_refs)
156
+ filter_resource_file_references(file_accessor.resources.flatten) do |resource_phase_refs, compile_phase_refs|
157
+ native_target.add_file_references(compile_phase_refs, nil)
158
+ native_target.add_resources(resource_phase_refs)
159
+ end
142
160
  end
143
161
  end
144
162
 
@@ -147,19 +165,11 @@ module Pod
147
165
  # @note The source files are grouped by Pod and in turn by subspec
148
166
  # (recursively) in the resources group.
149
167
  #
150
- # @note Core Data model directories (.xcdatamodeld) are currently added to the
151
- # `Copy Resources` build phase like all other resources. The Xcode UI adds
152
- # these to the `Compile Sources` build phase, but they will compile
153
- # correctly either way.
154
- #
155
168
  # @return [void]
156
169
  #
157
170
  def add_resources_bundle_targets
158
171
  target.file_accessors.each do |file_accessor|
159
172
  file_accessor.resource_bundles.each do |bundle_name, paths|
160
- file_references = filter_resource_file_references(paths)
161
- file_references = file_references.uniq.compact
162
-
163
173
  label = target.resources_bundle_target_label(bundle_name)
164
174
  bundle_target = project.new_resources_bundle(label, file_accessor.spec_consumer.platform_name)
165
175
  bundle_target.product_reference.tap do |bundle_product|
@@ -167,7 +177,12 @@ module Pod
167
177
  bundle_product.name = bundle_file_name
168
178
  bundle_product.path = bundle_file_name
169
179
  end
170
- bundle_target.add_resources(file_references)
180
+
181
+ filter_resource_file_references(paths) do |resource_phase_refs, compile_phase_refs|
182
+ # Resource bundles are only meant to have resources, so install everything
183
+ # into the resources phase. See note in filter_resource_file_references.
184
+ bundle_target.add_resources(resource_phase_refs + compile_phase_refs)
185
+ end
171
186
 
172
187
  target.user_build_configurations.each do |bc_name, type|
173
188
  bundle_target.add_build_configuration(bc_name, type)
@@ -2,10 +2,20 @@ require 'molinillo'
2
2
  require 'cocoapods/resolver/lazy_specification'
3
3
 
4
4
  module Pod
5
+ class NoSpecFoundError < Informative
6
+ def exit_status
7
+ @exit_status ||= 31
8
+ end
9
+ end
10
+
5
11
  # The resolver is responsible of generating a list of specifications grouped
6
12
  # by target for a given Podfile.
7
13
  #
8
14
  class Resolver
15
+ include Pod::Installer::InstallationOptions::Mixin
16
+
17
+ delegate_installation_options { podfile }
18
+
9
19
  # @return [Sandbox] the Sandbox used by the resolver to find external
10
20
  # dependencies.
11
21
  #
@@ -25,6 +35,11 @@ module Pod
25
35
  #
26
36
  attr_accessor :sources
27
37
 
38
+ # @return [Bool] Whether the resolver has sources repositories up-to-date.
39
+ #
40
+ attr_accessor :specs_updated
41
+ alias specs_updated? specs_updated
42
+
28
43
  # Init a new Resolver
29
44
  #
30
45
  # @param [Sandbox] sandbox @see sandbox
@@ -288,7 +303,7 @@ module Pod
288
303
  def specifications_for_dependency(dependency, additional_requirements = [])
289
304
  requirement = Requirement.new(dependency.requirement.as_list + additional_requirements)
290
305
  find_cached_set(dependency).
291
- all_specifications.
306
+ all_specifications(installation_options.warn_for_multiple_pod_sources).
292
307
  select { |s| requirement.satisfied_by? s.version }.
293
308
  map { |s| s.subspec_by_name(dependency.name, false) }.
294
309
  compact.
@@ -385,6 +400,7 @@ module Pod
385
400
  #
386
401
  def handle_resolver_error(error)
387
402
  message = error.message.dup
403
+ type = Informative
388
404
  case error
389
405
  when Molinillo::VersionConflict
390
406
  error.conflicts.each do |name, conflict|
@@ -423,12 +439,15 @@ module Pod
423
439
  found_conflicted_specs = conflicts.reject { |c| search_for(c).empty? }
424
440
  if found_conflicted_specs.empty?
425
441
  # There are no existing specification inside any of the spec repos with given requirements.
442
+ type = NoSpecFoundError
426
443
  dependencies = conflicts.count == 1 ? 'dependency' : 'dependencies'
427
444
  message << "\n\nNone of your spec sources contain a spec satisfying "\
428
445
  "the #{dependencies}: `#{conflicts.join(', ')}`." \
429
- "\n\nYou have either:" \
430
- "\n * out-of-date source repos which you can update with `pod repo update`." \
431
- "\n * mistyped the name or version." \
446
+ "\n\nYou have either:"
447
+ unless specs_updated?
448
+ message << "\n * out-of-date source repos which you can update with `pod repo update` or with `pod install --repo-update`."
449
+ end
450
+ message << "\n * mistyped the name or version." \
432
451
  "\n * not added the source repo that hosts the Podspec to your Podfile." \
433
452
  "\n\nNote: as of CocoaPods 1.0, `pod repo update` does not happen on `pod install` by default."
434
453
 
@@ -439,7 +458,7 @@ module Pod
439
458
  end
440
459
  end
441
460
  end
442
- raise Informative, message
461
+ raise type, message
443
462
  end
444
463
 
445
464
  # Returns whether the given spec is platform-compatible with the dependency
@@ -32,12 +32,12 @@ module Pod
32
32
  end
33
33
 
34
34
  class External
35
- def all_specifications
35
+ def all_specifications(_warn_for_multiple_pod_sources)
36
36
  [specification]
37
37
  end
38
38
  end
39
39
 
40
- def all_specifications
40
+ def all_specifications(warn_for_multiple_pod_sources)
41
41
  @all_specifications ||= begin
42
42
  sources_by_version = {}
43
43
  versions_by_source.each do |source, versions|
@@ -45,13 +45,15 @@ module Pod
45
45
  sources_by_version
46
46
  end
47
47
 
48
- duplicate_versions = sources_by_version.select { |_version, sources| sources.count > 1 }
48
+ if warn_for_multiple_pod_sources
49
+ duplicate_versions = sources_by_version.select { |_version, sources| sources.count > 1 }
49
50
 
50
- duplicate_versions.each do |version, sources|
51
- UI.warn "Found multiple specifications for `#{name} (#{version})`:\n" +
52
- sources.
53
- map { |s| s.specification_path(name, version) }.
54
- map { |v| "- #{v}" }.join("\n")
51
+ duplicate_versions.each do |version, sources|
52
+ UI.warn "Found multiple specifications for `#{name} (#{version})`:\n" +
53
+ sources.
54
+ map { |s| s.specification_path(name, version) }.
55
+ map { |v| "- #{v}" }.join("\n")
56
+ end
55
57
  end
56
58
 
57
59
  versions_by_source.flat_map do |source, versions|
@@ -12,13 +12,9 @@ module Pod
12
12
  @specs_by_name = {}
13
13
  spec_files = Pathname.glob(root + '{,*}.podspec{,.json}')
14
14
  spec_files.sort_by { |p| -p.to_path.split(File::SEPARATOR).size }.each do |file|
15
- begin
16
- spec = Specification.from_file(file)
17
- spec.validate_cocoapods_version
18
- @specs_by_name[spec.name] = spec
19
- rescue => e
20
- UI.warn "Unable to load a podspec from `#{file.basename}`, skipping:\n\n#{e}"
21
- end
15
+ spec = Specification.from_file(file)
16
+ spec.validate_cocoapods_version
17
+ @specs_by_name[spec.name] = spec
22
18
  end
23
19
  @specs_by_name
24
20
  end
@@ -104,7 +104,7 @@ module Pod
104
104
 
105
105
  def update_git_repo(show_output = false)
106
106
  Config.instance.with_changes(:verbose => show_output) do
107
- git!(%W(-C #{repo} fetch origin))
107
+ git!(%W(-C #{repo} fetch origin #{show_output ? '--progress' : ''}))
108
108
  current_branch = git!(%W(-C #{repo} rev-parse --abbrev-ref HEAD)).strip
109
109
  git!(%W(-C #{repo} reset --hard origin/#{current_branch}))
110
110
  end
@@ -9,7 +9,7 @@ module Pod
9
9
 
10
10
  # Product types where the product's frameworks must be embedded in a host target
11
11
  #
12
- EMBED_FRAMEWORKS_IN_HOST_TARGET_TYPES = [:app_extension, :framework, :messages_extension, :watch_extension, :xpc_service].freeze
12
+ EMBED_FRAMEWORKS_IN_HOST_TARGET_TYPES = [:app_extension, :framework, :static_library, :messages_extension, :watch_extension, :xpc_service].freeze
13
13
 
14
14
  # Initialize a new instance
15
15
  #
@@ -27,6 +27,18 @@ module Pod
27
27
  @xcconfigs = {}
28
28
  end
29
29
 
30
+ # @return [Boolean] True if the user_target refers to a
31
+ # library (framework, static or dynamic lib).
32
+ #
33
+ def library?
34
+ # Without a user_project, we can't say for sure
35
+ # that this is a library
36
+ return false if user_project.nil?
37
+ symbol_types = user_targets.map(&:symbol_type).uniq
38
+ raise ArgumentError, "Expected single kind of user_target for #{name}. Found #{symbol_types.join(', ')}." unless symbol_types.count == 1
39
+ [:framework, :dynamic_library, :static_library].include? symbol_types.first
40
+ end
41
+
30
42
  # @return [Boolean] True if the user_target's pods are
31
43
  # for an extension and must be embedded in a host,
32
44
  # target, otherwise false.
@@ -428,7 +428,8 @@ module Pod
428
428
  add_xctest(app_target) if @installer.pod_targets.any? { |pt| pt.spec_consumers.any? { |c| c.frameworks.include?('XCTest') } }
429
429
  app_project.save
430
430
  Xcodeproj::XCScheme.share_scheme(app_project.path, 'App')
431
- Xcodeproj::XCScheme.share_scheme(@installer.pods_project.path, pod_target.label)
431
+ # Share the pods xcscheme only if it exists. For pre-built vendored pods there is no xcscheme generated.
432
+ Xcodeproj::XCScheme.share_scheme(@installer.pods_project.path, pod_target.label) if shares_pod_target_xcscheme?(pod_target)
432
433
  end
433
434
 
434
435
  def add_swift_version(app_target)
@@ -669,6 +670,10 @@ module Pod
669
670
  add_result(:note, *args)
670
671
  end
671
672
 
673
+ def shares_pod_target_xcscheme?(pod_target)
674
+ Pathname.new(@installer.pods_project.path + pod_target.label).exist?
675
+ end
676
+
672
677
  def add_result(type, attribute_name, message, public_only = false)
673
678
  result = results.find do |r|
674
679
  r.type == type && r.attribute_name && r.message == message && r.public_only? == public_only
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: 1.2.1.beta.1
4
+ version: 1.2.1.rc.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eloy Duran
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2017-03-08 00:00:00.000000000 Z
14
+ date: 2017-04-05 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: cocoapods-core
@@ -19,14 +19,14 @@ dependencies:
19
19
  requirements:
20
20
  - - '='
21
21
  - !ruby/object:Gem::Version
22
- version: 1.2.1.beta.1
22
+ version: 1.2.1.rc.1
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - '='
28
28
  - !ruby/object:Gem::Version
29
- version: 1.2.1.beta.1
29
+ version: 1.2.1.rc.1
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: claide
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -207,7 +207,7 @@ dependencies:
207
207
  requirements:
208
208
  - - ">="
209
209
  - !ruby/object:Gem::Version
210
- version: 1.4.1
210
+ version: 1.4.3
211
211
  - - "<"
212
212
  - !ruby/object:Gem::Version
213
213
  version: '2.0'
@@ -217,7 +217,7 @@ dependencies:
217
217
  requirements:
218
218
  - - ">="
219
219
  - !ruby/object:Gem::Version
220
- version: 1.4.1
220
+ version: 1.4.3
221
221
  - - "<"
222
222
  - !ruby/object:Gem::Version
223
223
  version: '2.0'
@@ -317,14 +317,14 @@ dependencies:
317
317
  requirements:
318
318
  - - "~>"
319
319
  - !ruby/object:Gem::Version
320
- version: 0.2.5
320
+ version: '1.1'
321
321
  type: :runtime
322
322
  prerelease: false
323
323
  version_requirements: !ruby/object:Gem::Requirement
324
324
  requirements:
325
325
  - - "~>"
326
326
  - !ruby/object:Gem::Version
327
- version: 0.2.5
327
+ version: '1.1'
328
328
  - !ruby/object:Gem::Dependency
329
329
  name: bacon
330
330
  requirement: !ruby/object:Gem::Requirement