cocoapods 0.21.0 → 0.22.0
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 +47 -0
- data/lib/cocoapods.rb +0 -19
- data/lib/cocoapods/command.rb +4 -3
- data/lib/cocoapods/command/lib.rb +152 -0
- data/lib/cocoapods/command/list.rb +1 -1
- data/lib/cocoapods/command/search.rb +2 -2
- data/lib/cocoapods/command/spec.rb +0 -3
- data/lib/cocoapods/config.rb +61 -2
- data/lib/cocoapods/external_sources.rb +1 -4
- data/lib/cocoapods/gem_version.rb +1 -1
- data/lib/cocoapods/generator/copy_resources_script.rb +5 -2
- data/lib/cocoapods/generator/xcconfig/aggregate_xcconfig.rb +0 -1
- data/lib/cocoapods/generator/xcconfig/private_pod_xcconfig.rb +0 -1
- data/lib/cocoapods/hooks/installer_representation.rb +2 -2
- data/lib/cocoapods/hooks/library_representation.rb +1 -0
- data/lib/cocoapods/installer.rb +44 -4
- data/lib/cocoapods/installer/analyzer/sandbox_analyzer.rb +8 -0
- data/lib/cocoapods/installer/pod_source_installer.rb +1 -6
- data/lib/cocoapods/installer/target_installer/aggregate_target_installer.rb +0 -3
- data/lib/cocoapods/installer/target_installer/pod_target_installer.rb +0 -3
- data/lib/cocoapods/installer/user_project_integrator/target_integrator.rb +2 -0
- data/lib/cocoapods/sources_manager.rb +1 -1
- data/lib/cocoapods/target.rb +1 -1
- data/lib/cocoapods/target/aggregate_target.rb +9 -2
- data/lib/cocoapods/target/pod_target.rb +9 -0
- data/lib/cocoapods/validator.rb +1 -1
- metadata +49 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e1f552882d2489715f3154877683645345841303
|
4
|
+
data.tar.gz: f16fc98973864b454debaa5ed50d8272b075377b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e16713b34307e47f67d139a3e7de88a2e00dd9f72bed30bc2e33535a2940fbd05f321b0a8e9f2cab934b22aea5132cb679d6805e59f42e17dddbc9ed3b0623b9
|
7
|
+
data.tar.gz: eca230d41a659af15dc15966008a1004b6502398a3a14529463c4c8ba3afca0f83470f8972533873d0efa3cca25e7f449535e521ff0f6d5e49a75dc48b4be817
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,53 @@
|
|
2
2
|
|
3
3
|
To install or update CocoaPods see this [guide](http://docs.cocoapods.org/guides/installing_cocoapods.html).
|
4
4
|
|
5
|
+
## 0.22.0
|
6
|
+
[CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.21.0...0.22.0)
|
7
|
+
• [cocoapods-core](https://github.com/CocoaPods/Core/compare/0.21.0...0.22.0)
|
8
|
+
• [Xcodeproj](https://github.com/CocoaPods/Xcodeproj/compare/0.7.1...0.8.0)
|
9
|
+
|
10
|
+
###### Enhancements
|
11
|
+
|
12
|
+
* Added the `pod lib create` subcommand which allows to create a new Pod
|
13
|
+
adhering to the best practices. The template is still a bit primitive
|
14
|
+
and we encourage users to provide feedback by submitting patches and issues
|
15
|
+
to https://github.com/CocoaPods/CocoaPods.
|
16
|
+
[#850](https://github.com/CocoaPods/CocoaPods/issues/850)
|
17
|
+
|
18
|
+
* Added the `pod lib lint` subcommand which allows to lint the Pod stored
|
19
|
+
in the working directory (a pod spec in the root is needed).
|
20
|
+
[#850](https://github.com/CocoaPods/CocoaPods/issues/850)
|
21
|
+
|
22
|
+
* The dependencies of the targets of the Pods project are now made explicit.
|
23
|
+
[#1165](https://github.com/CocoaPods/CocoaPods/issues/1165)
|
24
|
+
|
25
|
+
* The size of the cache used for the git repos is now configurable. For more
|
26
|
+
details see
|
27
|
+
https://github.com/CocoaPods/CocoaPods/blob/master/lib/cocoapods/config.rb#L7-L25
|
28
|
+
[#1159](https://github.com/CocoaPods/CocoaPods/issues/1159)
|
29
|
+
|
30
|
+
* The copy resources shell script now aborts if any error occurs.
|
31
|
+
[#1098](https://github.com/CocoaPods/CocoaPods/issues/1098)
|
32
|
+
|
33
|
+
* The output of shell script build phases no longer includes environment
|
34
|
+
variables to reduce noise.
|
35
|
+
[#1122](https://github.com/CocoaPods/CocoaPods/issues/1122)
|
36
|
+
|
37
|
+
* CocoaPods no longer sets the deprecated `ALWAYS_SEARCH_USER_PATHS` build
|
38
|
+
setting.
|
39
|
+
|
40
|
+
###### Bug fixes
|
41
|
+
|
42
|
+
* Pods whose head state changes now are correctly detected and reinstalled.
|
43
|
+
[#1160](https://github.com/CocoaPods/CocoaPods/issues/1160)
|
44
|
+
|
45
|
+
* Fixed the library reppresentation of the hooks which caused issues with the
|
46
|
+
`#copy_resources_script_path` method.
|
47
|
+
[#1157](https://github.com/CocoaPods/CocoaPods/issues/1157)
|
48
|
+
|
49
|
+
* Frameworks symlinks are not properly preserved by the copy resources script.
|
50
|
+
Thanks to Thomas Dohmke (ashtom) for the fix.
|
51
|
+
[#1063](https://github.com/CocoaPods/CocoaPods/issues/1063)
|
5
52
|
|
6
53
|
## 0.21.0
|
7
54
|
[CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.21.0.rc1...0.21.0)
|
data/lib/cocoapods.rb
CHANGED
@@ -18,25 +18,6 @@ module Pod
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
# @return [Pathname] The directory where CocoaPods caches the downloads.
|
22
|
-
#
|
23
|
-
# @todo The {Installer::PodSourceInstaller} and the #{ExternalSources}
|
24
|
-
# classes build and configure the downloader from scratch.
|
25
|
-
#
|
26
|
-
CACHE_ROOT = Pathname.new(File.join(ENV['HOME'], 'Library/Caches/CocoaPods'))
|
27
|
-
CACHE_ROOT.mkpath unless CACHE_ROOT.exist?
|
28
|
-
|
29
|
-
# @return [Fixnum] The maximum size for the cache expressed in Mb.
|
30
|
-
#
|
31
|
-
# @todo The {Installer::PodSourceInstaller} and the #{ExternalSources}
|
32
|
-
# classes build and configure the downloader from scratch.
|
33
|
-
#
|
34
|
-
MAX_CACHE_SIZE = 500
|
35
|
-
|
36
|
-
# @return [Pathname] The file to use a cache of the statistics provider.
|
37
|
-
#
|
38
|
-
STATISTICS_CACHE_FILE = CACHE_ROOT + 'statistics.yml'
|
39
|
-
|
40
21
|
autoload :Command, 'cocoapods/command'
|
41
22
|
autoload :Executable, 'cocoapods/executable'
|
42
23
|
autoload :ExternalSources, 'cocoapods/external_sources'
|
data/lib/cocoapods/command.rb
CHANGED
@@ -8,17 +8,18 @@ module Pod
|
|
8
8
|
|
9
9
|
class Command < CLAide::Command
|
10
10
|
|
11
|
+
require 'cocoapods/command/help'
|
12
|
+
require 'cocoapods/command/inter_process_communication'
|
13
|
+
require 'cocoapods/command/lib'
|
11
14
|
require 'cocoapods/command/list'
|
12
15
|
require 'cocoapods/command/outdated'
|
16
|
+
require 'cocoapods/command/podfile_info'
|
13
17
|
require 'cocoapods/command/project'
|
14
18
|
require 'cocoapods/command/push'
|
15
19
|
require 'cocoapods/command/repo'
|
16
20
|
require 'cocoapods/command/search'
|
17
21
|
require 'cocoapods/command/setup'
|
18
22
|
require 'cocoapods/command/spec'
|
19
|
-
require 'cocoapods/command/help'
|
20
|
-
require 'cocoapods/command/inter_process_communication'
|
21
|
-
require 'cocoapods/command/podfile_info'
|
22
23
|
|
23
24
|
self.abstract_command = true
|
24
25
|
self.default_subcommand = 'install'
|
@@ -0,0 +1,152 @@
|
|
1
|
+
module Pod
|
2
|
+
class Command
|
3
|
+
class Lib < Command
|
4
|
+
self.abstract_command = true
|
5
|
+
self.summary = 'Develop pods'
|
6
|
+
|
7
|
+
#-----------------------------------------------------------------------#
|
8
|
+
|
9
|
+
class Create < Lib
|
10
|
+
self.summary = 'Creates a new Pod'
|
11
|
+
|
12
|
+
self.description = <<-DESC
|
13
|
+
Creates a new Pod with the given name from the template in the working directory.
|
14
|
+
DESC
|
15
|
+
|
16
|
+
self.arguments = '[NAME]'
|
17
|
+
|
18
|
+
def initialize(argv)
|
19
|
+
@name = argv.shift_argument
|
20
|
+
super
|
21
|
+
end
|
22
|
+
|
23
|
+
def validate!
|
24
|
+
super
|
25
|
+
help! "A name for the Pod is required." unless @name
|
26
|
+
end
|
27
|
+
|
28
|
+
def run
|
29
|
+
clone_template
|
30
|
+
configure_template
|
31
|
+
print_info
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
#----------------------------------------#
|
37
|
+
|
38
|
+
# !@group Private helpers
|
39
|
+
|
40
|
+
extend Executable
|
41
|
+
executable :git
|
42
|
+
executable :ruby
|
43
|
+
|
44
|
+
TEMPLATE_REPO = "https://github.com/CocoaPods/CocoaPods.git"
|
45
|
+
TEMPLATE_INFO_URL = "https://github.com/CocoaPods/CocoaPods"
|
46
|
+
|
47
|
+
# Clones the template from the remote in the working directory using
|
48
|
+
# the name of the Pod.
|
49
|
+
#
|
50
|
+
# @return [void]
|
51
|
+
#
|
52
|
+
def clone_template
|
53
|
+
UI.section("Creating `#{@name}` Pod") do
|
54
|
+
git!"clone '#{TEMPLATE_REPO}' #{@name}"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
# Runs the template configuration utilities.
|
59
|
+
#
|
60
|
+
# @return [void]
|
61
|
+
#
|
62
|
+
def configure_template
|
63
|
+
UI.section("Configuring template") do
|
64
|
+
Dir.chdir(@name) do
|
65
|
+
ruby! "_CONFIGURE.rb #{@name}"
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
# Runs the template configuration utilities.
|
71
|
+
#
|
72
|
+
# @return [void]
|
73
|
+
#
|
74
|
+
def print_info
|
75
|
+
UI.puts "\nTo learn more about the template see `#{TEMPLATE_INFO_URL}`."
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
|
80
|
+
#-----------------------------------------------------------------------#
|
81
|
+
|
82
|
+
class Lint < Lib
|
83
|
+
self.summary = 'Validates a Pod'
|
84
|
+
|
85
|
+
self.description = <<-DESC
|
86
|
+
Validates the Pod using the files in the working directory.
|
87
|
+
DESC
|
88
|
+
|
89
|
+
def self.options
|
90
|
+
[ ["--quick", "Lint skips checks that would require to download and build the spec"],
|
91
|
+
["--only-errors", "Lint validates even if warnings are present"],
|
92
|
+
["--no-clean", "Lint leaves the build directory intact for inspection"] ].concat(super)
|
93
|
+
end
|
94
|
+
|
95
|
+
def initialize(argv)
|
96
|
+
@quick = argv.flag?('quick')
|
97
|
+
@only_errors = argv.flag?('only-errors')
|
98
|
+
@clean = argv.flag?('clean', true)
|
99
|
+
super
|
100
|
+
end
|
101
|
+
|
102
|
+
def validate!
|
103
|
+
super
|
104
|
+
end
|
105
|
+
|
106
|
+
def run
|
107
|
+
UI.puts
|
108
|
+
validator = Validator.new(podspec_to_lint)
|
109
|
+
validator.local = true
|
110
|
+
validator.quick = @quick
|
111
|
+
validator.no_clean = !@clean
|
112
|
+
validator.only_errors = @only_errors
|
113
|
+
validator.validate
|
114
|
+
|
115
|
+
if validator.validated?
|
116
|
+
UI.puts "#{validator.spec.name} passed validation.".green
|
117
|
+
else
|
118
|
+
raise Informative, "#{validator.spec.name} did not pass validation."
|
119
|
+
end
|
120
|
+
|
121
|
+
unless @clean
|
122
|
+
UI.puts "Pods project available at `#{validator.validation_dir}/Pods/Pods.xcodeproj` for inspection."
|
123
|
+
UI.puts
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
private
|
128
|
+
|
129
|
+
#----------------------------------------#
|
130
|
+
|
131
|
+
# !@group Private helpers
|
132
|
+
|
133
|
+
# @return [Pathname] The path of the podspec found in the current
|
134
|
+
# working directory.
|
135
|
+
#
|
136
|
+
# @raise If no podspec is found.
|
137
|
+
# @raise If multiple podspecs are found.
|
138
|
+
#
|
139
|
+
def podspec_to_lint
|
140
|
+
podspecs = Pathname.glob(Pathname.pwd + '*.podspec{.yaml,}')
|
141
|
+
raise Informative, "Unable to find a podspec in the working directory" if podspecs.count.zero?
|
142
|
+
raise Informative, "Multiple podspecs detected in the working directory" if podspecs.count > 1
|
143
|
+
podspecs.first
|
144
|
+
end
|
145
|
+
|
146
|
+
end
|
147
|
+
|
148
|
+
#-----------------------------------------------------------------------#
|
149
|
+
|
150
|
+
end
|
151
|
+
end
|
152
|
+
end
|
@@ -48,7 +48,7 @@ module Pod
|
|
48
48
|
dates, groups = {}, {}
|
49
49
|
days.each {|d| dates[d] = Time.now - 60 * 60 * 24 * d}
|
50
50
|
sets = SourcesManager.all_sets
|
51
|
-
statistics_provider =
|
51
|
+
statistics_provider = Config.instance.spec_statistics_provider
|
52
52
|
creation_dates = statistics_provider.creation_dates(sets)
|
53
53
|
|
54
54
|
sets.each do |set|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Pod
|
2
2
|
class Command
|
3
3
|
class Search < Command
|
4
|
-
self.summary = '
|
4
|
+
self.summary = 'Searches for pods'
|
5
5
|
|
6
6
|
self.description = <<-DESC
|
7
7
|
Searches for pods, ignoring case, whose name matches `QUERY'. If the
|
@@ -43,7 +43,7 @@ module Pod
|
|
43
43
|
sets.reject!{ |set| !set.specification.available_platforms.map(&:name).include?(:osx) }
|
44
44
|
end
|
45
45
|
|
46
|
-
statistics_provider =
|
46
|
+
statistics_provider = Config.instance.spec_statistics_provider
|
47
47
|
sets.each do |set|
|
48
48
|
begin
|
49
49
|
if @stats
|
@@ -60,14 +60,12 @@ module Pod
|
|
60
60
|
|
61
61
|
def self.options
|
62
62
|
[ ["--quick", "Lint skips checks that would require to download and build the spec"],
|
63
|
-
["--local", "Lint a podspec against the local files contained in its directory"],
|
64
63
|
["--only-errors", "Lint validates even if warnings are present"],
|
65
64
|
["--no-clean", "Lint leaves the build directory intact for inspection"] ].concat(super)
|
66
65
|
end
|
67
66
|
|
68
67
|
def initialize(argv)
|
69
68
|
@quick = argv.flag?('quick')
|
70
|
-
@local = argv.flag?('local')
|
71
69
|
@only_errors = argv.flag?('only-errors')
|
72
70
|
@clean = argv.flag?('clean', true)
|
73
71
|
@podspecs_paths = argv.arguments!
|
@@ -80,7 +78,6 @@ module Pod
|
|
80
78
|
podspecs_to_lint.each do |podspec|
|
81
79
|
validator = Validator.new(podspec)
|
82
80
|
validator.quick = @quick
|
83
|
-
validator.local = @local
|
84
81
|
validator.no_clean = !@clean
|
85
82
|
validator.only_errors = @only_errors
|
86
83
|
validator.validate
|
data/lib/cocoapods/config.rb
CHANGED
@@ -17,11 +17,14 @@ module Pod
|
|
17
17
|
:verbose => false,
|
18
18
|
:silent => false,
|
19
19
|
:skip_repo_update => false,
|
20
|
-
:aggressive_cache => false,
|
21
20
|
|
22
21
|
:clean => true,
|
23
22
|
:integrate_targets => true,
|
24
23
|
:new_version_message => true,
|
24
|
+
|
25
|
+
:cache_root => Pathname.new(File.join(ENV['HOME'], 'Library/Caches/CocoaPods')),
|
26
|
+
:max_cache_size => 500,
|
27
|
+
:aggressive_cache => false,
|
25
28
|
}
|
26
29
|
|
27
30
|
public
|
@@ -68,6 +71,26 @@ module Pod
|
|
68
71
|
attr_accessor :skip_repo_update
|
69
72
|
alias_method :skip_repo_update?, :skip_repo_update
|
70
73
|
|
74
|
+
public
|
75
|
+
|
76
|
+
#-------------------------------------------------------------------------#
|
77
|
+
|
78
|
+
# @!group Cache
|
79
|
+
|
80
|
+
# @return [Fixnum] The maximum size for the cache expressed in Mb.
|
81
|
+
#
|
82
|
+
attr_accessor :max_cache_size
|
83
|
+
|
84
|
+
# @return [Pathname] The directory where CocoaPods should cache remote data
|
85
|
+
# and other expensive to compute information.
|
86
|
+
#
|
87
|
+
attr_accessor :cache_root
|
88
|
+
|
89
|
+
def cache_root
|
90
|
+
@cache_root.mkpath unless @cache_root.exist?
|
91
|
+
@cache_root
|
92
|
+
end
|
93
|
+
|
71
94
|
# Allows to set whether the downloader should use more aggressive caching
|
72
95
|
# options.
|
73
96
|
#
|
@@ -80,7 +103,7 @@ module Pod
|
|
80
103
|
# options.
|
81
104
|
#
|
82
105
|
def aggressive_cache?
|
83
|
-
@aggressive_cache || (ENV['CP_AGGRESSIVE_CACHE']
|
106
|
+
@aggressive_cache || (ENV['CP_AGGRESSIVE_CACHE'] == 'TRUE')
|
84
107
|
end
|
85
108
|
|
86
109
|
public
|
@@ -193,6 +216,42 @@ module Pod
|
|
193
216
|
@lockfile_path ||= installation_root + 'Podfile.lock'
|
194
217
|
end
|
195
218
|
|
219
|
+
# @return [Pathname] The file to use a cache of the statistics provider.
|
220
|
+
#
|
221
|
+
def statistics_cache_file
|
222
|
+
cache_root + 'statistics.yml'
|
223
|
+
end
|
224
|
+
|
225
|
+
# @return [Pathname] The file to use to cache the search data.
|
226
|
+
#
|
227
|
+
def search_index_file
|
228
|
+
cache_root + 'search_index.yaml'
|
229
|
+
end
|
230
|
+
|
231
|
+
public
|
232
|
+
|
233
|
+
#-------------------------------------------------------------------------#
|
234
|
+
|
235
|
+
# @!group Dependency Injection
|
236
|
+
|
237
|
+
# @return [Downloader] The downloader to use for the retrieving remote
|
238
|
+
# source.
|
239
|
+
#
|
240
|
+
def downloader(target_path, options)
|
241
|
+
downloader = Downloader.for_target(target_path, options)
|
242
|
+
downloader.cache_root = cache_root
|
243
|
+
downloader.max_cache_size = max_cache_size
|
244
|
+
downloader.aggressive_cache = aggressive_cache?
|
245
|
+
downloader
|
246
|
+
end
|
247
|
+
|
248
|
+
# @return [Specification::Set::Statistics] The statistic provider to use
|
249
|
+
# for specifications.
|
250
|
+
#
|
251
|
+
def spec_statistics_provider
|
252
|
+
Specification::Set::Statistics.new(statistics_cache_file)
|
253
|
+
end
|
254
|
+
|
196
255
|
private
|
197
256
|
|
198
257
|
#-------------------------------------------------------------------------#
|
@@ -136,10 +136,7 @@ module Pod
|
|
136
136
|
UI.titled_section("Pre-downloading: `#{name}` #{description}", { :verbose_prefix => "-> " }) do
|
137
137
|
target = sandbox.root + name
|
138
138
|
target.rmtree if target.exist?
|
139
|
-
downloader =
|
140
|
-
downloader.cache_root = CACHE_ROOT.to_s
|
141
|
-
downloader.max_cache_size = MAX_CACHE_SIZE
|
142
|
-
downloader.aggressive_cache = false
|
139
|
+
downloader = Config.instance.downloader(target, params)
|
143
140
|
downloader.download
|
144
141
|
store_podspec(sandbox, target + "#{name}.podspec")
|
145
142
|
sandbox.store_pre_downloaded_pod(name)
|
@@ -79,6 +79,7 @@ module Pod
|
|
79
79
|
|
80
80
|
INSTALL_RESOURCES_FUCTION = <<EOS
|
81
81
|
#!/bin/sh
|
82
|
+
set -e
|
82
83
|
|
83
84
|
RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
|
84
85
|
> "$RESOURCES_TO_COPY"
|
@@ -95,8 +96,10 @@ install_resource()
|
|
95
96
|
ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \\"$1\\" .xib`.nib" "${PODS_ROOT}/$1" --sdk "${SDKROOT}"
|
96
97
|
;;
|
97
98
|
*.framework)
|
98
|
-
echo "
|
99
|
-
|
99
|
+
echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
100
|
+
mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
101
|
+
echo "cp -fpR ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
102
|
+
cp -fpR "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
100
103
|
;;
|
101
104
|
*.xcdatamodeld)
|
102
105
|
echo "xcrun momc ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename $1 .xcdatamodeld`.momd"
|
@@ -15,7 +15,6 @@ module Pod
|
|
15
15
|
#
|
16
16
|
def generate
|
17
17
|
config = {
|
18
|
-
'ALWAYS_SEARCH_USER_PATHS' => 'YES',
|
19
18
|
'OTHER_LDFLAGS' => default_ld_flags,
|
20
19
|
'PODS_ROOT' => '${SRCROOT}',
|
21
20
|
'HEADER_SEARCH_PATHS' => quote(target.build_headers.search_paths) + ' ' + quote(sandbox.public_headers.search_paths),
|
@@ -59,8 +59,8 @@ module Pod
|
|
59
59
|
#
|
60
60
|
def specs_by_lib
|
61
61
|
result = {}
|
62
|
-
installer.
|
63
|
-
result[installer.library_rep(
|
62
|
+
installer.aggregate_targets.each do |aggregate_target|
|
63
|
+
result[installer.library_rep(aggregate_target)] = aggregate_target.specs
|
64
64
|
end
|
65
65
|
result
|
66
66
|
end
|
data/lib/cocoapods/installer.rb
CHANGED
@@ -111,6 +111,7 @@ module Pod
|
|
111
111
|
prepare_pods_project
|
112
112
|
install_file_references
|
113
113
|
install_libraries
|
114
|
+
set_target_dependencies
|
114
115
|
link_aggregate_target
|
115
116
|
run_post_install_hooks
|
116
117
|
write_pod_project
|
@@ -332,6 +333,43 @@ module Pod
|
|
332
333
|
end
|
333
334
|
end
|
334
335
|
|
336
|
+
def set_target_dependencies
|
337
|
+
aggregate_targets.each do |aggregate_target|
|
338
|
+
aggregate_target.pod_targets.each do |pod_target|
|
339
|
+
add_dependency(aggregate_target, pod_target)
|
340
|
+
pod_target.dependencies.each do |dep|
|
341
|
+
|
342
|
+
pod_dependency_target = aggregate_target.pod_targets.find { |target| target.root_spec.name == dep }
|
343
|
+
add_dependency(pod_target, pod_dependency_target)
|
344
|
+
end
|
345
|
+
end
|
346
|
+
end
|
347
|
+
end
|
348
|
+
|
349
|
+
# TODO: tmp - move
|
350
|
+
#
|
351
|
+
def add_dependency(dependent_target, dependency_target)
|
352
|
+
container_proxy = pods_project.new(Xcodeproj::Project::PBXContainerItemProxy)
|
353
|
+
# container_proxy.container_portal = '224D2C1BCDE44D8F9B674AD5'
|
354
|
+
container_proxy.proxy_type = '1'
|
355
|
+
# container_proxy.remote_global_id_string = 'F8D3306CA0564CA3861B2D4E'
|
356
|
+
# container_proxy.remote_info = 'Pods-AFHTTPRequestOperationLogger'
|
357
|
+
|
358
|
+
|
359
|
+
# reference_proxy = pods_project.new(Xcodeproj::Project::PBXReferenceProxy)
|
360
|
+
# reference_proxy.path =
|
361
|
+
# reference_proxy.file_type =
|
362
|
+
# reference_proxy.remote_ref = container_proxy
|
363
|
+
# reference_proxy.source_tree = BUILT_PRODUCTS_DIR
|
364
|
+
|
365
|
+
dependency = pods_project.new(Xcodeproj::Project::PBXTargetDependency)
|
366
|
+
dependency.target = dependency_target.target
|
367
|
+
# dependency.targetProxy = container_proxy
|
368
|
+
|
369
|
+
dependent_target.target.dependencies << dependency
|
370
|
+
end
|
371
|
+
|
372
|
+
|
335
373
|
# Links the aggregate targets with all the dependent libraries.
|
336
374
|
#
|
337
375
|
# @note This is run in the integration step to ensure that targets
|
@@ -547,14 +585,14 @@ module Pod
|
|
547
585
|
|
548
586
|
# @return [LibraryRepresentation]
|
549
587
|
#
|
550
|
-
def library_rep(
|
551
|
-
Hooks::LibraryRepresentation.new(sandbox,
|
588
|
+
def library_rep(aggregate_target)
|
589
|
+
Hooks::LibraryRepresentation.new(sandbox, aggregate_target)
|
552
590
|
end
|
553
591
|
|
554
592
|
# @return [Array<LibraryRepresentation>]
|
555
593
|
#
|
556
594
|
def library_reps
|
557
|
-
@library_reps ||=
|
595
|
+
@library_reps ||= aggregate_targets.map { |lib| library_rep(lib) }
|
558
596
|
end
|
559
597
|
|
560
598
|
# @return [Array<PodRepresentation>]
|
@@ -571,7 +609,9 @@ module Pod
|
|
571
609
|
# @return [Array<Library>] The library.
|
572
610
|
#
|
573
611
|
def libraries_using_spec(spec)
|
574
|
-
|
612
|
+
aggregate_targets.select do |aggregate_target|
|
613
|
+
aggregate_target.pod_targets.any? { |pod_target| pod_target.specs.include?(spec) }
|
614
|
+
end
|
575
615
|
end
|
576
616
|
|
577
617
|
# @return [Array<Library>] The libraries generated by the installation
|
@@ -150,6 +150,7 @@ module Pod
|
|
150
150
|
return true if resolved_spec_names(pod) != sandbox_spec_names(pod)
|
151
151
|
return true if sandbox.predownloaded?(pod)
|
152
152
|
return true if folder_empty?(pod)
|
153
|
+
return true if sandbox.head_pod?(pod) != sandbox_head_version?(pod)
|
153
154
|
if update_mode
|
154
155
|
return true if sandbox.head_pod?(pod)
|
155
156
|
end
|
@@ -235,6 +236,13 @@ module Pod
|
|
235
236
|
sandbox_manifest.checksum(pod)
|
236
237
|
end
|
237
238
|
|
239
|
+
# @return [Bool] Wether the Pod is installed in the sandbox is in head
|
240
|
+
# mode.
|
241
|
+
#
|
242
|
+
def sandbox_head_version?(pod)
|
243
|
+
sandbox_version(pod).head? == true
|
244
|
+
end
|
245
|
+
|
238
246
|
#--------------------------------------#
|
239
247
|
|
240
248
|
def folder_exist?(pod)
|
@@ -125,12 +125,7 @@ module Pod
|
|
125
125
|
# source.
|
126
126
|
#
|
127
127
|
def downloader
|
128
|
-
|
129
|
-
@downloader = Downloader.for_target(root, root_spec.source.dup)
|
130
|
-
@downloader.cache_root = CACHE_ROOT.to_s
|
131
|
-
@downloader.max_cache_size = MAX_CACHE_SIZE
|
132
|
-
@downloader.aggressive_cache = aggressive_cache?
|
133
|
-
@downloader
|
128
|
+
@downloader ||= Config.instance.downloader(root, root_spec.source.dup)
|
134
129
|
end
|
135
130
|
|
136
131
|
#-----------------------------------------------------------------------#
|
@@ -149,6 +149,7 @@ module Pod
|
|
149
149
|
native_target.new_shell_script_build_phase(phase_name)
|
150
150
|
path = target.copy_resources_script_relative_path
|
151
151
|
phase.shell_script = %{"#{path}"\n}
|
152
|
+
phase.show_env_vars_in_log = '0'
|
152
153
|
end
|
153
154
|
end
|
154
155
|
|
@@ -177,6 +178,7 @@ module Pod
|
|
177
178
|
exit 1
|
178
179
|
fi
|
179
180
|
EOS
|
181
|
+
phase.show_env_vars_in_log = '0'
|
180
182
|
end
|
181
183
|
end
|
182
184
|
|
data/lib/cocoapods/target.rb
CHANGED
@@ -38,7 +38,7 @@ module Pod
|
|
38
38
|
# @return [String] A string suitable for debugging.
|
39
39
|
#
|
40
40
|
def inspect
|
41
|
-
"<#{self.class} name=#{name}
|
41
|
+
"<#{self.class} name=#{name} >"
|
42
42
|
end
|
43
43
|
|
44
44
|
#-------------------------------------------------------------------------#
|
@@ -56,9 +56,16 @@ module Pod
|
|
56
56
|
#
|
57
57
|
attr_accessor :pod_targets
|
58
58
|
|
59
|
-
# @return [Array<
|
59
|
+
# @return [Array<Specification>] The specifications used by this aggregate target.
|
60
|
+
#
|
61
|
+
def specs
|
62
|
+
pod_targets.map(&:specs).flatten
|
63
|
+
end
|
64
|
+
|
65
|
+
# @return [Array<Specification::Consumer>] The consumers of the Pod.
|
66
|
+
#
|
60
67
|
def spec_consumers
|
61
|
-
|
68
|
+
specs.map { |spec| spec.consumer(platform) }
|
62
69
|
end
|
63
70
|
|
64
71
|
# @return [Pathname] The absolute path of acknowledgements file.
|
@@ -49,5 +49,14 @@ module Pod
|
|
49
49
|
specs.first.root
|
50
50
|
end
|
51
51
|
|
52
|
+
# @return [Array<String>] The names of the Pods on which this target
|
53
|
+
# depends.
|
54
|
+
#
|
55
|
+
def dependencies
|
56
|
+
specs.map do |spec|
|
57
|
+
spec.consumer(platform).dependencies.map { |dep| dep.name }
|
58
|
+
end.flatten
|
59
|
+
end
|
60
|
+
|
52
61
|
end
|
53
62
|
end
|
data/lib/cocoapods/validator.rb
CHANGED
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.22.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-07-
|
12
|
+
date: 2013-07-03 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.22.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.22.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.
|
62
|
+
version: 0.8.0
|
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.
|
69
|
+
version: 0.8.0
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: colored
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
@@ -168,6 +168,7 @@ extra_rdoc_files: []
|
|
168
168
|
files:
|
169
169
|
- lib/cocoapods/command/help.rb
|
170
170
|
- lib/cocoapods/command/inter_process_communication.rb
|
171
|
+
- lib/cocoapods/command/lib.rb
|
171
172
|
- lib/cocoapods/command/list.rb
|
172
173
|
- lib/cocoapods/command/outdated.rb
|
173
174
|
- lib/cocoapods/command/podfile_info.rb
|
@@ -236,20 +237,53 @@ post_install_message: |2+
|
|
236
237
|
|
237
238
|
CHANGELOG:
|
238
239
|
|
239
|
-
## 0.
|
240
|
-
[CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.21.0
|
241
|
-
• [cocoapods-core](https://github.com/CocoaPods/Core/compare/0.21.0
|
242
|
-
• [Xcodeproj](https://github.com/CocoaPods/Xcodeproj/compare/0.7.
|
240
|
+
## 0.22.0
|
241
|
+
[CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.21.0...0.22.0)
|
242
|
+
• [cocoapods-core](https://github.com/CocoaPods/Core/compare/0.21.0...0.22.0)
|
243
|
+
• [Xcodeproj](https://github.com/CocoaPods/Xcodeproj/compare/0.7.1...0.8.0)
|
243
244
|
|
244
|
-
######
|
245
|
+
###### Enhancements
|
246
|
+
|
247
|
+
* Added the `pod lib create` subcommand which allows to create a new Pod
|
248
|
+
adhering to the best practices. The template is still a bit primitive
|
249
|
+
and we encourage users to provide feedback by submitting patches and issues
|
250
|
+
to https://github.com/CocoaPods/CocoaPods.
|
251
|
+
[#850](https://github.com/CocoaPods/CocoaPods/issues/850)
|
252
|
+
|
253
|
+
* Added the `pod lib lint` subcommand which allows to lint the Pod stored
|
254
|
+
in the working directory (a pod spec in the root is needed).
|
255
|
+
[#850](https://github.com/CocoaPods/CocoaPods/issues/850)
|
256
|
+
|
257
|
+
* The dependencies of the targets of the Pods project are now made explicit.
|
258
|
+
[#1165](https://github.com/CocoaPods/CocoaPods/issues/1165)
|
259
|
+
|
260
|
+
* The size of the cache used for the git repos is now configurable. For more
|
261
|
+
details see
|
262
|
+
https://github.com/CocoaPods/CocoaPods/blob/master/lib/cocoapods/config.rb#L7-L25
|
263
|
+
[#1159](https://github.com/CocoaPods/CocoaPods/issues/1159)
|
245
264
|
|
246
|
-
*
|
247
|
-
[#
|
265
|
+
* The copy resources shell script now aborts if any error occurs.
|
266
|
+
[#1098](https://github.com/CocoaPods/CocoaPods/issues/1098)
|
267
|
+
|
268
|
+
* The output of shell script build phases no longer includes environment
|
269
|
+
variables to reduce noise.
|
270
|
+
[#1122](https://github.com/CocoaPods/CocoaPods/issues/1122)
|
271
|
+
|
272
|
+
* CocoaPods no longer sets the deprecated `ALWAYS_SEARCH_USER_PATHS` build
|
273
|
+
setting.
|
274
|
+
|
275
|
+
###### Bug fixes
|
248
276
|
|
249
|
-
*
|
250
|
-
[#
|
277
|
+
* Pods whose head state changes now are correctly detected and reinstalled.
|
278
|
+
[#1160](https://github.com/CocoaPods/CocoaPods/issues/1160)
|
251
279
|
|
280
|
+
* Fixed the library reppresentation of the hooks which caused issues with the
|
281
|
+
`#copy_resources_script_path` method.
|
282
|
+
[#1157](https://github.com/CocoaPods/CocoaPods/issues/1157)
|
252
283
|
|
284
|
+
* Frameworks symlinks are not properly preserved by the copy resources script.
|
285
|
+
Thanks to Thomas Dohmke (ashtom) for the fix.
|
286
|
+
[#1063](https://github.com/CocoaPods/CocoaPods/issues/1063)
|
253
287
|
|
254
288
|
rdoc_options: []
|
255
289
|
require_paths:
|