cocoapods 0.23.0 → 0.24.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 +71 -0
- data/LICENSE +2 -0
- data/lib/cocoapods.rb +1 -2
- data/lib/cocoapods/command.rb +1 -0
- data/lib/cocoapods/command/init.rb +90 -0
- data/lib/cocoapods/command/setup.rb +1 -1
- data/lib/cocoapods/command/spec.rb +1 -1
- data/lib/cocoapods/config.rb +26 -0
- data/lib/cocoapods/gem_version.rb +1 -1
- data/lib/cocoapods/generator/copy_resources_script.rb +2 -2
- data/lib/cocoapods/installer.rb +30 -7
- data/lib/cocoapods/installer/analyzer.rb +12 -2
- data/lib/cocoapods/installer/file_references_installer.rb +6 -10
- data/lib/cocoapods/installer/target_installer.rb +2 -9
- data/lib/cocoapods/installer/target_installer/aggregate_target_installer.rb +2 -2
- data/lib/cocoapods/installer/target_installer/pod_target_installer.rb +28 -7
- data/lib/cocoapods/installer/user_project_integrator/target_integrator.rb +3 -11
- data/lib/cocoapods/project.rb +117 -145
- data/lib/cocoapods/sandbox.rb +5 -5
- data/lib/cocoapods/user_interface.rb +24 -6
- metadata +50 -46
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 715b8dbbcd30e102cab744b29a1c7d2de026fdf5
|
4
|
+
data.tar.gz: f047dae069b1bc0cf5e8112f829e1e50b9f0e957
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b07a220e098bd9f7a9f8a73b672dacdbef5ea867602ba5fb234c02e7ae1b9b03eb25358c0fed78c8c2691fe49b4b155c788fcb62237758e7773d81f1584b65e8
|
7
|
+
data.tar.gz: eb7e3c4cb5a1bd97f0f39016ed5241f14743dec70fa5a6bcbeb8748a63094e3ef02a22d7eb1a94750a9f4ced3ee279ef3a0bc9854b8512fb53e6bae038904d56
|
data/CHANGELOG.md
CHANGED
@@ -4,8 +4,79 @@ To install or update CocoaPods see this [guide](http://docs.cocoapods.org/guides
|
|
4
4
|
|
5
5
|
## Master
|
6
6
|
|
7
|
+
|
8
|
+
## 0.24.0
|
9
|
+
|
10
|
+
###### Enhancements
|
11
|
+
[CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.22.3...0.23.0.rc1)
|
12
|
+
• [cocoapods-core](https://github.com/CocoaPods/Core/compare/0.22.3...0.23.0.rc1)
|
13
|
+
• [Xcodeproj](https://github.com/CocoaPods/Xcodeproj/compare/0.8.1...0.9.0)
|
14
|
+
• [cocoapods-downloader](https://github.com/CocoaPods/cocoapods-downloader/compare/0.1.1...0.1.2)
|
15
|
+
|
16
|
+
|
17
|
+
###### Enhancements
|
18
|
+
|
19
|
+
* Added `pod init` command which generates a Podfile according to the
|
20
|
+
targets of the project stored in the working directory and to the templates
|
21
|
+
stored in the `~/.cocoapods/templates` folder. Tow templates are supported:
|
22
|
+
- the `Podfile.default` template for regular targets.
|
23
|
+
- and the `Podfile.test` template for test targets.
|
24
|
+
|
25
|
+
[Ian Ynda-Hummel](https://github.com/ianyh)
|
26
|
+
[#1106](https://github.com/CocoaPods/CocoaPods/issues/1106)
|
27
|
+
[#1045](https://github.com/CocoaPods/CocoaPods/issues/1045)
|
28
|
+
|
29
|
+
* CocoaPods will now leverage the [xcproj](https://github.com/0xced/xcproj)
|
30
|
+
command line tool if available in the path of the user to touch saved
|
31
|
+
projects. This will result in projects being serialized in the exact format
|
32
|
+
used by Xcode eliminating merge conflicts and other related issues. To learn
|
33
|
+
more about how to install xcproj see its
|
34
|
+
[readme](https://github.com/0xced/xcproj).
|
35
|
+
[Cédric Luthi](https://github.com/0xced)
|
36
|
+
[#1275](https://github.com/CocoaPods/CocoaPods/issues/1275)
|
37
|
+
|
38
|
+
* Rationalized and cleaned up Pods project group structure and path specification.
|
39
|
+
|
40
|
+
* Create all necessary build configurations for *Pods.xcodeproj* at the project level. If the user’s project has more than just *Debug* and *Release* build configurations, they may be explicitly specified in the Podfile:
|
41
|
+
`xcodeproj 'MyApp', 'App Store' => :release, 'Debug' => :debug, 'Release' => :release`
|
42
|
+
If build configurations aren’t specified in the Podfile then they will be automatically picked from the user’s project in *Release* mode.
|
43
|
+
These changes will ensure that the `libPods.a` static library is not stripped for all configurations, as explained in [#1217](https://github.com/CocoaPods/CocoaPods/pull/1217).
|
44
|
+
[Cédric Luthi](https://github.com/0xced)
|
45
|
+
[#1294](https://github.com/CocoaPods/CocoaPods/issues/1294)
|
46
|
+
|
47
|
+
* Added basic support for Bazaar repositories.
|
48
|
+
[Fred McCann](https://github.com/fmccann)
|
49
|
+
[cocoapods-downloader#4](https://github.com/CocoaPods/cocoapods-downloader/pull/4)
|
50
|
+
|
51
|
+
###### Bug Fixes
|
52
|
+
|
53
|
+
* Fixed crash in `pod spec cat`.
|
54
|
+
|
55
|
+
* Use the `TARGET_BUILD_DIR` environment variable for installing resource bundles.
|
56
|
+
[Cédric Luthi](https://github.com/0xced)
|
57
|
+
[#1268](https://github.com/CocoaPods/CocoaPods/issues/1268)
|
58
|
+
|
59
|
+
* CoreData versioned models are now properly handled respecting the contents of
|
60
|
+
the `.xccurrentversion` file.
|
61
|
+
[#1288](https://github.com/CocoaPods/CocoaPods/issues/1288),
|
62
|
+
[Xcodeproj#83](https://github.com/CocoaPods/Xcodeproj/pull/83)
|
63
|
+
[Ashton-W](https://github.com/Ashton-W)
|
64
|
+
|
65
|
+
* OS X frameworks are now copied to the Resources folder using rsync to
|
66
|
+
properly overwrite existing files.
|
67
|
+
[Nikolaj Schumacher](https://github.com/nschum)
|
68
|
+
[#1063](https://github.com/CocoaPods/CocoaPods/issues/1063)
|
69
|
+
|
70
|
+
* User defined build configurations are now added to the resource bundle
|
71
|
+
targets.
|
72
|
+
[#1309](https://github.com/CocoaPods/CocoaPods/issues/1309),
|
73
|
+
|
74
|
+
|
7
75
|
## 0.23.0
|
8
76
|
|
77
|
+
|
78
|
+
## 0.23.0.rc1
|
79
|
+
|
9
80
|
###### Enhancements
|
10
81
|
[CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.22.3...0.23.0.rc1)
|
11
82
|
• [cocoapods-core](https://github.com/CocoaPods/Core/compare/0.22.3...0.23.0.rc1)
|
data/LICENSE
CHANGED
data/lib/cocoapods.rb
CHANGED
data/lib/cocoapods/command.rb
CHANGED
@@ -0,0 +1,90 @@
|
|
1
|
+
require 'xcodeproj'
|
2
|
+
require 'active_support/core_ext/string/strip'
|
3
|
+
|
4
|
+
module Pod
|
5
|
+
class Command
|
6
|
+
class Init < Command
|
7
|
+
|
8
|
+
self.summary = 'Generate a Podfile for the current directory.'
|
9
|
+
self.description = <<-DESC
|
10
|
+
Creates a Podfile for the current directory if none currently exists. If
|
11
|
+
an Xcode project file is specified or if there is only a single project
|
12
|
+
file in the current directory, targets will be automatically generated
|
13
|
+
based on targets defined in the project.
|
14
|
+
|
15
|
+
It is possible to specify a list of dependencies which will be used by
|
16
|
+
the template in the `Podfile.default` (normal targets) `Podfile.test`
|
17
|
+
(test targets) files which should be stored in the
|
18
|
+
`~/.cocoapods/templates` folder.
|
19
|
+
DESC
|
20
|
+
self.arguments = '[XCODEPROJ]'
|
21
|
+
|
22
|
+
def initialize(argv)
|
23
|
+
@podfile_path = Pathname.pwd + "Podfile"
|
24
|
+
@project_path = argv.shift_argument
|
25
|
+
@project_paths = Pathname.pwd.children.select { |pn| pn.extname == '.xcodeproj' }
|
26
|
+
super
|
27
|
+
end
|
28
|
+
|
29
|
+
def validate!
|
30
|
+
super
|
31
|
+
raise Informative, "Existing Podfile found in directory" unless config.podfile.nil?
|
32
|
+
if @project_path
|
33
|
+
help! "Xcode project at #{@project_path} does not exist" unless File.exist? @project_path
|
34
|
+
else
|
35
|
+
raise Informative, "No xcode project found, please specify one" unless @project_paths.length > 0
|
36
|
+
raise Informative, "Multiple xcode projects found, please specify one" unless @project_paths.length == 1
|
37
|
+
@project_path = @project_paths.first
|
38
|
+
end
|
39
|
+
@xcode_project = Xcodeproj::Project.open(@project_path)
|
40
|
+
end
|
41
|
+
|
42
|
+
def run
|
43
|
+
@podfile_path.open('w') { |f| f << podfile_template(@xcode_project) }
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
# @param [Xcodeproj::Project] project
|
49
|
+
# The xcode project to generate a podfile for.
|
50
|
+
#
|
51
|
+
# @return [String] the text of the Podfile for the provided project
|
52
|
+
#
|
53
|
+
def podfile_template(project)
|
54
|
+
podfile = <<-PLATFORM.strip_heredoc
|
55
|
+
# Uncomment this line to define a global platform for your project
|
56
|
+
# platform :ios, "6.0"
|
57
|
+
PLATFORM
|
58
|
+
for target in project.targets
|
59
|
+
podfile << target_module(target)
|
60
|
+
end
|
61
|
+
podfile << "\n"
|
62
|
+
end
|
63
|
+
|
64
|
+
# @param [Xcodeproj::PBXTarget] target
|
65
|
+
# A target to generate a Podfile target module for.
|
66
|
+
#
|
67
|
+
# @return [String] the text for the target module
|
68
|
+
#
|
69
|
+
def target_module(target)
|
70
|
+
target_module = "\ntarget \"#{target.name}\" do\n"
|
71
|
+
|
72
|
+
if target.name =~ /tests?/i
|
73
|
+
target_module << template_contents(config.default_test_podfile_path)
|
74
|
+
else
|
75
|
+
target_module << template_contents(config.default_podfile_path)
|
76
|
+
end
|
77
|
+
target_module << "\nend\n"
|
78
|
+
end
|
79
|
+
|
80
|
+
|
81
|
+
def template_contents(path)
|
82
|
+
if path.exist?
|
83
|
+
path.read.chomp.lines.map{ |line| " #{line}" }.join("\n")
|
84
|
+
else
|
85
|
+
String.new
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
@@ -6,7 +6,7 @@ module Pod
|
|
6
6
|
self.summary = 'Setup the CocoaPods environment'
|
7
7
|
|
8
8
|
self.description = <<-DESC
|
9
|
-
Creates a directory at `~/.cocoapods` which will hold your spec-repos.
|
9
|
+
Creates a directory at `~/.cocoapods/repos` which will hold your spec-repos.
|
10
10
|
This is where it will create a clone of the public `master` spec-repo from:
|
11
11
|
|
12
12
|
https://github.com/CocoaPods/Specs
|
@@ -304,7 +304,7 @@ module Pod
|
|
304
304
|
# @return [Pathname] the absolute path of the given spec and source
|
305
305
|
#
|
306
306
|
def pathname_from_spec(spec, source)
|
307
|
-
|
307
|
+
config.repos_dir + "#{source}/#{spec.name}/#{spec.version}/#{spec.name}.podspec"
|
308
308
|
end
|
309
309
|
|
310
310
|
# @return [String] of spec paths one on each line
|
data/lib/cocoapods/config.rb
CHANGED
@@ -147,6 +147,12 @@ module Pod
|
|
147
147
|
|
148
148
|
attr_writer :repos_dir
|
149
149
|
|
150
|
+
# @return [Pathname] the directory where the CocoaPods templates are stored.
|
151
|
+
#
|
152
|
+
def templates_dir
|
153
|
+
@templates_dir ||= Pathname.new(ENV['CP_TEMPLATES_DIR'] || "~/.cocoapods/templates").expand_path
|
154
|
+
end
|
155
|
+
|
150
156
|
# @return [Pathname] the root of the CocoaPods installation where the
|
151
157
|
# Podfile is located.
|
152
158
|
#
|
@@ -223,6 +229,26 @@ module Pod
|
|
223
229
|
@lockfile_path ||= installation_root + 'Podfile.lock'
|
224
230
|
end
|
225
231
|
|
232
|
+
# Returns the path of the default Podfile pods.
|
233
|
+
#
|
234
|
+
# @note The file is expected to be named Podfile.default
|
235
|
+
#
|
236
|
+
# @return [Pathname]
|
237
|
+
#
|
238
|
+
def default_podfile_path
|
239
|
+
@default_podfile_path ||= templates_dir + "Podfile.default"
|
240
|
+
end
|
241
|
+
|
242
|
+
# Returns the path of the default Podfile test pods.
|
243
|
+
#
|
244
|
+
# @note The file is expected to be named Podfile.test
|
245
|
+
#
|
246
|
+
# @return [Pathname]
|
247
|
+
#
|
248
|
+
def default_test_podfile_path
|
249
|
+
@default_test_podfile_path ||= templates_dir + "Podfile.test"
|
250
|
+
end
|
251
|
+
|
226
252
|
# @return [Pathname] The file to use a cache of the statistics provider.
|
227
253
|
#
|
228
254
|
def statistics_cache_file
|
@@ -98,8 +98,8 @@ install_resource()
|
|
98
98
|
*.framework)
|
99
99
|
echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
100
100
|
mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
101
|
-
echo "
|
102
|
-
|
101
|
+
echo "rsync -av ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
102
|
+
rsync -av "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
103
103
|
;;
|
104
104
|
*.xcdatamodel)
|
105
105
|
echo "xcrun momc \\"${PODS_ROOT}/$1\\" \\"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1"`.mom\\""
|
data/lib/cocoapods/installer.rb
CHANGED
@@ -285,10 +285,23 @@ module Pod
|
|
285
285
|
#
|
286
286
|
def prepare_pods_project
|
287
287
|
UI.message "- Creating Pods project" do
|
288
|
-
@pods_project = Pod::Project.new(sandbox)
|
288
|
+
@pods_project = Pod::Project.new(sandbox.project_path)
|
289
|
+
|
290
|
+
analysis_result.all_user_build_configurations.each do |name, type|
|
291
|
+
@pods_project.add_build_configuration(name, type)
|
292
|
+
end
|
293
|
+
|
294
|
+
pod_names = pod_targets.map(&:pod_name).uniq
|
295
|
+
pod_names.each do |pod_name|
|
296
|
+
path = sandbox.pod_dir(pod_name)
|
297
|
+
local = sandbox.local?(pod_name)
|
298
|
+
@pods_project.add_pod_group(pod_name, path, local)
|
299
|
+
end
|
300
|
+
|
289
301
|
if config.podfile_path
|
290
302
|
@pods_project.add_podfile(config.podfile_path)
|
291
303
|
end
|
304
|
+
|
292
305
|
sandbox.project = @pods_project
|
293
306
|
platforms = aggregate_targets.map(&:platform)
|
294
307
|
osx_deployment_target = platforms.select { |p| p.name == :osx }.map(&:deployment_target).min
|
@@ -331,6 +344,16 @@ module Pod
|
|
331
344
|
target_installer = AggregateTargetInstaller.new(sandbox, target)
|
332
345
|
target_installer.install!
|
333
346
|
end
|
347
|
+
|
348
|
+
# TODO
|
349
|
+
# Move and add specs
|
350
|
+
pod_targets.sort_by(&:name).each do |pod_target|
|
351
|
+
pod_target.file_accessors.each do |file_accessor|
|
352
|
+
file_accessor.spec_consumer.frameworks.each do |framework|
|
353
|
+
ref = pods_project.add_system_framework(framework, pod_target.target)
|
354
|
+
end
|
355
|
+
end
|
356
|
+
end
|
334
357
|
end
|
335
358
|
end
|
336
359
|
|
@@ -360,10 +383,9 @@ module Pod
|
|
360
383
|
#
|
361
384
|
def link_aggregate_target
|
362
385
|
aggregate_targets.each do |aggregate_target|
|
363
|
-
native_target =
|
364
|
-
products = pods_project.products_group
|
386
|
+
native_target = aggregate_target.target
|
365
387
|
aggregate_target.pod_targets.each do |pod_target|
|
366
|
-
product =
|
388
|
+
product = pod_target.target.product_reference
|
367
389
|
native_target.frameworks_build_phase.add_file_reference(product)
|
368
390
|
end
|
369
391
|
end
|
@@ -375,9 +397,10 @@ module Pod
|
|
375
397
|
#
|
376
398
|
def write_pod_project
|
377
399
|
UI.message "- Writing Xcode project file to #{UI.path sandbox.project_path}" do
|
378
|
-
pods_project.
|
379
|
-
pods_project
|
380
|
-
pods_project.
|
400
|
+
pods_project.pods.remove_from_project if pods_project.pods.empty?
|
401
|
+
pods_project.development_pods.remove_from_project if pods_project.development_pods.empty?
|
402
|
+
pods_project.main_group.recursively_sort_by_type
|
403
|
+
pods_project.save
|
381
404
|
end
|
382
405
|
end
|
383
406
|
|
@@ -169,7 +169,7 @@ module Pod
|
|
169
169
|
|
170
170
|
if config.integrate_targets?
|
171
171
|
project_path = compute_user_project_path(target_definition)
|
172
|
-
user_project = Xcodeproj::Project.
|
172
|
+
user_project = Xcodeproj::Project.open(project_path)
|
173
173
|
native_targets = compute_user_project_targets(target_definition, user_project)
|
174
174
|
|
175
175
|
target.user_project_path = project_path
|
@@ -449,7 +449,7 @@ module Pod
|
|
449
449
|
podfile.target_definition_list.each do |target_definition|
|
450
450
|
if config.integrate_targets?
|
451
451
|
project_path = compute_user_project_path(target_definition)
|
452
|
-
user_project = Xcodeproj::Project.
|
452
|
+
user_project = Xcodeproj::Project.open(project_path)
|
453
453
|
targets = compute_user_project_targets(target_definition, user_project)
|
454
454
|
platform = compute_platform_for_target_definition(target_definition, targets)
|
455
455
|
else
|
@@ -488,6 +488,16 @@ module Pod
|
|
488
488
|
#
|
489
489
|
attr_accessor :targets
|
490
490
|
|
491
|
+
# @return [Hash{String=>Symbol}] A hash representing all the user build
|
492
|
+
# configurations across all integration targets. Each key
|
493
|
+
# corresponds to the name of a configuration and its value to
|
494
|
+
# its type (`:debug` or `:release`).
|
495
|
+
#
|
496
|
+
def all_user_build_configurations
|
497
|
+
targets.inject({}) do |result, target|
|
498
|
+
result.merge(target.user_build_configurations)
|
499
|
+
end
|
500
|
+
end
|
491
501
|
end
|
492
502
|
|
493
503
|
#-----------------------------------------------------------------------#
|
@@ -65,15 +65,11 @@ module Pod
|
|
65
65
|
# @note The source files are grouped by Pod and in turn by subspec
|
66
66
|
# (recursively).
|
67
67
|
#
|
68
|
-
# @note Pods are generally added to the `Pods` group, however, if they
|
69
|
-
# have a local source they are added to the
|
70
|
-
# `Local Pods` group.
|
71
|
-
#
|
72
68
|
# @return [void]
|
73
69
|
#
|
74
70
|
def add_source_files_references
|
75
71
|
UI.message "- Adding source files to Pods project" do
|
76
|
-
|
72
|
+
add_file_accessors_paths_to_pods_group(:source_files, :source_files)
|
77
73
|
end
|
78
74
|
end
|
79
75
|
|
@@ -83,7 +79,7 @@ module Pod
|
|
83
79
|
#
|
84
80
|
def add_frameworks_bundles
|
85
81
|
UI.message "- Adding frameworks to Pods project" do
|
86
|
-
|
82
|
+
add_file_accessors_paths_to_pods_group(:vendored_frameworks, :frameworks_and_libraries)
|
87
83
|
end
|
88
84
|
end
|
89
85
|
|
@@ -93,7 +89,7 @@ module Pod
|
|
93
89
|
#
|
94
90
|
def add_vendored_libraries
|
95
91
|
UI.message "- Adding frameworks to Pods project" do
|
96
|
-
|
92
|
+
add_file_accessors_paths_to_pods_group(:vendored_libraries, :frameworks_and_libraries)
|
97
93
|
end
|
98
94
|
end
|
99
95
|
|
@@ -106,8 +102,8 @@ module Pod
|
|
106
102
|
#
|
107
103
|
def add_resources
|
108
104
|
UI.message "- Adding resources to Pods project" do
|
109
|
-
|
110
|
-
|
105
|
+
add_file_accessors_paths_to_pods_group(:resources, :resources)
|
106
|
+
add_file_accessors_paths_to_pods_group(:resource_bundle_files, :resources)
|
111
107
|
end
|
112
108
|
end
|
113
109
|
|
@@ -160,7 +156,7 @@ module Pod
|
|
160
156
|
#
|
161
157
|
# @return [void]
|
162
158
|
#
|
163
|
-
def
|
159
|
+
def add_file_accessors_paths_to_pods_group(file_accessor_key, group_key)
|
164
160
|
file_accessors.each do |file_accessor|
|
165
161
|
paths = file_accessor.send(file_accessor_key)
|
166
162
|
paths.each do |path|
|
@@ -52,13 +52,7 @@ module Pod
|
|
52
52
|
@target.build_settings('Release').merge!(settings)
|
53
53
|
|
54
54
|
library.user_build_configurations.each do |bc_name, type|
|
55
|
-
|
56
|
-
build_config = project.new(Xcodeproj::Project::XCBuildConfiguration)
|
57
|
-
build_config.name = bc_name
|
58
|
-
settings = @target.build_settings(type.to_s.capitalize).dup
|
59
|
-
build_config.build_settings = settings
|
60
|
-
target.build_configurations << build_config
|
61
|
-
end
|
55
|
+
@target.add_build_configuration(bc_name, type)
|
62
56
|
end
|
63
57
|
|
64
58
|
library.target = @target
|
@@ -126,8 +120,7 @@ module Pod
|
|
126
120
|
# @return [PBXFileReference] the file reference of the added file.
|
127
121
|
#
|
128
122
|
def add_file_to_support_group(path)
|
129
|
-
|
130
|
-
support_files_group.new_file(relative_path)
|
123
|
+
support_files_group.new_file(path)
|
131
124
|
end
|
132
125
|
|
133
126
|
#-----------------------------------------------------------------------#
|
@@ -90,8 +90,8 @@ module Pod
|
|
90
90
|
path = library.copy_resources_script_path
|
91
91
|
UI.message "- Generating copy resources script at #{UI.path(path)}" do
|
92
92
|
file_accessors = library.pod_targets.map(&:file_accessors).flatten
|
93
|
-
resource_paths = file_accessors.map { |accessor| accessor.resources.flatten.map {|res| project.
|
94
|
-
resource_bundles = file_accessors.map { |accessor| accessor.resource_bundles.keys.map {|name| "${
|
93
|
+
resource_paths = file_accessors.map { |accessor| accessor.resources.flatten.map { |res| res.relative_path_from(project.path.dirname) }}.flatten
|
94
|
+
resource_bundles = file_accessors.map { |accessor| accessor.resource_bundles.keys.map {|name| "${TARGET_BUILD_DIR}/#{name}.bundle" } }.flatten
|
95
95
|
resources = []
|
96
96
|
resources.concat(resource_paths)
|
97
97
|
resources.concat(resource_bundles)
|
@@ -13,9 +13,10 @@ module Pod
|
|
13
13
|
def install!
|
14
14
|
UI.message "- Installing target `#{library.name}` #{library.platform}" do
|
15
15
|
add_target
|
16
|
+
move_target_product_file_reference
|
16
17
|
add_files_to_build_phases
|
17
18
|
add_resources_bundle_targets
|
18
|
-
create_suport_files_group
|
19
|
+
# create_suport_files_group
|
19
20
|
create_xcconfig_file
|
20
21
|
create_prefix_header
|
21
22
|
create_dummy_source
|
@@ -40,16 +41,19 @@ module Pod
|
|
40
41
|
consumer = file_accessor.spec_consumer
|
41
42
|
flags = compiler_flags_for_consumer(consumer)
|
42
43
|
source_files = file_accessor.source_files
|
43
|
-
file_refs = source_files.map { |sf| project.
|
44
|
+
file_refs = source_files.map { |sf| project.reference_for_path(sf) }
|
44
45
|
target.add_file_references(file_refs, flags)
|
45
46
|
|
46
|
-
file_accessor.spec_consumer.frameworks.each do |framework|
|
47
|
-
project.add_system_framework(framework, target)
|
48
|
-
end
|
49
47
|
end
|
50
48
|
end
|
51
49
|
end
|
52
50
|
|
51
|
+
def move_target_product_file_reference
|
52
|
+
pod_name = library.pod_name
|
53
|
+
group = project.group_for_spec(pod_name, :products)
|
54
|
+
target.product_reference.move(group)
|
55
|
+
end
|
56
|
+
|
53
57
|
# Adds the resources of the Pods to the Pods project.
|
54
58
|
#
|
55
59
|
# @note The source files are grouped by Pod and in turn by subspec
|
@@ -61,12 +65,16 @@ module Pod
|
|
61
65
|
UI.message "- Adding resource bundles to Pods project" do
|
62
66
|
library.file_accessors.each do |file_accessor|
|
63
67
|
file_accessor.resource_bundles.each do |bundle_name, paths|
|
64
|
-
file_references = paths.map { |sf| project.
|
65
|
-
group = project.group_for_spec(file_accessor.spec.name, :
|
68
|
+
file_references = paths.map { |sf| project.reference_for_path(sf) }
|
69
|
+
group = project.group_for_spec(file_accessor.spec.name, :products)
|
66
70
|
product_group = project.group_for_spec(file_accessor.spec.name, :resources)
|
67
71
|
bundle_target = project.new_resources_bundle(bundle_name, file_accessor.spec_consumer.platform_name, product_group)
|
68
72
|
bundle_target.add_resources(file_references)
|
69
73
|
|
74
|
+
library.user_build_configurations.each do |bc_name, type|
|
75
|
+
bundle_target.add_build_configuration(bc_name, type)
|
76
|
+
end
|
77
|
+
|
70
78
|
target.add_dependency(bundle_target)
|
71
79
|
end
|
72
80
|
end
|
@@ -179,6 +187,19 @@ module Pod
|
|
179
187
|
flags * " "
|
180
188
|
end
|
181
189
|
|
190
|
+
# Adds a reference to the given file in the support group of this target.
|
191
|
+
#
|
192
|
+
# @param [Pathname] path
|
193
|
+
# The path of the file to which the reference should be added.
|
194
|
+
#
|
195
|
+
# @return [PBXFileReference] the file reference of the added file.
|
196
|
+
#
|
197
|
+
def add_file_to_support_group(path)
|
198
|
+
pod_name = library.pod_name
|
199
|
+
group = project.group_for_spec(pod_name, :support_files)
|
200
|
+
group.new_file(path)
|
201
|
+
end
|
202
|
+
|
182
203
|
#-----------------------------------------------------------------------#
|
183
204
|
|
184
205
|
end
|
@@ -32,7 +32,7 @@ module Pod
|
|
32
32
|
add_pods_library
|
33
33
|
add_copy_resources_script_phase
|
34
34
|
add_check_manifest_lock_script_phase
|
35
|
-
|
35
|
+
user_project.save
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
@@ -66,14 +66,14 @@ module Pod
|
|
66
66
|
# other TargetIntegrators might have modified it.
|
67
67
|
#
|
68
68
|
def user_project
|
69
|
-
@user_project ||= Xcodeproj::Project.
|
69
|
+
@user_project ||= Xcodeproj::Project.open(target.user_project_path)
|
70
70
|
end
|
71
71
|
|
72
72
|
# Read the pods project from the disk to ensure that it is up to date as
|
73
73
|
# other TargetIntegrators might have modified it.
|
74
74
|
#
|
75
75
|
def pods_project
|
76
|
-
@pods_project ||= Xcodeproj::Project.
|
76
|
+
@pods_project ||= Xcodeproj::Project.open(target.sandbox.project_path)
|
77
77
|
end
|
78
78
|
|
79
79
|
# @return [String] a string representation suitable for debugging.
|
@@ -182,14 +182,6 @@ module Pod
|
|
182
182
|
end
|
183
183
|
end
|
184
184
|
|
185
|
-
# Saves the changes to the user project to the disk.
|
186
|
-
#
|
187
|
-
# @return [void]
|
188
|
-
#
|
189
|
-
def save_user_project
|
190
|
-
user_project.save_as(target.user_project_path)
|
191
|
-
end
|
192
|
-
|
193
185
|
#---------------------------------------------------------------------#
|
194
186
|
|
195
187
|
# @!group Private helpers.
|
data/lib/cocoapods/project.rb
CHANGED
@@ -9,230 +9,202 @@ module Pod
|
|
9
9
|
#
|
10
10
|
class Project < Xcodeproj::Project
|
11
11
|
|
12
|
-
|
13
|
-
# @
|
14
|
-
#
|
15
|
-
#
|
16
|
-
attr_reader :sandbox
|
17
|
-
|
18
|
-
# @param [Sandbox] sandbox @see #sandbox
|
12
|
+
# @param [Pathname, String] path @see path
|
13
|
+
# @param [Bool] skip_initialization
|
14
|
+
# Wether the project should be initialized from scratch.
|
19
15
|
#
|
20
|
-
def initialize(
|
21
|
-
super(
|
22
|
-
# TODO
|
23
|
-
raise unless sandbox.is_a?(Sandbox)
|
24
|
-
@sandbox = sandbox
|
25
|
-
@path = sandbox.project_path
|
16
|
+
def initialize(path, skip_initialization = false)
|
17
|
+
super(path, skip_initialization)
|
26
18
|
@support_files_group = new_group('Targets Support Files')
|
27
|
-
|
28
19
|
@refs_by_absolute_path = {}
|
20
|
+
@pods = new_group('Pods')
|
21
|
+
@development_pods = new_group('Development Pods')
|
29
22
|
end
|
30
23
|
|
31
|
-
# @return [
|
32
|
-
#
|
24
|
+
# @return [PBXGroup] The group for the support files of the aggregate
|
25
|
+
# targets.
|
33
26
|
#
|
34
|
-
attr_reader :
|
27
|
+
attr_reader :support_files_group
|
35
28
|
|
36
|
-
# @return [
|
29
|
+
# @return [PBXGroup] The group for the Pods.
|
37
30
|
#
|
38
|
-
|
39
|
-
@root ||= path.dirname
|
40
|
-
end
|
31
|
+
attr_reader :pods
|
41
32
|
|
42
|
-
# @return [
|
33
|
+
# @return [PBXGroup] The group for Development Pods.
|
43
34
|
#
|
44
|
-
|
45
|
-
|
35
|
+
attr_reader :development_pods
|
36
|
+
|
37
|
+
|
38
|
+
public
|
39
|
+
|
40
|
+
# @!group Pod Groups
|
41
|
+
#-------------------------------------------------------------------------#
|
42
|
+
|
43
|
+
# Creates a new group for the Pod with the given name and configures its
|
44
|
+
# path.
|
46
45
|
#
|
47
|
-
# @
|
48
|
-
#
|
49
|
-
# {Pathname#relative_path_from}.
|
46
|
+
# @param [String] pod_name
|
47
|
+
# The name of the Pod.
|
50
48
|
#
|
51
|
-
# @
|
49
|
+
# @param [#to_s] path
|
50
|
+
# The path to the root of the Pod.
|
52
51
|
#
|
53
|
-
#
|
54
|
-
#
|
52
|
+
# @param [Bool] development
|
53
|
+
# Wether the group should be added to the Development Pods group.
|
55
54
|
#
|
56
|
-
#
|
57
|
-
#
|
55
|
+
# @param [Bool] absolute
|
56
|
+
# Wether the path of the group should be set as absolute.
|
58
57
|
#
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
58
|
+
# @return [PBXGroup] The new group.
|
59
|
+
#
|
60
|
+
def add_pod_group(pod_name, path, development = false, absolute = false)
|
61
|
+
raise "[BUG]" if pod_group(pod_name)
|
63
62
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
63
|
+
parent_group = development ? development_pods : pods
|
64
|
+
source_tree = absolute ? :absolute : :group
|
65
|
+
group = parent_group.new_group(pod_name, path, source_tree)
|
66
|
+
support_files_group = group.new_group(SPEC_SUBGROUPS[:support_files])
|
67
|
+
support_files_group.source_tree = 'SOURCE_ROOT'
|
68
|
+
group
|
69
69
|
end
|
70
70
|
|
71
|
-
# @return [
|
71
|
+
# @return [Array<PBXGroup>] Returns all the group of the Pods.
|
72
72
|
#
|
73
|
-
def
|
74
|
-
|
73
|
+
def pod_groups
|
74
|
+
pods.children.objects + development_pods.children.objects
|
75
75
|
end
|
76
76
|
|
77
|
-
|
78
|
-
|
79
|
-
public
|
80
|
-
|
81
|
-
# @!group Groups
|
82
|
-
|
83
|
-
# @return [PBXGroup] the group where the support files for the Pod
|
84
|
-
# libraries should be added.
|
77
|
+
# Returns the group for the Pod with the given name.
|
85
78
|
#
|
86
|
-
|
87
|
-
|
88
|
-
# Returns the `Pods` group, creating it if needed.
|
79
|
+
# @param [String] pod_name
|
80
|
+
# The name of the Pod.
|
89
81
|
#
|
90
|
-
# @return [PBXGroup]
|
82
|
+
# @return [PBXGroup] The group.
|
91
83
|
#
|
92
|
-
def
|
93
|
-
|
84
|
+
def pod_group(pod_name)
|
85
|
+
pod_groups.find { |group| group.name == pod_name }
|
94
86
|
end
|
95
87
|
|
96
|
-
#
|
97
|
-
# to contain locally sourced pods.
|
88
|
+
# @return [Hash] The names of the specification subgroups by key.
|
98
89
|
#
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
90
|
+
SPEC_SUBGROUPS = {
|
91
|
+
:source_files => 'Source Files',
|
92
|
+
:resources => 'Resources',
|
93
|
+
:frameworks_and_libraries => 'Frameworks & Libraries',
|
94
|
+
:support_files => 'Support Files',
|
95
|
+
:subspecs => 'Subspecs',
|
96
|
+
:products => 'Products',
|
97
|
+
}
|
104
98
|
|
105
|
-
# Returns the
|
106
|
-
#
|
99
|
+
# Returns the group for the specification with the give name creating it if
|
100
|
+
# needed.
|
107
101
|
#
|
108
|
-
# @
|
102
|
+
# @param [String] spec_name
|
103
|
+
# The full name of the specification.
|
109
104
|
#
|
110
|
-
|
111
|
-
|
112
|
-
end
|
113
|
-
|
114
|
-
|
115
|
-
# @return [PBXGroup] the group for the spec with the given name.
|
105
|
+
# @param [Symbol] subgroup_key
|
106
|
+
# The optional key of the subgroup (@see #{SPEC_SUBGROUPS})
|
116
107
|
#
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
spec_group =
|
121
|
-
if
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
when :frameworks_and_libraries then sub_group = 'Frameworks & Libraries'
|
126
|
-
when :support_files then sub_group = 'Support Files'
|
127
|
-
else raise "[BUG]"
|
128
|
-
end
|
129
|
-
spec_group.find_subpath(sub_group, true)
|
108
|
+
# @return [PBXGroup] The group.
|
109
|
+
#
|
110
|
+
def group_for_spec(spec_name, subgroup_key = nil)
|
111
|
+
spec_group = spec_group(spec_name)
|
112
|
+
if subgroup_key
|
113
|
+
subgroup = SPEC_SUBGROUPS[subgroup_key]
|
114
|
+
raise ArgumentError, "Unrecognized subgroup `#{subgroup_key}`" unless subgroup
|
115
|
+
spec_group.find_subpath(subgroup, true)
|
130
116
|
else
|
131
117
|
spec_group
|
132
118
|
end
|
133
119
|
end
|
134
120
|
|
135
|
-
#-------------------------------------------------------------------------#
|
136
121
|
|
137
122
|
public
|
138
123
|
|
139
124
|
# @!group File references
|
125
|
+
#-------------------------------------------------------------------------#
|
140
126
|
|
141
|
-
# Adds a file reference
|
142
|
-
# group, namespaced by specification unless a file reference for the given
|
143
|
-
# path already exits.
|
127
|
+
# Adds a file reference to given path as a child of the given group.
|
144
128
|
#
|
145
|
-
# @
|
146
|
-
#
|
147
|
-
# limitation or a feature.
|
129
|
+
# @param [Array<Pathname,String>] absolute_path
|
130
|
+
# The path of the file.
|
148
131
|
#
|
149
|
-
# @param [
|
150
|
-
# The
|
132
|
+
# @param [PBXGroup] group
|
133
|
+
# The group for the new file reference.
|
151
134
|
#
|
152
|
-
# @
|
153
|
-
# The full name of the specification.
|
154
|
-
#
|
155
|
-
# @param [PBXGroup] parent_group
|
156
|
-
# The group where the file references should be added.
|
135
|
+
# @return [PBXFileReference] The new file reference.
|
157
136
|
#
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
group = group_for_spec(spec_name, :source_files)
|
162
|
-
absolute_path.each do |file|
|
163
|
-
existing = file_reference(file)
|
164
|
-
unless existing
|
165
|
-
file = Pathname.new(file)
|
166
|
-
ref = group.new_file(relativize(file))
|
167
|
-
@refs_by_absolute_path[file] = ref
|
168
|
-
end
|
137
|
+
def add_file_reference(absolute_path, group)
|
138
|
+
unless Pathname.new(absolute_path).absolute?
|
139
|
+
raise ArgumentError, "Paths must be absolute #{absolute_path}"
|
169
140
|
end
|
170
|
-
end
|
171
141
|
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
142
|
+
if ref = reference_for_path(absolute_path)
|
143
|
+
ref
|
144
|
+
else
|
145
|
+
ref = group.new_file(absolute_path)
|
146
|
+
@refs_by_absolute_path[absolute_path.to_s] = ref
|
147
|
+
end
|
177
148
|
end
|
178
149
|
|
179
|
-
# Returns the file reference for the given absolute
|
150
|
+
# Returns the file reference for the given absolute path.
|
180
151
|
#
|
181
|
-
# @param [
|
152
|
+
# @param [#to_s] absolute_path
|
182
153
|
# The absolute path of the file whose reference is needed.
|
183
154
|
#
|
184
155
|
# @return [PBXFileReference] The file reference.
|
185
156
|
# @return [Nil] If no file reference could be found.
|
186
157
|
#
|
187
|
-
def
|
188
|
-
|
189
|
-
|
158
|
+
def reference_for_path(absolute_path)
|
159
|
+
unless Pathname.new(absolute_path).absolute?
|
160
|
+
raise ArgumentError, "Paths must be absolute #{absolute_path}"
|
161
|
+
end
|
162
|
+
|
163
|
+
refs_by_absolute_path[absolute_path.to_s]
|
190
164
|
end
|
191
165
|
|
192
|
-
# Adds a file reference to the
|
166
|
+
# Adds a file reference to the Podfile.
|
193
167
|
#
|
194
|
-
# @param [
|
195
|
-
#
|
168
|
+
# @param [#to_s] podfile_path
|
169
|
+
# The path of the Podfile.
|
196
170
|
#
|
197
|
-
# @return [PBXFileReference]
|
171
|
+
# @return [PBXFileReference] The new file reference.
|
198
172
|
#
|
199
173
|
def add_podfile(podfile_path)
|
200
|
-
|
201
|
-
podfile_ref = new_file(relativize(podfile_path))
|
174
|
+
podfile_ref = new_file(podfile_path, :project)
|
202
175
|
podfile_ref.xc_language_specification_identifier = 'xcode.lang.ruby'
|
203
176
|
podfile_ref.last_known_file_type = 'text'
|
204
177
|
podfile_ref
|
205
178
|
end
|
206
179
|
|
207
|
-
#-------------------------------------------------------------------------#
|
208
180
|
|
209
181
|
private
|
210
182
|
|
211
183
|
# @!group Private helpers
|
184
|
+
#-------------------------------------------------------------------------#
|
212
185
|
|
213
|
-
# @return [Hash{
|
186
|
+
# @return [Hash{String => PBXFileReference}] The file references grouped
|
214
187
|
# by absolute path.
|
215
188
|
#
|
216
189
|
attr_reader :refs_by_absolute_path
|
217
190
|
|
218
|
-
# Returns
|
219
|
-
# needed.
|
191
|
+
# Returns the group for the given specification creating it if needed.
|
220
192
|
#
|
221
193
|
# @param [String] spec_name
|
222
194
|
# The full name of the specification.
|
223
195
|
#
|
224
|
-
# @
|
225
|
-
#
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
196
|
+
# @return [PBXGroup] The group for the spec with the given name.
|
197
|
+
#
|
198
|
+
def spec_group(spec_name)
|
199
|
+
pod_name = Specification.root_name(spec_name)
|
200
|
+
group = pod_group(pod_name)
|
201
|
+
raise "[Bug] Unable to locate group for Pod named `#{pod_name}`" unless group
|
202
|
+
if spec_name != pod_name
|
203
|
+
subspecs_names = spec_name.gsub(pod_name + '/', '').split('/')
|
204
|
+
subspecs_names.each do |name|
|
205
|
+
subspecs_group = group[SPEC_SUBGROUPS[:subspecs]] || group.new_group(SPEC_SUBGROUPS[:subspecs])
|
206
|
+
group = subspecs_group[name] || subspecs_group.new_group(name)
|
207
|
+
end
|
236
208
|
end
|
237
209
|
group
|
238
210
|
end
|
data/lib/cocoapods/sandbox.rb
CHANGED
@@ -67,7 +67,7 @@ module Pod
|
|
67
67
|
@predownloaded_pods = []
|
68
68
|
@head_pods = []
|
69
69
|
@checkout_sources = {}
|
70
|
-
@
|
70
|
+
@development_pods = {}
|
71
71
|
FileUtils.mkdir_p(@root)
|
72
72
|
end
|
73
73
|
|
@@ -152,7 +152,7 @@ module Pod
|
|
152
152
|
def pod_dir(name)
|
153
153
|
root_name = Specification.root_name(name)
|
154
154
|
if local?(root_name)
|
155
|
-
Pathname.new(
|
155
|
+
Pathname.new(development_pods[root_name])
|
156
156
|
else
|
157
157
|
# root + "Sources/#{name}"
|
158
158
|
root + root_name
|
@@ -342,7 +342,7 @@ module Pod
|
|
342
342
|
#
|
343
343
|
def store_local_path(name, path)
|
344
344
|
root_name = Specification.root_name(name)
|
345
|
-
|
345
|
+
development_pods[root_name] = path.to_s
|
346
346
|
end
|
347
347
|
|
348
348
|
# @return [Hash{String=>String}] The path of the Pods with a local source
|
@@ -350,7 +350,7 @@ module Pod
|
|
350
350
|
#
|
351
351
|
# @todo Rename (e.g. `pods_with_local_path`)
|
352
352
|
#
|
353
|
-
attr_reader :
|
353
|
+
attr_reader :development_pods
|
354
354
|
|
355
355
|
# Checks if a Pod is locally sourced?
|
356
356
|
#
|
@@ -361,7 +361,7 @@ module Pod
|
|
361
361
|
#
|
362
362
|
def local?(name)
|
363
363
|
root_name = Specification.root_name(name)
|
364
|
-
!
|
364
|
+
!development_pods[root_name].nil?
|
365
365
|
end
|
366
366
|
|
367
367
|
#-------------------------------------------------------------------------#
|
@@ -283,23 +283,41 @@ module Pod
|
|
283
283
|
end
|
284
284
|
UI = UserInterface
|
285
285
|
|
286
|
+
#---------------------------------------------------------------------------#
|
287
|
+
|
286
288
|
# Redirects cocoapods-core UI.
|
287
289
|
#
|
288
290
|
module CoreUI
|
289
291
|
|
290
292
|
class << self
|
291
293
|
|
292
|
-
# @todo enable in CocoaPods 0.17.0 release
|
293
|
-
#
|
294
294
|
def puts(message)
|
295
|
-
|
295
|
+
UI.puts message
|
296
296
|
end
|
297
297
|
|
298
|
-
# @todo enable in CocoaPods 0.17.0 release
|
299
|
-
#
|
300
298
|
def warn(message)
|
301
|
-
|
299
|
+
UI.warn message
|
302
300
|
end
|
303
301
|
end
|
304
302
|
end
|
305
303
|
end
|
304
|
+
|
305
|
+
#---------------------------------------------------------------------------#
|
306
|
+
|
307
|
+
module Xcodeproj
|
308
|
+
|
309
|
+
# Redirects xcodeproj UI.
|
310
|
+
#
|
311
|
+
module UserInterface
|
312
|
+
|
313
|
+
def self.puts(message)
|
314
|
+
::Pod::UI.puts message
|
315
|
+
end
|
316
|
+
|
317
|
+
def self.warn(message)
|
318
|
+
::Pod::UI.warn message
|
319
|
+
end
|
320
|
+
|
321
|
+
end
|
322
|
+
end
|
323
|
+
|
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.24.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-
|
12
|
+
date: 2013-09-04 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.24.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.24.0
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: claide
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -45,28 +45,28 @@ dependencies:
|
|
45
45
|
requirements:
|
46
46
|
- - ~>
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: 0.
|
48
|
+
version: 0.2.0
|
49
49
|
type: :runtime
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
53
|
- - ~>
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: 0.
|
55
|
+
version: 0.2.0
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: xcodeproj
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
60
|
- - ~>
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: 0.
|
62
|
+
version: 0.10.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.10.0
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: colored
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
@@ -101,42 +101,42 @@ dependencies:
|
|
101
101
|
requirements:
|
102
102
|
- - ~>
|
103
103
|
- !ruby/object:Gem::Version
|
104
|
-
version: 1.8
|
104
|
+
version: '1.8'
|
105
105
|
type: :runtime
|
106
106
|
prerelease: false
|
107
107
|
version_requirements: !ruby/object:Gem::Requirement
|
108
108
|
requirements:
|
109
109
|
- - ~>
|
110
110
|
- !ruby/object:Gem::Version
|
111
|
-
version: 1.8
|
111
|
+
version: '1.8'
|
112
112
|
- !ruby/object:Gem::Dependency
|
113
113
|
name: open4
|
114
114
|
requirement: !ruby/object:Gem::Requirement
|
115
115
|
requirements:
|
116
116
|
- - ~>
|
117
117
|
- !ruby/object:Gem::Version
|
118
|
-
version: 1.3
|
118
|
+
version: '1.3'
|
119
119
|
type: :runtime
|
120
120
|
prerelease: false
|
121
121
|
version_requirements: !ruby/object:Gem::Requirement
|
122
122
|
requirements:
|
123
123
|
- - ~>
|
124
124
|
- !ruby/object:Gem::Version
|
125
|
-
version: 1.3
|
125
|
+
version: '1.3'
|
126
126
|
- !ruby/object:Gem::Dependency
|
127
127
|
name: activesupport
|
128
128
|
requirement: !ruby/object:Gem::Requirement
|
129
129
|
requirements:
|
130
130
|
- - ~>
|
131
131
|
- !ruby/object:Gem::Version
|
132
|
-
version: 3.
|
132
|
+
version: '3.0'
|
133
133
|
type: :runtime
|
134
134
|
prerelease: false
|
135
135
|
version_requirements: !ruby/object:Gem::Requirement
|
136
136
|
requirements:
|
137
137
|
- - ~>
|
138
138
|
- !ruby/object:Gem::Version
|
139
|
-
version: 3.
|
139
|
+
version: '3.0'
|
140
140
|
- !ruby/object:Gem::Dependency
|
141
141
|
name: bacon
|
142
142
|
requirement: !ruby/object:Gem::Requirement
|
@@ -167,6 +167,7 @@ extensions: []
|
|
167
167
|
extra_rdoc_files: []
|
168
168
|
files:
|
169
169
|
- lib/cocoapods/command/help.rb
|
170
|
+
- lib/cocoapods/command/init.rb
|
170
171
|
- lib/cocoapods/command/inter_process_communication.rb
|
171
172
|
- lib/cocoapods/command/lib.rb
|
172
173
|
- lib/cocoapods/command/list.rb
|
@@ -234,39 +235,42 @@ homepage: https://github.com/CocoaPods/CocoaPods
|
|
234
235
|
licenses:
|
235
236
|
- MIT
|
236
237
|
metadata: {}
|
237
|
-
post_install_message: "\nCHANGELOG:\n\n## 0.
|
238
|
+
post_install_message: "\nCHANGELOG:\n\n## 0.24.0\n\n###### Enhancements\n[CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.22.3...0.23.0.rc1)\n•
|
238
239
|
[cocoapods-core](https://github.com/CocoaPods/Core/compare/0.22.3...0.23.0.rc1)\n•
|
239
|
-
[Xcodeproj](https://github.com/CocoaPods/Xcodeproj/compare/0.8.1...0.9.0)\n• [cocoapods-downloader](https://github.com/CocoaPods/cocoapods-downloader/compare/0.1.1...0.1.2)\n\n
|
240
|
-
Added `
|
241
|
-
|
242
|
-
\
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
\
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
\ \n [
|
269
|
-
|
240
|
+
[Xcodeproj](https://github.com/CocoaPods/Xcodeproj/compare/0.8.1...0.9.0)\n• [cocoapods-downloader](https://github.com/CocoaPods/cocoapods-downloader/compare/0.1.1...0.1.2)\n\n\n######
|
241
|
+
Enhancements\n\n* Added `pod init` command which generates a Podfile according to
|
242
|
+
the\n targets of the project stored in the working directory and to the templates\n
|
243
|
+
\ stored in the `~/.cocoapods/templates` folder. Tow templates are supported: \n
|
244
|
+
\ - the `Podfile.default` template for regular targets.\n - and the `Podfile.test`
|
245
|
+
template for test targets. \n \n [Ian Ynda-Hummel](https://github.com/ianyh)\n
|
246
|
+
\ [#1106](https://github.com/CocoaPods/CocoaPods/issues/1106) \n [#1045](https://github.com/CocoaPods/CocoaPods/issues/1045)
|
247
|
+
\ \n\n* CocoaPods will now leverage the [xcproj](https://github.com/0xced/xcproj)\n
|
248
|
+
\ command line tool if available in the path of the user to touch saved\n projects.
|
249
|
+
This will result in projects being serialized in the exact format\n used by Xcode
|
250
|
+
eliminating merge conflicts and other related issues. To learn\n more about how
|
251
|
+
to install xcproj see its\n [readme](https://github.com/0xced/xcproj). \n [Cédric
|
252
|
+
Luthi](https://github.com/0xced) \n [#1275](https://github.com/CocoaPods/CocoaPods/issues/1275)
|
253
|
+
\ \n \n* Rationalized and cleaned up Pods project group structure and path specification.\n\n*
|
254
|
+
Create all necessary build configurations for *Pods.xcodeproj* at the project level.
|
255
|
+
If the user’s project has more than just *Debug* and *Release* build configurations,
|
256
|
+
they may be explicitly specified in the Podfile: \n`xcodeproj 'MyApp', 'App Store'
|
257
|
+
=> :release, 'Debug' => :debug, 'Release' => :release` \n If build configurations
|
258
|
+
aren’t specified in the Podfile then they will be automatically picked from the
|
259
|
+
user’s project in *Release* mode. \n These changes will ensure that the `libPods.a`
|
260
|
+
static library is not stripped for all configurations, as explained in [#1217](https://github.com/CocoaPods/CocoaPods/pull/1217).
|
261
|
+
\ \n [Cédric Luthi](https://github.com/0xced) \n [#1294](https://github.com/CocoaPods/CocoaPods/issues/1294)\n\n*
|
262
|
+
Added basic support for Bazaar repositories. \n [Fred McCann](https://github.com/fmccann)
|
263
|
+
\ \n [cocoapods-downloader#4](https://github.com/CocoaPods/cocoapods-downloader/pull/4)\n\n######
|
264
|
+
Bug Fixes\n\n* Fixed crash in `pod spec cat`.\n\n* Use the `TARGET_BUILD_DIR` environment
|
265
|
+
variable for installing resource bundles. \n [Cédric Luthi](https://github.com/0xced)
|
266
|
+
\ \n [#1268](https://github.com/CocoaPods/CocoaPods/issues/1268) \n\n* CoreData
|
267
|
+
versioned models are now properly handled respecting the contents of\n the `.xccurrentversion`
|
268
|
+
file. \n [#1288](https://github.com/CocoaPods/CocoaPods/issues/1288),\n [Xcodeproj#83](https://github.com/CocoaPods/Xcodeproj/pull/83)
|
269
|
+
\ \n [Ashton-W](https://github.com/Ashton-W)\n\n* OS X frameworks are now copied
|
270
|
+
to the Resources folder using rsync to\n properly overwrite existing files. \n
|
271
|
+
\ [Nikolaj Schumacher](https://github.com/nschum)\n [#1063](https://github.com/CocoaPods/CocoaPods/issues/1063)\n\n*
|
272
|
+
User defined build configurations are now added to the resource bundle\n targets.
|
273
|
+
\ \n [#1309](https://github.com/CocoaPods/CocoaPods/issues/1309),\n\n\n"
|
270
274
|
rdoc_options: []
|
271
275
|
require_paths:
|
272
276
|
- lib
|