cocoapods 1.0.0.beta.1 → 1.0.0.beta.2
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 +4 -4
- data/CHANGELOG.md +38 -0
- data/lib/cocoapods/command/outdated.rb +12 -0
- data/lib/cocoapods/gem_version.rb +1 -1
- data/lib/cocoapods/generator/info_plist_file.rb +48 -35
- data/lib/cocoapods/installer.rb +3 -3
- data/lib/cocoapods/installer/analyzer.rb +5 -2
- data/lib/cocoapods/installer/post_install_hooks_context.rb +9 -2
- data/lib/cocoapods/installer/pre_install_hooks_context.rb +1 -0
- data/lib/cocoapods/installer/target_installer/pod_target_installer.rb +1 -1
- data/lib/cocoapods/installer/user_project_integrator/target_integrator/xcconfig_integrator.rb +18 -6
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 99aac79324a67815f74a8175fa16465c8b7a3c21
|
4
|
+
data.tar.gz: 234cd7e4caa85cd06b38e04037ceff2ab548d29b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 45a4d7e290988cd133109a74ae79268ccc3229a8f5772aff37d6b1205ca71d3d279acbc642f41f881be97b21c1f4dbd45d160692ce9e5266af5e97661e04c30b
|
7
|
+
data.tar.gz: a6da707743eb4dd997d5496d0071bb31b471701604192c3c8b1a08604fd076262a7c54153a022aa8a0b15be5f9b5c365b33c2dab258dd1c0a6ec0fdbe94864d2
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,44 @@ 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.2 (2016-01-05)
|
8
|
+
|
9
|
+
##### Enhancements
|
10
|
+
|
11
|
+
* Present a friendly error suggesting running `pod install` when there are
|
12
|
+
missing local podspecs when running `pod outdated`.
|
13
|
+
[Samuel Giddins](https://github.com/segiddins)
|
14
|
+
[#4716](https://github.com/CocoaPods/CocoaPods/issues/4716)
|
15
|
+
|
16
|
+
* Don't warn about setting base config when identical to current config.
|
17
|
+
[Jed Lewison](https://github.com/jedlewison)
|
18
|
+
[#4722](https://github.com/CocoaPods/CocoaPods/issues/4722)
|
19
|
+
|
20
|
+
* Add `user_targets` method to the `UmbrellaTargetDescription` in the
|
21
|
+
post-install hooks context.
|
22
|
+
[Samuel Giddins](https://github.com/segiddins)
|
23
|
+
|
24
|
+
##### Bug Fixes
|
25
|
+
|
26
|
+
* Always fetch a `:podspec` dependency's podspec when it is missing in the
|
27
|
+
`Pods` directory.
|
28
|
+
[Samuel Giddins](https://github.com/segiddins)
|
29
|
+
[#4717](https://github.com/CocoaPods/CocoaPods/issues/4717)
|
30
|
+
|
31
|
+
* The `Info.plist` file will now be generated properly for resource bundles,
|
32
|
+
setting the proper `CFBundlePackageType` and omitting the `CFBundleExecutable`
|
33
|
+
key.
|
34
|
+
[Samuel Giddins](https://github.com/segiddins)
|
35
|
+
[Xcodeproj#259](https://github.com/CocoaPods/Xcodeproj/issues/259)
|
36
|
+
|
37
|
+
* Fix crash when deintegrating due to major version change and there are
|
38
|
+
multiple root-level Xcode projects.
|
39
|
+
[Samuel Giddins](https://github.com/segiddins)
|
40
|
+
|
41
|
+
* Ensure the `sandbox_root` attribute is set on the pre-install hooks context.
|
42
|
+
[Samuel Giddins](https://github.com/segiddins)
|
43
|
+
|
44
|
+
|
7
45
|
## 1.0.0.beta.1 (2015-12-30)
|
8
46
|
|
9
47
|
##### Breaking
|
@@ -52,6 +52,7 @@ module Pod
|
|
52
52
|
|
53
53
|
def updates
|
54
54
|
@updates ||= begin
|
55
|
+
ensure_external_podspecs_present!
|
55
56
|
spec_sets.map do |set|
|
56
57
|
spec = set.specification
|
57
58
|
source_version = set.versions.first
|
@@ -111,6 +112,17 @@ module Pod
|
|
111
112
|
config.lockfile
|
112
113
|
end
|
113
114
|
end
|
115
|
+
|
116
|
+
def ensure_external_podspecs_present!
|
117
|
+
return unless config.podfile
|
118
|
+
config.podfile.dependencies.each do |dep|
|
119
|
+
next if dep.external_source.nil?
|
120
|
+
unless config.sandbox.specification(dep.root_name)
|
121
|
+
raise Informative, 'You must run `pod install` first to ensure that the ' \
|
122
|
+
"podspec for `#{dep.root_name}` has been fetched."
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
114
126
|
end
|
115
127
|
end
|
116
128
|
end
|
@@ -9,12 +9,20 @@ module Pod
|
|
9
9
|
#
|
10
10
|
attr_reader :target
|
11
11
|
|
12
|
+
# @return [Symbol] the CFBundlePackageType of the target this Info.plist
|
13
|
+
# file is for.
|
14
|
+
#
|
15
|
+
attr_reader :bundle_package_type
|
16
|
+
|
12
17
|
# Initialize a new instance
|
13
18
|
#
|
14
19
|
# @param [Target] target @see target
|
15
20
|
#
|
16
|
-
|
21
|
+
# @param [Symbol] bundle_package_type @see bundle_package_type
|
22
|
+
#
|
23
|
+
def initialize(target, bundle_package_type: :fmwk)
|
17
24
|
@target = target
|
25
|
+
@bundle_package_type = bundle_package_type
|
18
26
|
end
|
19
27
|
|
20
28
|
# Generates and saves the Info.plist to the given path.
|
@@ -51,7 +59,7 @@ module Pod
|
|
51
59
|
# @return [String]
|
52
60
|
#
|
53
61
|
def generate
|
54
|
-
|
62
|
+
to_plist(info)
|
55
63
|
end
|
56
64
|
|
57
65
|
private
|
@@ -61,51 +69,56 @@ module Pod
|
|
61
69
|
<?xml version="1.0" encoding="UTF-8"?>
|
62
70
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
63
71
|
<plist version="1.0">
|
64
|
-
<dict>
|
65
72
|
PLIST
|
66
73
|
end
|
67
74
|
|
68
75
|
def footer
|
69
76
|
<<-PLIST
|
70
|
-
</dict>
|
71
77
|
</plist>
|
72
78
|
PLIST
|
73
79
|
end
|
74
80
|
|
75
|
-
def
|
76
|
-
|
77
|
-
|
78
|
-
<string>en</string>
|
79
|
-
<key>CFBundleExecutable</key>
|
80
|
-
<string>${EXECUTABLE_NAME}</string>
|
81
|
-
<key>CFBundleIdentifier</key>
|
82
|
-
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
|
83
|
-
<key>CFBundleInfoDictionaryVersion</key>
|
84
|
-
<string>6.0</string>
|
85
|
-
<key>CFBundleName</key>
|
86
|
-
<string>${PRODUCT_NAME}</string>
|
87
|
-
<key>CFBundlePackageType</key>
|
88
|
-
<string>FMWK</string>
|
89
|
-
<key>CFBundleShortVersionString</key>
|
90
|
-
<string>#{target_version}</string>
|
91
|
-
<key>CFBundleSignature</key>
|
92
|
-
<string>????</string>
|
93
|
-
<key>CFBundleVersion</key>
|
94
|
-
<string>${CURRENT_PROJECT_VERSION}</string>
|
95
|
-
<key>NSPrincipalClass</key>
|
96
|
-
<string></string>
|
97
|
-
PLIST
|
81
|
+
def to_plist(root)
|
82
|
+
serialize(root, header) << footer
|
83
|
+
end
|
98
84
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
85
|
+
def serialize(value, output, indentation = 0)
|
86
|
+
indent = ' ' * indentation
|
87
|
+
case value
|
88
|
+
when Array
|
89
|
+
output << indent << "<array>\n"
|
90
|
+
value.each { |v| serialize(v, output, indentation + 2) }
|
91
|
+
output << indent << "</array>\n"
|
92
|
+
when Hash
|
93
|
+
output << indent << "<dict>\n"
|
94
|
+
value.to_a.sort_by(&:first).each do |key, v|
|
95
|
+
output << indent << ' ' << "<key>#{key}</key>\n"
|
96
|
+
serialize(v, output, indentation + 2)
|
97
|
+
end
|
98
|
+
output << indent << "</dict>\n"
|
99
|
+
when String
|
100
|
+
output << indent << "<string>#{value}</string>\n"
|
106
101
|
end
|
102
|
+
output
|
103
|
+
end
|
104
|
+
|
105
|
+
def info
|
106
|
+
info = {
|
107
|
+
'CFBundleIdentifier' => '${PRODUCT_BUNDLE_IDENTIFIER}',
|
108
|
+
'CFBundleInfoDictionaryVersion' => '6.0',
|
109
|
+
'CFBundleName' => '${PRODUCT_NAME}',
|
110
|
+
'CFBundlePackageType' => bundle_package_type.to_s.upcase,
|
111
|
+
'CFBundleShortVersionString' => target_version,
|
112
|
+
'CFBundleSignature' => '????',
|
113
|
+
'CFBundleVersion' => '${CURRENT_PROJECT_VERSION}',
|
114
|
+
'NSPrincipalClass' => '',
|
115
|
+
'CFBundleDevelopmentRegion' => 'en',
|
116
|
+
}
|
117
|
+
|
118
|
+
info['CFBundleExecutable'] = '${EXECUTABLE_NAME}' if bundle_package_type != :bndl
|
119
|
+
info['UIRequiredDeviceCapabilities'] = %w(arm64) if target.platform.name == :tvos
|
107
120
|
|
108
|
-
|
121
|
+
info
|
109
122
|
end
|
110
123
|
end
|
111
124
|
end
|
data/lib/cocoapods/installer.rb
CHANGED
@@ -502,11 +502,11 @@ module Pod
|
|
502
502
|
def deintegrate_if_different_major_version
|
503
503
|
return unless lockfile
|
504
504
|
return if lockfile.cocoapods_version.major == Version.create(VERSION).major
|
505
|
-
UI.section('
|
505
|
+
UI.section('Re-creating CocoaPods due to major version update.') do
|
506
506
|
projects = Pathname.glob(config.installation_root + '*.xcodeproj').map { |path| Xcodeproj::Project.open(path) }
|
507
507
|
deintegrator = Deintegrator.new
|
508
|
-
projects.
|
509
|
-
deintegrator.deintegrate_project(project)
|
508
|
+
projects.each do |project|
|
509
|
+
config.with_changes(:silent => true) { deintegrator.deintegrate_project(project) }
|
510
510
|
project.save if project.dirty?
|
511
511
|
end
|
512
512
|
end
|
@@ -443,7 +443,7 @@ module Pod
|
|
443
443
|
unless dependencies_to_fetch.empty?
|
444
444
|
UI.section 'Fetching external sources' do
|
445
445
|
dependencies_to_fetch.sort.each do |dependency|
|
446
|
-
fetch_external_source(dependency, !pods_to_fetch.include?(dependency.
|
446
|
+
fetch_external_source(dependency, !pods_to_fetch.include?(dependency.root_name))
|
447
447
|
end
|
448
448
|
end
|
449
449
|
end
|
@@ -481,7 +481,7 @@ module Pod
|
|
481
481
|
deps_to_fetch = deps_with_external_source.select { |dep| pods_to_fetch.include?(dep.name) }
|
482
482
|
deps_to_fetch_if_needed = deps_with_external_source.select { |dep| result.podfile_state.unchanged.include?(dep.name) }
|
483
483
|
deps_to_fetch += deps_to_fetch_if_needed.select do |dep|
|
484
|
-
sandbox.specification(dep.
|
484
|
+
sandbox.specification(dep.root_name).nil? ||
|
485
485
|
!dep.external_source[:path].nil? ||
|
486
486
|
!sandbox.pod_dir(dep.root_name).directory? ||
|
487
487
|
checkout_requires_update?(dep)
|
@@ -506,6 +506,9 @@ module Pod
|
|
506
506
|
elsif update_mode == :all
|
507
507
|
pods_to_fetch += result.podfile_state.unchanged + result.podfile_state.deleted
|
508
508
|
end
|
509
|
+
pods_to_fetch += podfile.dependencies.
|
510
|
+
select { |dep| Hash(dep.external_source).key?(:podspec) && sandbox.specification_path(dep.root_name).nil? }.
|
511
|
+
map(&:root_name)
|
509
512
|
pods_to_fetch
|
510
513
|
end
|
511
514
|
end
|
@@ -38,7 +38,7 @@ module Pod
|
|
38
38
|
aggregate_targets.each do |umbrella|
|
39
39
|
desc = UmbrellaTargetDescription.new
|
40
40
|
desc.user_project = umbrella.user_project
|
41
|
-
desc.
|
41
|
+
desc.user_targets = umbrella.user_targets
|
42
42
|
desc.specs = umbrella.specs
|
43
43
|
desc.platform_name = umbrella.platform.name
|
44
44
|
desc.platform_deployment_target = umbrella.platform.deployment_target.to_s
|
@@ -69,6 +69,11 @@ module Pod
|
|
69
69
|
user_project.path if user_project
|
70
70
|
end
|
71
71
|
|
72
|
+
# @return [Array<PBXNativeTarget>]
|
73
|
+
# The list of user targets integrated by this umbrella target.
|
74
|
+
#
|
75
|
+
attr_accessor :user_targets
|
76
|
+
|
72
77
|
# @return [Array<String>] The list of the UUIDs of the
|
73
78
|
# user targets integrated by this umbrella
|
74
79
|
# target. They can be used to find the
|
@@ -76,7 +81,9 @@ module Pod
|
|
76
81
|
# to find the targets opening the project with
|
77
82
|
# Xcodeproj.
|
78
83
|
#
|
79
|
-
|
84
|
+
def user_target_uuids
|
85
|
+
user_targets.map(&:uuid)
|
86
|
+
end
|
80
87
|
|
81
88
|
# @return [Array<Specification>] The list of the
|
82
89
|
# specifications of the target.
|
@@ -169,7 +169,7 @@ module Pod
|
|
169
169
|
path = target.info_plist_path
|
170
170
|
path.dirname.mkdir unless path.dirname.exist?
|
171
171
|
info_plist_path = path.dirname + "ResourceBundle-#{bundle_name}-#{path.basename}"
|
172
|
-
generator = Generator::InfoPlistFile.new(target)
|
172
|
+
generator = Generator::InfoPlistFile.new(target, :bundle_package_type => :bndl)
|
173
173
|
generator.save_as(info_plist_path)
|
174
174
|
add_file_to_support_group(info_plist_path)
|
175
175
|
|
data/lib/cocoapods/installer/user_project_integrator/target_integrator/xcconfig_integrator.rb
CHANGED
@@ -88,12 +88,14 @@ module Pod
|
|
88
88
|
if existing.real_path.to_path.start_with?(pod_bundle.sandbox.root.to_path << '/')
|
89
89
|
set_base_configuration_reference.call
|
90
90
|
elsif !xcconfig_includes_target_xcconfig?(config.base_configuration_reference, path)
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
91
|
+
unless existing_config_is_identical_to_pod_config?(existing.real_path, pod_bundle.xcconfig_path(config.name))
|
92
|
+
UI.warn 'CocoaPods did not set the base configuration of your ' \
|
93
|
+
'project because your project already has a custom ' \
|
94
|
+
'config set. In order for CocoaPods integration to work at ' \
|
95
|
+
'all, please either set the base configurations of the target ' \
|
96
|
+
"`#{target.name}` to `#{path}` or include the `#{path}` in your " \
|
97
|
+
"build configuration (#{UI.path(existing.real_path)})."
|
98
|
+
end
|
97
99
|
end
|
98
100
|
elsif config.base_configuration_reference.nil? || file_ref.nil?
|
99
101
|
set_base_configuration_reference.call
|
@@ -159,6 +161,16 @@ module Pod
|
|
159
161
|
/x
|
160
162
|
base_config_ref.real_path.readlines.find { |line| line =~ regex }
|
161
163
|
end
|
164
|
+
|
165
|
+
# Checks to see if the config files at two paths exist and are identical
|
166
|
+
#
|
167
|
+
# @param The existing config path
|
168
|
+
#
|
169
|
+
# @param The pod config path
|
170
|
+
#
|
171
|
+
def self.existing_config_is_identical_to_pod_config?(existing_config_path, pod_config_path)
|
172
|
+
existing_config_path.file? && (!pod_config_path.file? || FileUtils.compare_file(existing_config_path, pod_config_path))
|
173
|
+
end
|
162
174
|
end
|
163
175
|
end
|
164
176
|
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: 1.0.0.beta.
|
4
|
+
version: 1.0.0.beta.2
|
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:
|
14
|
+
date: 2016-01-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.0.0.beta.
|
22
|
+
version: 1.0.0.beta.2
|
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.
|
29
|
+
version: 1.0.0.beta.2
|
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.
|
136
|
+
version: 1.0.0.beta.2
|
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.
|
146
|
+
version: 1.0.0.beta.2
|
147
147
|
- - <
|
148
148
|
- !ruby/object:Gem::Version
|
149
149
|
version: '2.0'
|
@@ -173,7 +173,7 @@ dependencies:
|
|
173
173
|
requirements:
|
174
174
|
- - '>='
|
175
175
|
- !ruby/object:Gem::Version
|
176
|
-
version: 1.0.0.beta.
|
176
|
+
version: 1.0.0.beta.2
|
177
177
|
- - <
|
178
178
|
- !ruby/object:Gem::Version
|
179
179
|
version: '2.0'
|
@@ -183,7 +183,7 @@ dependencies:
|
|
183
183
|
requirements:
|
184
184
|
- - '>='
|
185
185
|
- !ruby/object:Gem::Version
|
186
|
-
version: 1.0.0.beta.
|
186
|
+
version: 1.0.0.beta.2
|
187
187
|
- - <
|
188
188
|
- !ruby/object:Gem::Version
|
189
189
|
version: '2.0'
|