cocoapods 0.17.2 → 0.18.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +45 -0
- data/lib/cocoapods/command/outdated.rb +2 -2
- data/lib/cocoapods/command/project.rb +5 -5
- data/lib/cocoapods/command/search.rb +12 -2
- data/lib/cocoapods/gem_version.rb +1 -1
- data/lib/cocoapods/generator/documentation.rb +3 -4
- data/lib/cocoapods/generator/xcconfig.rb +58 -4
- data/lib/cocoapods/installer/analyzer.rb +7 -6
- data/lib/cocoapods/installer/target_installer.rb +4 -4
- data/lib/cocoapods/installer/user_project_integrator/target_integrator.rb +29 -0
- data/lib/cocoapods/library.rb +9 -2
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b1df58baee810ede899c2654dc4839739eb371c
|
4
|
+
data.tar.gz: b2d143a8e33bf73b380fe0666080379f05d3bbb0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f3f16d90e3a16e73916c0effbdbb0bd9eaa71bbcb50e6494394050b09d4857551400d16e5eb74bb9635018cca27656e4e29d7643d5a68f20f27b5584b4d2073b
|
7
|
+
data.tar.gz: 0954a3a480bad61c2fb5abeee3d95d55f723f65d58aca68d52ad42159e6868be9bbc1b1e3552cc3fc0109eb6d2ca033ca56c0374697bb7f69cc0ba54d239d3ac
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,48 @@
|
|
1
|
+
## 0.18.0 (unreleased)
|
2
|
+
[CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.17.2...0.17.3)
|
3
|
+
• [cocoapods-core](https://github.com/CocoaPods/Core/compare/0.17.2...0.17.3)
|
4
|
+
• [Xcodeproj](https://github.com/CocoaPods/Xcodeproj/compare/0.5.2...0.5.4)
|
5
|
+
|
6
|
+
###### Enhancements
|
7
|
+
|
8
|
+
* Added the ability to inhibit warnings per pod.
|
9
|
+
Just pass `:inhibit_warnings => true` inline.
|
10
|
+
This feature has been implemented by Marin Usalj (@mneorr).
|
11
|
+
[#10](https://github.com/CocoaPods/Core/pull/10)
|
12
|
+
[#934](https://github.com/CocoaPods/CocoaPods/pull/934)
|
13
|
+
* Inhibiting warnings will also suppress the warnings of the static analyzer.
|
14
|
+
* A new build phase has been added to check that your
|
15
|
+
installation is in sync with the `Podfile.lock` and fail the build otherwise.
|
16
|
+
The new build phase will not be added automatically to targets already
|
17
|
+
integrated with CocoaPods, for integrating targets manually see [this
|
18
|
+
comment](https://github.com/CocoaPods/CocoaPods/pull/946#issuecomment-16042419).
|
19
|
+
This feature has been implemented by Ullrich Schäfer (@stigi).
|
20
|
+
[#946](https://github.com/CocoaPods/CocoaPods/pull/946)
|
21
|
+
* The `pod search` commands now accepts the `--ios` and the `--osx` arguments
|
22
|
+
to filter the results by platform.
|
23
|
+
[#625](https://github.com/CocoaPods/CocoaPods/issues/625)
|
24
|
+
* The developer frameworks are automatically added if `SenTestingKit` is
|
25
|
+
detected. There is no need to specify them in specifications anymore.
|
26
|
+
[#771](https://github.com/CocoaPods/CocoaPods/issues/771)
|
27
|
+
* The `--no-update` argument of the `install`, `update`, `outdated` subcommands
|
28
|
+
has been renamed to `--no-repo-update`.
|
29
|
+
[#913](https://github.com/CocoaPods/CocoaPods/issues/913)
|
30
|
+
|
31
|
+
###### Bug fixes
|
32
|
+
|
33
|
+
* Improved handling for Xcode projects containing non ASCII characters.
|
34
|
+
Special thanks to Cédric Luthi (@0xced), Vincent Isambart (@vincentisambart),
|
35
|
+
and Manfred Stienstra (@Manfred) for helping to develop the workaround.
|
36
|
+
[#926](https://github.com/CocoaPods/CocoaPods/issues/926)
|
37
|
+
* Corrected improper configuration of the PODS_ROOT xcconfig variable in
|
38
|
+
non-integrating installations.
|
39
|
+
[#918](https://github.com/CocoaPods/CocoaPods/issues/918)
|
40
|
+
* Improved support for pre-release versions using dashes.
|
41
|
+
[#935](https://github.com/CocoaPods/CocoaPods/issues/935)
|
42
|
+
* Documentation sets are now namespaced by pod solving improper attribution.
|
43
|
+
[#659](https://github.com/CocoaPods/CocoaPods/issues/659)
|
44
|
+
|
45
|
+
|
1
46
|
## 0.17.2
|
2
47
|
[CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.17.1...0.17.2)
|
3
48
|
• [cocoapods-core](https://github.com/CocoaPods/Core/compare/0.17.1...0.17.2)
|
@@ -9,11 +9,11 @@ module Pod
|
|
9
9
|
DESC
|
10
10
|
|
11
11
|
def self.options
|
12
|
-
[["--no-update", "Skip running `pod repo update` before install"]].concat(super)
|
12
|
+
[["--no-repo-update", "Skip running `pod repo update` before install"]].concat(super)
|
13
13
|
end
|
14
14
|
|
15
15
|
def initialize(argv)
|
16
|
-
config.skip_repo_update = argv.flag?('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
|
|
@@ -8,10 +8,10 @@ module Pod
|
|
8
8
|
module Options
|
9
9
|
def options
|
10
10
|
[
|
11
|
-
["--no-clean",
|
12
|
-
["--no-doc",
|
13
|
-
["--no-integrate",
|
14
|
-
["--no-update",
|
11
|
+
["--no-clean", "Leave SCM dirs like `.git' and `.svn' intact after downloading"],
|
12
|
+
["--no-doc", "Skip documentation generation with appledoc"],
|
13
|
+
["--no-integrate", "Skip integration of the Pods libraries in the Xcode project(s)"],
|
14
|
+
["--no-repo-update", "Skip running `pod repo update` before install"],
|
15
15
|
].concat(super)
|
16
16
|
end
|
17
17
|
end
|
@@ -24,7 +24,7 @@ module Pod
|
|
24
24
|
config.clean = argv.flag?('clean', config.clean)
|
25
25
|
config.generate_docs = argv.flag?('doc', config.generate_docs)
|
26
26
|
config.integrate_targets = argv.flag?('integrate', config.integrate_targets)
|
27
|
-
config.skip_repo_update = !argv.flag?('update', !config.skip_repo_update)
|
27
|
+
config.skip_repo_update = !argv.flag?('repo-update', !config.skip_repo_update)
|
28
28
|
super
|
29
29
|
end
|
30
30
|
|
@@ -14,13 +14,17 @@ module Pod
|
|
14
14
|
def self.options
|
15
15
|
[[
|
16
16
|
"--full", "Search by name, summary, and description",
|
17
|
-
"--stats", "Show additional stats (like GitHub watchers and forks)"
|
17
|
+
"--stats", "Show additional stats (like GitHub watchers and forks)",
|
18
|
+
"--ios", "Restricts the search to Pods supported on iOS",
|
19
|
+
"--osx", "Restricts the search to Pods supported on OS X",
|
18
20
|
]].concat(super)
|
19
21
|
end
|
20
22
|
|
21
23
|
def initialize(argv)
|
22
24
|
@full_text_search = argv.flag?('full')
|
23
25
|
@stats = argv.flag?('stats')
|
26
|
+
@supported_on_ios = argv.flag?('ios')
|
27
|
+
@supported_on_osx = argv.flag?('osx')
|
24
28
|
@query = argv.shift_argument
|
25
29
|
super
|
26
30
|
end
|
@@ -32,10 +36,16 @@ module Pod
|
|
32
36
|
|
33
37
|
def run
|
34
38
|
sets = SourcesManager.search_by_name(@query.strip, @full_text_search)
|
39
|
+
if @supported_on_ios
|
40
|
+
sets.reject!{ |set| !set.specification.available_platforms.map(&:name).include?(:ios) }
|
41
|
+
end
|
42
|
+
if @supported_on_osx
|
43
|
+
sets.reject!{ |set| !set.specification.available_platforms.map(&:name).include?(:osx) }
|
44
|
+
end
|
35
45
|
sets.each do |set|
|
36
46
|
begin
|
37
47
|
UI.pod(set, (@stats ? :stats : :normal))
|
38
|
-
rescue DSLError
|
48
|
+
rescue DSLError
|
39
49
|
UI.warn "Skipping `#{set.name}` because the podspec contains errors."
|
40
50
|
end
|
41
51
|
end
|
@@ -54,8 +54,7 @@ module Pod
|
|
54
54
|
#
|
55
55
|
def generate(install_docset)
|
56
56
|
if `which appledoc`.strip.empty?
|
57
|
-
UI.warn "[!] Skipping documentation generation because appledoc can't be found.",
|
58
|
-
actions = [], verbose_only = true
|
57
|
+
UI.warn "[!] Skipping documentation generation because appledoc can't be found.", [], true
|
59
58
|
return
|
60
59
|
end
|
61
60
|
|
@@ -106,10 +105,10 @@ module Pod
|
|
106
105
|
specification.summary || specification.description || 'Generated by CocoaPods.'
|
107
106
|
end
|
108
107
|
|
109
|
-
# @return [String] The id of the docset.
|
108
|
+
# @return [String] The id of the docset, uniq for every Pod.
|
110
109
|
#
|
111
110
|
def docs_id
|
112
|
-
|
111
|
+
"org.cocoapods.#{specification.name.downcase}"
|
113
112
|
end
|
114
113
|
|
115
114
|
#-----------------------------------------------------------------------#
|
@@ -61,10 +61,7 @@ module Pod
|
|
61
61
|
})
|
62
62
|
|
63
63
|
spec_consumers.each do |consumer|
|
64
|
-
|
65
|
-
@xcconfig.libraries.merge(consumer.libraries);
|
66
|
-
@xcconfig.frameworks.merge(consumer.frameworks);
|
67
|
-
@xcconfig.weak_frameworks.merge(consumer.weak_frameworks);
|
64
|
+
add_spec_build_settings_to_xcconfig(consumer, @xcconfig)
|
68
65
|
end
|
69
66
|
|
70
67
|
@xcconfig
|
@@ -124,6 +121,63 @@ module Pod
|
|
124
121
|
def quote(strings)
|
125
122
|
strings.sort.map { |s| %W|"#{s}"| }.join(" ")
|
126
123
|
end
|
124
|
+
|
125
|
+
# Configures the given Xcconfig according to the build settings of the
|
126
|
+
# given Specification.
|
127
|
+
#
|
128
|
+
# @param [Specification::Consumer] consumer
|
129
|
+
# The consumer of the specification.
|
130
|
+
#
|
131
|
+
# @param [Xcodeproj::Config] xcconfig
|
132
|
+
# The xcconfig to edit.
|
133
|
+
#
|
134
|
+
# @return [void]
|
135
|
+
#
|
136
|
+
def add_spec_build_settings_to_xcconfig(consumer, xcconfig)
|
137
|
+
xcconfig.merge!(consumer.xcconfig)
|
138
|
+
xcconfig.libraries.merge(consumer.libraries)
|
139
|
+
xcconfig.frameworks.merge(consumer.frameworks)
|
140
|
+
xcconfig.weak_frameworks.merge(consumer.weak_frameworks)
|
141
|
+
add_developers_frameworks_if_needed(consumer, xcconfig)
|
142
|
+
end
|
143
|
+
|
144
|
+
# @return [Array<String>] The search paths for the developer frameworks.
|
145
|
+
#
|
146
|
+
# @todo Inheritance should be properly handled in Xcconfigs.
|
147
|
+
#
|
148
|
+
DEVELOPER_FRAMEWORKS_SEARCH_PATHS = [
|
149
|
+
'"$(inherited)"',
|
150
|
+
'"$(SDKROOT)/Developer/Library/Frameworks"',
|
151
|
+
'"$(DEVELOPER_LIBRARY_DIR)/Frameworks"'
|
152
|
+
]
|
153
|
+
|
154
|
+
# Adds the search paths of the developer frameworks to the specification
|
155
|
+
# if needed. This is done because the `SenTestingKit` requires them and
|
156
|
+
# adding them to each specification which requires it is repetitive and
|
157
|
+
# error prone.
|
158
|
+
#
|
159
|
+
# @param [Specification::Consumer] consumer
|
160
|
+
# The consumer of the specification.
|
161
|
+
#
|
162
|
+
# @param [Xcodeproj::Config] xcconfig
|
163
|
+
# The xcconfig to edit.
|
164
|
+
#
|
165
|
+
# @return [void]
|
166
|
+
#
|
167
|
+
def add_developers_frameworks_if_needed(consumer, xcconfig)
|
168
|
+
if xcconfig.frameworks.include?('SenTestingKit')
|
169
|
+
search_paths = xcconfig.attributes['FRAMEWORK_SEARCH_PATHS'] ||= ''
|
170
|
+
DEVELOPER_FRAMEWORKS_SEARCH_PATHS.each do |search_path|
|
171
|
+
unless search_paths.include?(search_path)
|
172
|
+
search_paths << ' ' unless search_paths.empty?
|
173
|
+
search_paths << search_path
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
#-----------------------------------------------------------------------#
|
180
|
+
|
127
181
|
end
|
128
182
|
end
|
129
183
|
end
|
@@ -179,18 +179,19 @@ module Pod
|
|
179
179
|
user_project = Xcodeproj::Project.new(project_path)
|
180
180
|
targets = compute_user_project_targets(target_definition, user_project)
|
181
181
|
|
182
|
-
lib.user_project_path
|
183
|
-
lib.
|
182
|
+
lib.user_project_path = project_path
|
183
|
+
lib.client_root = project_path.dirname
|
184
|
+
lib.user_target_uuids = targets.map(&:uuid)
|
184
185
|
lib.user_build_configurations = compute_user_build_configurations(target_definition, targets)
|
185
|
-
lib.platform
|
186
|
+
lib.platform = compute_platform_for_target_definition(target_definition, targets)
|
186
187
|
else
|
187
188
|
unless target_definition.platform
|
188
189
|
raise Informative, "It is necessary to specify the platform in the Podfile if not integrating."
|
189
190
|
end
|
190
|
-
lib.
|
191
|
-
lib.user_target_uuids
|
191
|
+
lib.client_root = config.installation_root
|
192
|
+
lib.user_target_uuids = []
|
192
193
|
lib.user_build_configurations = {}
|
193
|
-
lib.platform
|
194
|
+
lib.platform = target_definition.platform
|
194
195
|
end
|
195
196
|
libraries << lib
|
196
197
|
end
|
@@ -72,9 +72,6 @@ module Pod
|
|
72
72
|
if library.platform.requires_legacy_ios_archs?
|
73
73
|
settings['ARCHS'] = "armv6 armv7"
|
74
74
|
end
|
75
|
-
if target_definition.inhibit_all_warnings?
|
76
|
-
settings['GCC_WARN_INHIBIT_ALL_WARNINGS'] = 'YES'
|
77
|
-
end
|
78
75
|
|
79
76
|
@target.build_settings('Debug').merge!(settings)
|
80
77
|
@target.build_settings('Release').merge!(settings)
|
@@ -362,7 +359,10 @@ module Pod
|
|
362
359
|
flags << '-DOS_OBJECT_USE_OBJC=0'
|
363
360
|
end
|
364
361
|
end
|
365
|
-
|
362
|
+
if target_definition.inhibits_warnings_for_pod?(consumer.spec.root.name)
|
363
|
+
flags << '-w -Xanalyzer -analyzer-disable-checker'
|
364
|
+
end
|
365
|
+
flags * " "
|
366
366
|
end
|
367
367
|
|
368
368
|
#-----------------------------------------------------------------------#
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'active_support'
|
2
|
+
|
1
3
|
module Pod
|
2
4
|
class Installer
|
3
5
|
class UserProjectIntegrator
|
@@ -29,6 +31,7 @@ module Pod
|
|
29
31
|
add_xcconfig_base_configuration
|
30
32
|
add_pods_library
|
31
33
|
add_copy_resources_script_phase
|
34
|
+
add_check_manifest_lock_script_phase
|
32
35
|
save_user_project
|
33
36
|
end
|
34
37
|
end
|
@@ -129,6 +132,32 @@ module Pod
|
|
129
132
|
end
|
130
133
|
end
|
131
134
|
|
135
|
+
# Adds a shell script build phase responsible for checking if the Pods
|
136
|
+
# locked in the Pods/Manifest.lock file are in sync with the Pods defined
|
137
|
+
# in the Podfile.lock.
|
138
|
+
#
|
139
|
+
# @note The build phase is appended to the front because to fail
|
140
|
+
# fast.
|
141
|
+
#
|
142
|
+
# @return [void]
|
143
|
+
#
|
144
|
+
def add_check_manifest_lock_script_phase
|
145
|
+
targets.each do |target|
|
146
|
+
phase = target.project.new(Xcodeproj::Project::Object::PBXShellScriptBuildPhase)
|
147
|
+
target.build_phases.unshift(phase)
|
148
|
+
phase.name = 'Check Pods Manifest.lock'
|
149
|
+
phase.shell_script = <<-EOS.strip_heredoc
|
150
|
+
diff "${PODS_ROOT}/../Podfile.lock" "${PODS_ROOT}/Manifest.lock" > /dev/null
|
151
|
+
if [[ $? != 0 ]] ; then
|
152
|
+
cat << EOM
|
153
|
+
error: The sanbox is not in sync with the Podfile.lock. Run 'pod install'.
|
154
|
+
EOM
|
155
|
+
exit 1
|
156
|
+
fi
|
157
|
+
EOS
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
132
161
|
# Saves the changes to the user project to the disk.
|
133
162
|
#
|
134
163
|
# @return [void]
|
data/lib/cocoapods/library.rb
CHANGED
@@ -53,6 +53,13 @@ module Pod
|
|
53
53
|
#
|
54
54
|
attr_accessor :support_files_root
|
55
55
|
|
56
|
+
# @return [Pathname] the folder where the client is stored used for
|
57
|
+
# computing the relative paths. If integrating it should be the
|
58
|
+
# folder where the user project is stored, otherwise it should
|
59
|
+
# be the installation root.
|
60
|
+
#
|
61
|
+
attr_accessor :client_root
|
62
|
+
|
56
63
|
# @return [Pathname] the path of the user project that this library will
|
57
64
|
# integrate as identified by the analyzer.
|
58
65
|
#
|
@@ -157,7 +164,7 @@ module Pod
|
|
157
164
|
# variable of the user's project.
|
158
165
|
#
|
159
166
|
def relative_pods_root
|
160
|
-
"${SRCROOT}/#{support_files_root.relative_path_from(
|
167
|
+
"${SRCROOT}/#{support_files_root.relative_path_from(client_root)}"
|
161
168
|
end
|
162
169
|
|
163
170
|
# @return [String] the path of the xcconfig file relative to the root of
|
@@ -189,7 +196,7 @@ module Pod
|
|
189
196
|
# @return [String] the computed path.
|
190
197
|
#
|
191
198
|
def relative_to_srcroot(path)
|
192
|
-
path.relative_path_from(
|
199
|
+
path.relative_path_from(client_root).to_s
|
193
200
|
end
|
194
201
|
end
|
195
202
|
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.
|
4
|
+
version: 0.18.0
|
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: 2013-04-
|
12
|
+
date: 2013-04-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: cocoapods-core
|
@@ -17,14 +17,14 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - '='
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 0.
|
20
|
+
version: 0.18.0
|
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.
|
27
|
+
version: 0.18.0
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: claide
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -59,14 +59,14 @@ dependencies:
|
|
59
59
|
requirements:
|
60
60
|
- - ~>
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: 0.5.
|
62
|
+
version: 0.5.5
|
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
|
-
version: 0.5.
|
69
|
+
version: 0.5.5
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: faraday
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|