cocoapods 1.0.0.beta.2 → 1.0.0.beta.3

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: 99aac79324a67815f74a8175fa16465c8b7a3c21
4
- data.tar.gz: 234cd7e4caa85cd06b38e04037ceff2ab548d29b
3
+ metadata.gz: 04db614d298cf64360e2528b3a6a187fe56fae78
4
+ data.tar.gz: 4c179f800285b164798be255164b2dd96f8f24f5
5
5
  SHA512:
6
- metadata.gz: 45a4d7e290988cd133109a74ae79268ccc3229a8f5772aff37d6b1205ca71d3d279acbc642f41f881be97b21c1f4dbd45d160692ce9e5266af5e97661e04c30b
7
- data.tar.gz: a6da707743eb4dd997d5496d0071bb31b471701604192c3c8b1a08604fd076262a7c54153a022aa8a0b15be5f9b5c365b33c2dab258dd1c0a6ec0fdbe94864d2
6
+ metadata.gz: 370854285b3569c125818e3b905794b5eac5487f2891aa21e19b36139143b9ad0a3e1970eca7ecb6b7b04ba5876460b502c1f65509a1bb3e05eac2ad2fbfbb57
7
+ data.tar.gz: c5e7ac223cbac6a558528dbc5d43e8e937f04ec2fb667cdb8a9b32c825c1671e86767ddf876c2bc439aa09ea6808d04a4e94b8ad39a58731be7726dd6ddcf41a
@@ -4,6 +4,61 @@ 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.0.0.beta.3 (2016-02-03)
8
+
9
+ ##### Breaking
10
+
11
+ * Rename the `xcodeproj` Podfile directive to `project`.
12
+ [Marius Rackwitz](https://github.com/mrackwitz)
13
+ [Core#298](https://github.com/CocoaPods/Core/issues/298)
14
+
15
+ ##### Enhancements
16
+
17
+ * None.
18
+
19
+ ##### Bug Fixes
20
+
21
+ * Don't try to embed project headers into frameworks.
22
+ [Marius Rackwitz](https://github.com/mrackwitz)
23
+ [#4819](https://github.com/CocoaPods/CocoaPods/issues/4819)
24
+
25
+ * Fix a crash in the analyzer when target deduplication is deactivated.
26
+ [Marius Rackwitz](https://github.com/mrackwitz)
27
+ [#4751](https://github.com/CocoaPods/CocoaPods/issues/4751)
28
+
29
+ * Handle CoreData mapping models with recursive resource globs.
30
+ [Eric Firestone](https://github.com/efirestone)
31
+ [#4809](https://github.com/CocoaPods/CocoaPods/pull/4809)
32
+
33
+ * Generate valid xcconfig when target name includes spaces.
34
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
35
+ [#4783](https://github.com/CocoaPods/CocoaPods/issues/4783)
36
+
37
+ * Properly add resource files to resources build phase.
38
+ [Eric Firestone](https://github.com/efirestone)
39
+ [#4762](https://github.com/CocoaPods/CocoaPods/issues/4762)
40
+
41
+ * Fix suggestion of sudo when it actually isn't needed.
42
+ [Marcel Jackwerth](https://github.com/sirlantis)
43
+
44
+ * Set the `TARGET_DEVICE_FAMILY` to support both iPhone and iPad for iOS
45
+ resource bundle targets.
46
+ [Andy Rifken](https://github.com/arifken)
47
+
48
+ * Share user schemes of `Pods.xcodeproj` after generating deterministic UUIDS.
49
+ [Samuel Giddins](https://github.com/segiddins)
50
+
51
+ * Only attempt to `import` a framework during linting if the pod has source
52
+ files, and is thus being built by CocoaPods.
53
+ [Samuel Giddins](https://github.com/segiddins)
54
+ [#4823](https://github.com/CocoaPods/CocoaPods/issues/4823)
55
+
56
+ * Determine whether an external source needs to be fetched when updating a
57
+ dependency regardless of subspec names.
58
+ [Samuel Giddins](https://github.com/segiddins)
59
+ [#4821](https://github.com/CocoaPods/CocoaPods/issues/4821)
60
+
61
+
7
62
  ## 1.0.0.beta.2 (2016-01-05)
8
63
 
9
64
  ##### Enhancements
@@ -4,7 +4,7 @@ require 'active_support/core_ext/string/strip'
4
4
  module Pod
5
5
  class Command
6
6
  class Init < Command
7
- self.summary = 'Generate a Podfile for the current directory.'
7
+ self.summary = 'Generate a Podfile for the current directory'
8
8
  self.description = <<-DESC
9
9
  Creates a Podfile for the current directory if none currently exists. If
10
10
  an `XCODEPROJ` project file is specified or if there is only a single
@@ -11,7 +11,7 @@ module Pod
11
11
  #-----------------------------------------------------------------------#
12
12
 
13
13
  class Spec < IPC
14
- self.summary = 'Converts a podspec to JSON.'
14
+ self.summary = 'Converts a podspec to JSON'
15
15
  self.description = 'Converts a podspec to JSON and prints it to STDOUT.'
16
16
  self.arguments = [
17
17
  CLAide::Argument.new('PATH', true),
@@ -37,7 +37,7 @@ module Pod
37
37
  #-----------------------------------------------------------------------#
38
38
 
39
39
  class Podfile < IPC
40
- self.summary = 'Converts a Podfile to YAML.'
40
+ self.summary = 'Converts a Podfile to YAML'
41
41
  self.description = 'Converts a Podfile to YAML and prints it to STDOUT.'
42
42
  self.arguments = [
43
43
  CLAide::Argument.new('PATH', true),
@@ -63,7 +63,7 @@ module Pod
63
63
  #-----------------------------------------------------------------------#
64
64
 
65
65
  class List < IPC
66
- self.summary = 'Lists the specifications known to CocoaPods.'
66
+ self.summary = 'Lists the specifications known to CocoaPods'
67
67
  self.description = <<-DESC
68
68
  Prints to STDOUT a YAML dictionary where the keys are the name of the
69
69
  specifications and each corresponding value is a dictionary with
@@ -101,7 +101,7 @@ module Pod
101
101
  #-----------------------------------------------------------------------#
102
102
 
103
103
  class UpdateSearchIndex < IPC
104
- self.summary = 'Updates the search index.'
104
+ self.summary = 'Updates the search index'
105
105
  self.description = <<-DESC
106
106
  Updates the search index and prints its path to standard output.
107
107
  The search index is a YAML encoded dictionary where the keys
@@ -125,7 +125,7 @@ module Pod
125
125
  class Repl < IPC
126
126
  END_OF_OUTPUT_SIGNAL = "\n\r"
127
127
 
128
- self.summary = 'The repl listens to commands on standard input.'
128
+ self.summary = 'The repl listens to commands on standard input'
129
129
  self.description = <<-DESC
130
130
  The repl listens to commands on standard input and prints their
131
131
  result to standard output.
@@ -81,9 +81,9 @@ module Pod
81
81
 
82
82
  The Xcode project file should be specified in your `Podfile` like this:
83
83
 
84
- xcodeproj 'path/to/XcodeProject'
84
+ project 'path/to/XcodeProject'
85
85
 
86
- If no xcodeproj is specified, then a search for an Xcode project will
86
+ If no project is specified, then a search for an Xcode project will
87
87
  be made. If more than one Xcode project is found, the command will
88
88
  raise an error.
89
89
 
@@ -2,7 +2,7 @@ module Pod
2
2
  class Command
3
3
  class Repo < Command
4
4
  class Add < Repo
5
- self.summary = 'Add a spec repo.'
5
+ self.summary = 'Add a spec repo'
6
6
 
7
7
  self.description = <<-DESC
8
8
  Clones `URL` in the local spec-repos directory at `~/.cocoapods/repos/`. The
@@ -2,7 +2,7 @@ module Pod
2
2
  class Command
3
3
  class Repo < Command
4
4
  class Lint < Repo
5
- self.summary = 'Validates all specs in a repo.'
5
+ self.summary = 'Validates all specs in a repo'
6
6
 
7
7
  self.description = <<-DESC
8
8
  Lints the spec-repo `NAME`. If a directory is provided it is assumed
@@ -2,7 +2,7 @@ module Pod
2
2
  class Command
3
3
  class Repo < Command
4
4
  class Update < Repo
5
- self.summary = 'Update a spec repo.'
5
+ self.summary = 'Update a spec repo'
6
6
 
7
7
  self.description = <<-DESC
8
8
  Updates the local clone of the spec-repo `NAME`. If `NAME` is omitted
@@ -2,7 +2,7 @@ module Pod
2
2
  class Command
3
3
  class Spec < Command
4
4
  class Cat < Spec
5
- self.summary = 'Prints a spec file.'
5
+ self.summary = 'Prints a spec file'
6
6
 
7
7
  self.description = <<-DESC
8
8
  Prints the content of the podspec(s) whose name matches `QUERY` to standard output.
@@ -2,7 +2,7 @@ module Pod
2
2
  class Command
3
3
  class Spec < Command
4
4
  class Edit < Spec
5
- self.summary = 'Edit a spec file.'
5
+ self.summary = 'Edit a spec file'
6
6
 
7
7
  self.description = <<-DESC
8
8
  Opens the podspec matching `QUERY` to be edited.
@@ -2,7 +2,7 @@ module Pod
2
2
  class Command
3
3
  class Spec < Command
4
4
  class Lint < Spec
5
- self.summary = 'Validates a spec file.'
5
+ self.summary = 'Validates a spec file'
6
6
 
7
7
  self.description = <<-DESC
8
8
  Validates `NAME.podspec`. If a `DIRECTORY` is provided, it validates
@@ -91,7 +91,7 @@ module Pod
91
91
  @podspecs_paths << '.' if @podspecs_paths.empty?
92
92
  @podspecs_paths.each do |path|
93
93
  if path =~ %r{https?://}
94
- require 'open-uri'
94
+ require 'cocoapods/open-uri'
95
95
  output_path = podspecs_tmp_dir + File.basename(path)
96
96
  output_path.dirname.mkpath
97
97
  open(path) do |io|
@@ -2,7 +2,7 @@ module Pod
2
2
  class Command
3
3
  class Spec < Command
4
4
  class Which < Spec
5
- self.summary = 'Prints the path of the given spec.'
5
+ self.summary = 'Prints the path of the given spec'
6
6
 
7
7
  self.description = <<-DESC
8
8
  Prints the path of the .podspec file(s) whose name matches `QUERY`
@@ -14,7 +14,7 @@ module Pod
14
14
  if podspec_path.exist?
15
15
  store_podspec(sandbox, podspec_path, is_json)
16
16
  else
17
- require 'open-uri'
17
+ require 'cocoapods/open-uri'
18
18
  begin
19
19
  open(podspec_uri) { |io| store_podspec(sandbox, io.read, is_json) }
20
20
  rescue OpenURI::HTTPError => e
@@ -1,5 +1,5 @@
1
1
  module Pod
2
2
  # The version of the CocoaPods command line tool.
3
3
  #
4
- VERSION = '1.0.0.beta.2'.freeze unless defined? Pod::VERSION
4
+ VERSION = '1.0.0.beta.3'.freeze unless defined? Pod::VERSION
5
5
  end
@@ -102,7 +102,7 @@ module Pod
102
102
  end
103
103
  end
104
104
  build_settings = {
105
- 'PODS_FRAMEWORK_BUILD_PATH' => target.scoped_configuration_build_dir,
105
+ 'PODS_FRAMEWORK_BUILD_PATH' => XCConfigHelper.quote([target.scoped_configuration_build_dir]),
106
106
  # Make framework headers discoverable by `import "…"`
107
107
  'OTHER_CFLAGS' => '$(inherited) ' + XCConfigHelper.quote(framework_header_search_paths, '-iquote'),
108
108
  }
@@ -113,7 +113,7 @@ module Pod
113
113
  build_settings['OTHER_CFLAGS'] += ' ' + XCConfigHelper.quote(library_header_search_paths, '-isystem')
114
114
  end
115
115
  if pod_targets.any? { |t| t.should_build? && t.scoped? }
116
- build_settings['FRAMEWORK_SEARCH_PATHS'] = '"$PODS_FRAMEWORK_BUILD_PATH"'
116
+ build_settings['FRAMEWORK_SEARCH_PATHS'] = '$PODS_FRAMEWORK_BUILD_PATH'
117
117
  end
118
118
  build_settings
119
119
  else
@@ -58,11 +58,9 @@ module Pod
58
58
  @xcconfig = Xcodeproj::Config.new(config)
59
59
 
60
60
  if target.requires_frameworks? && target.scoped?
61
- # Only quote the FRAMEWORK_SEARCH_PATHS entry, because it’s a setting that takes multiple values.
62
- # In addition, quoting CONFIGURATION_BUILD_DIR would make it be interpreted as a relative path.
63
61
  build_settings = {
64
- 'PODS_FRAMEWORK_BUILD_PATH' => target.configuration_build_dir,
65
- 'FRAMEWORK_SEARCH_PATHS' => '"$PODS_FRAMEWORK_BUILD_PATH"',
62
+ 'PODS_FRAMEWORK_BUILD_PATH' => XCConfigHelper.quote([target.configuration_build_dir]),
63
+ 'FRAMEWORK_SEARCH_PATHS' => '$PODS_FRAMEWORK_BUILD_PATH',
66
64
  'CONFIGURATION_BUILD_DIR' => '$PODS_FRAMEWORK_BUILD_PATH',
67
65
  }
68
66
  @xcconfig.merge!(build_settings)
@@ -55,6 +55,11 @@ module Pod
55
55
  XCConfigHelper.add_static_dependency_build_settings(target, xcconfig, file_accessor)
56
56
  end
57
57
  XCConfigHelper.add_dynamic_dependency_build_settings(target, xcconfig)
58
+ if target.requires_frameworks?
59
+ target.dependent_targets.each do |dependent_target|
60
+ XCConfigHelper.add_dynamic_dependency_build_settings(dependent_target, xcconfig)
61
+ end
62
+ end
58
63
  end
59
64
 
60
65
  # Adds build settings for static vendored frameworks and libraries.
@@ -86,12 +91,6 @@ module Pod
86
91
  # The xcconfig to edit.
87
92
  #
88
93
  def self.add_dynamic_dependency_build_settings(target, xcconfig)
89
- if target.requires_frameworks?
90
- target.dependent_targets.each do |dependent_target|
91
- XCConfigHelper.add_dynamic_dependency_build_settings(dependent_target, xcconfig)
92
- end
93
- end
94
-
95
94
  target.file_accessors.each do |file_accessor|
96
95
  file_accessor.vendored_dynamic_frameworks.each do |vendored_dynamic_framework|
97
96
  XCConfigHelper.add_framework_build_settings(vendored_dynamic_framework, xcconfig, target.sandbox.root)
@@ -711,10 +711,10 @@ module Pod
711
711
  pods_project.pods.remove_from_project if pods_project.pods.empty?
712
712
  pods_project.development_pods.remove_from_project if pods_project.development_pods.empty?
713
713
  pods_project.sort(:groups_position => :below)
714
- pods_project.recreate_user_schemes(false)
715
714
  if installation_options.deterministic_uuids?
716
715
  UI.message('- Generating deterministic UUIDs') { pods_project.predictabilize_uuids }
717
716
  end
717
+ pods_project.recreate_user_schemes(false)
718
718
  pods_project.save
719
719
  end
720
720
  end
@@ -202,7 +202,7 @@ module Pod
202
202
  pods_state
203
203
  else
204
204
  state = SpecsState.new
205
- state.added.concat(podfile.dependencies.map(&:name).uniq)
205
+ state.added.merge(podfile.dependencies.map(&:root_name))
206
206
  state
207
207
  end
208
208
  end
@@ -286,9 +286,8 @@ module Pod
286
286
  # @return [Array<PodTarget>]
287
287
  #
288
288
  def generate_pod_targets(specs_by_target)
289
+ dedupe_cache = {}
289
290
  if installation_options.deduplicate_targets?
290
- dedupe_cache = {}
291
-
292
291
  all_specs = specs_by_target.flat_map do |target_definition, dependent_specs|
293
292
  dependent_specs.group_by(&:root).map do |root_spec, specs|
294
293
  [root_spec, specs, target_definition]
@@ -478,8 +477,8 @@ module Pod
478
477
  if update_mode == :all
479
478
  deps_to_fetch = deps_with_external_source
480
479
  else
481
- deps_to_fetch = deps_with_external_source.select { |dep| pods_to_fetch.include?(dep.name) }
482
- deps_to_fetch_if_needed = deps_with_external_source.select { |dep| result.podfile_state.unchanged.include?(dep.name) }
480
+ deps_to_fetch = deps_with_external_source.select { |dep| pods_to_fetch.include?(dep.root_name) }
481
+ deps_to_fetch_if_needed = deps_with_external_source.select { |dep| result.podfile_state.unchanged.include?(dep.root_name) }
483
482
  deps_to_fetch += deps_to_fetch_if_needed.select do |dep|
484
483
  sandbox.specification(dep.root_name).nil? ||
485
484
  !dep.external_source[:path].nil? ||
@@ -78,7 +78,7 @@ module Pod
78
78
  state.add_name(name, pod_state(name))
79
79
  end
80
80
  else
81
- state.added.concat(resolved_pods)
81
+ state.added.merge(resolved_pods)
82
82
  end
83
83
  state
84
84
  end
@@ -1,3 +1,5 @@
1
+ require 'set'
2
+
1
3
  module Pod
2
4
  class Installer
3
5
  class Analyzer
@@ -17,32 +19,38 @@ module Pod
17
19
  # (`:added`, `:removed`, `:changed` or `:unchanged`).
18
20
  #
19
21
  def initialize(pods_by_state = nil)
20
- @added = []
21
- @deleted = []
22
- @changed = []
23
- @unchanged = []
22
+ @added = Set.new
23
+ @deleted = Set.new
24
+ @changed = Set.new
25
+ @unchanged = Set.new
24
26
 
25
27
  if pods_by_state
26
- @added = pods_by_state[:added] || []
27
- @deleted = pods_by_state[:removed] || []
28
- @changed = pods_by_state[:changed] || []
29
- @unchanged = pods_by_state[:unchanged] || []
28
+ {
29
+ :added => :added,
30
+ :changed => :changed,
31
+ :removed => :deleted,
32
+ :unchanged => :unchanged,
33
+ }.each do |state, spec_state|
34
+ Array(pods_by_state[state]).each do |name|
35
+ add_name(name, spec_state)
36
+ end
37
+ end
30
38
  end
31
39
  end
32
40
 
33
- # @return [Array<String>] the names of the pods that were added.
41
+ # @return [Set<String>] the names of the pods that were added.
34
42
  #
35
43
  attr_accessor :added
36
44
 
37
- # @return [Array<String>] the names of the pods that were changed.
45
+ # @return [Set<String>] the names of the pods that were changed.
38
46
  #
39
47
  attr_accessor :changed
40
48
 
41
- # @return [Array<String>] the names of the pods that were deleted.
49
+ # @return [Set<String>] the names of the pods that were deleted.
42
50
  #
43
51
  attr_accessor :deleted
44
52
 
45
- # @return [Array<String>] the names of the pods that were unchanged.
53
+ # @return [Set<String>] the names of the pods that were unchanged.
46
54
  #
47
55
  attr_accessor :unchanged
48
56
 
@@ -68,7 +76,7 @@ module Pod
68
76
  # @return [void]
69
77
  #
70
78
  def add_name(name, state)
71
- send(state) << name
79
+ send(state) << Specification.root_name(name)
72
80
  end
73
81
  end
74
82
  end
@@ -199,29 +199,32 @@ module Pod
199
199
  lproj_paths = Set.new
200
200
  lproj_paths_with_files = Set.new
201
201
  allowable_paths = paths.select do |path|
202
- path_str = path.to_s.downcase
202
+ path_str = path.to_s
203
203
 
204
204
  # We add the directory for a Core Data model, but not the items in it.
205
- next if path_str =~ /.*\.xcdatamodeld\/.+/
205
+ next if path_str =~ /.*\.xcdatamodeld\/.+/i
206
+
207
+ # We add the directory for a Core Data migration mapping, but not the items in it.
208
+ next if path_str =~ /.*\.xcmappingmodel\/.+/i
206
209
 
207
210
  # We add the directory for an asset catalog, but not the items in it.
208
- next if path_str =~ /.*\.xcassets\/.+/
211
+ next if path_str =~ /.*\.xcassets\/.+/i
209
212
 
210
- if path_str =~ /\.lproj(\/|$)/
213
+ if path_str =~ /\.lproj(\/|$)/i
211
214
  # If the element is an .lproj directory then save it and potentially
212
215
  # add it later if we don't find any contained items.
213
- if path_str.end_with?('.lproj') && path.directory?
214
- lproj_paths << path_str
216
+ if path_str =~ /\.lproj$/i && path.directory?
217
+ lproj_paths << path
215
218
  next
216
219
  end
217
220
 
218
221
  # Collect the paths for the .lproj directories that contain files.
219
- lproj_path = /(^.*\.lproj)\/.*/.match(path_str)[1]
220
- lproj_paths_with_files << lproj_path
222
+ lproj_path = /(^.*\.lproj)\/.*/i.match(path_str)[1]
223
+ lproj_paths_with_files << Pathname(lproj_path)
221
224
 
222
225
  # Directories nested within an .lproj directory are added as file
223
226
  # system references so their contained items are not added directly.
224
- next if path.dirname.dirname.to_s.downcase == lproj_path
227
+ next if path.dirname.dirname == lproj_path
225
228
  end
226
229
 
227
230
  true
@@ -180,6 +180,17 @@ module Pod
180
180
  if target.requires_frameworks? && target.scoped?
181
181
  c.build_settings['CONFIGURATION_BUILD_DIR'] = target.configuration_build_dir
182
182
  end
183
+
184
+ # Set the correct device family for this bundle, based on the platform
185
+ device_family_by_platform = {
186
+ :ios => '1,2',
187
+ :tvos => '3',
188
+ :watchos => '1,2' # The device family for watchOS is 4, but Xcode creates watchkit-compatible bundles as 1,2
189
+ }
190
+
191
+ if family = device_family_by_platform[target.platform.name]
192
+ c.build_settings['TARGETED_DEVICE_FAMILY'] = family
193
+ end
183
194
  end
184
195
  end
185
196
  end
@@ -338,7 +349,7 @@ module Pod
338
349
  'Project'
339
350
  end
340
351
 
341
- if target.requires_frameworks? && header_mappings_dir
352
+ if target.requires_frameworks? && header_mappings_dir && acl != 'Project'
342
353
  relative_path = file_ref.real_path.relative_path_from(header_mappings_dir)
343
354
  sub_dir = relative_path.dirname
344
355
  copy_phase_name = "Copy #{sub_dir} #{acl} Headers"
@@ -146,7 +146,7 @@ module Pod
146
146
  SILENCE_WARNINGS_STRING = '// @COCOAPODS_SILENCE_WARNINGS@ //'
147
147
  def self.xcconfig_includes_target_xcconfig?(base_config_ref, target_config_path)
148
148
  return unless base_config_ref && base_config_ref.real_path.file?
149
- regex = /
149
+ regex = %r{
150
150
  ^(
151
151
  (\s* # Possible, but unlikely, space before include statement
152
152
  \#include\s+ # Include statement
@@ -158,7 +158,7 @@ module Pod
158
158
  |
159
159
  (#{Regexp.quote(SILENCE_WARNINGS_STRING)}) # Token to treat xcconfig as good and silence pod install warnings
160
160
  )
161
- /x
161
+ }x
162
162
  base_config_ref.real_path.readlines.find { |line| line =~ regex }
163
163
  end
164
164
 
@@ -1,3 +1,5 @@
1
+ # rubocop:disable Style/FileName
2
+
1
3
  require 'open-uri'
2
4
 
3
5
  # Allow OpenURI to follow http to https redirects.
@@ -366,23 +366,22 @@ module Pod
366
366
  'Update CocoaPods, or checkout the appropriate tag in the repo.'
367
367
  end
368
368
 
369
- needs_sudo = path_writable?(__FILE__)
370
-
371
369
  if config.new_version_message? && cocoapods_update?(versions)
372
370
  last = versions['last']
373
371
  rc = Gem::Version.new(last).prerelease?
374
- install_message = needs_sudo ? 'sudo ' : ''
372
+ install_message = needs_sudo? ? 'sudo ' : ''
375
373
  install_message << 'gem install cocoapods'
376
374
  install_message << ' --pre' if rc
377
375
  message = [
378
- "CocoaPods #{versions['last']} is available.".green,
376
+ "CocoaPods #{last} is available.".green,
379
377
  "To update use: `#{install_message}`".green,
380
378
  ("[!] This is a test version we'd love you to try.".yellow if rc),
381
379
  ("Until we reach version 1.0 the features of CocoaPods can and will change.\n" \
382
380
  'We strongly recommend that you use the latest version at all times.'.yellow unless rc),
383
381
  '',
384
- 'For more information see https://blog.cocoapods.org'.green,
385
- 'and the CHANGELOG for this version http://git.io/BaH8pQ.'.green,
382
+ 'For more information, see https://blog.cocoapods.org ' \
383
+ 'and the CHANGELOG for this version at ' \
384
+ "https://github.com/CocoaPods/CocoaPods/releases/tag/#{last}".green,
386
385
  '',
387
386
  ].compact.join("\n")
388
387
  UI.puts("\n#{message}\n")
@@ -487,6 +486,12 @@ module Pod
487
486
  Pathname(path).dirname.writable?
488
487
  end
489
488
 
489
+ # @return [Bool] Whether `gem install` probably needs `sudo` to succeed.
490
+ #
491
+ def needs_sudo?
492
+ !path_writable?(__FILE__)
493
+ end
494
+
490
495
  # @return [Source] The git source with the given name. If no git source
491
496
  # with given name is found it raises.
492
497
  #
@@ -399,12 +399,12 @@ module Pod
399
399
  if language == :swift
400
400
  source_file = validation_dir.+('App/main.swift')
401
401
  source_file.parent.mkpath
402
- import_statement = use_frameworks ? "import #{pod_target.product_module_name}\n" : ''
402
+ import_statement = use_frameworks && pod_target.should_build? ? "import #{pod_target.product_module_name}\n" : ''
403
403
  source_file.open('w') { |f| f << import_statement }
404
404
  else
405
405
  source_file = validation_dir.+('App/main.m')
406
406
  source_file.parent.mkpath
407
- import_statement = if use_frameworks
407
+ import_statement = if use_frameworks && pod_target.should_build?
408
408
  "@import #{pod_target.product_module_name};\n"
409
409
  else
410
410
  header_name = "#{pod_target.product_module_name}/#{pod_target.product_module_name}.h"
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.0.0.beta.2
4
+ version: 1.0.0.beta.3
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: 2016-01-05 00:00:00.000000000 Z
14
+ date: 2016-02-02 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.0.0.beta.2
22
+ version: 1.0.0.beta.3
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.0.0.beta.2
29
+ version: 1.0.0.beta.3
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: claide
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -133,7 +133,7 @@ dependencies:
133
133
  requirements:
134
134
  - - '>='
135
135
  - !ruby/object:Gem::Version
136
- version: 1.0.0.beta.2
136
+ version: 1.0.0.beta.3
137
137
  - - <
138
138
  - !ruby/object:Gem::Version
139
139
  version: '2.0'
@@ -143,7 +143,7 @@ dependencies:
143
143
  requirements:
144
144
  - - '>='
145
145
  - !ruby/object:Gem::Version
146
- version: 1.0.0.beta.2
146
+ version: 1.0.0.beta.3
147
147
  - - <
148
148
  - !ruby/object:Gem::Version
149
149
  version: '2.0'
@@ -153,7 +153,7 @@ dependencies:
153
153
  requirements:
154
154
  - - '>='
155
155
  - !ruby/object:Gem::Version
156
- version: 1.0.0.beta.1
156
+ version: 1.0.0.beta.2
157
157
  - - <
158
158
  - !ruby/object:Gem::Version
159
159
  version: '2.0'
@@ -163,7 +163,7 @@ dependencies:
163
163
  requirements:
164
164
  - - '>='
165
165
  - !ruby/object:Gem::Version
166
- version: 1.0.0.beta.1
166
+ version: 1.0.0.beta.2
167
167
  - - <
168
168
  - !ruby/object:Gem::Version
169
169
  version: '2.0'
@@ -193,14 +193,14 @@ dependencies:
193
193
  requirements:
194
194
  - - ~>
195
195
  - !ruby/object:Gem::Version
196
- version: 0.4.1
196
+ version: 0.4.2
197
197
  type: :runtime
198
198
  prerelease: false
199
199
  version_requirements: !ruby/object:Gem::Requirement
200
200
  requirements:
201
201
  - - ~>
202
202
  - !ruby/object:Gem::Version
203
- version: 0.4.1
203
+ version: 0.4.2
204
204
  - !ruby/object:Gem::Dependency
205
205
  name: xcodeproj
206
206
  requirement: !ruby/object:Gem::Requirement
@@ -434,7 +434,7 @@ files:
434
434
  - lib/cocoapods/installer/user_project_integrator.rb
435
435
  - lib/cocoapods/installer/user_project_integrator/target_integrator.rb
436
436
  - lib/cocoapods/installer/user_project_integrator/target_integrator/xcconfig_integrator.rb
437
- - lib/cocoapods/open_uri.rb
437
+ - lib/cocoapods/open-uri.rb
438
438
  - lib/cocoapods/project.rb
439
439
  - lib/cocoapods/resolver.rb
440
440
  - lib/cocoapods/resolver/lazy_specification.rb
@@ -471,7 +471,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
471
471
  version: '0'
472
472
  requirements: []
473
473
  rubyforge_project:
474
- rubygems_version: 2.5.1
474
+ rubygems_version: 2.5.2
475
475
  signing_key:
476
476
  specification_version: 3
477
477
  summary: The Cocoa library package manager.