xcodeproj 0.13.1 → 0.14.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 +7 -7
- data/ext/xcodeproj/Rakefile +36 -0
- data/ext/xcodeproj/extconf.rb +4 -4
- data/ext/xcodeproj/prebuilt/universal-darwin12.0-1.8.7/xcodeproj_ext.bundle +0 -0
- data/ext/xcodeproj/prebuilt/universal.x86_64-darwin13-2.0.0/xcodeproj_ext.bundle +0 -0
- data/lib/xcodeproj/ext.rb +7 -0
- data/lib/xcodeproj/gem_version.rb +1 -1
- data/lib/xcodeproj/project.rb +20 -1
- data/lib/xcodeproj/project/object/helpers/file_references_factory.rb +1 -1
- data/lib/xcodeproj/project/object/native_target.rb +19 -5
- data/lib/xcodeproj/scheme.rb +40 -6
- metadata +51 -51
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
5
|
-
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
1
|
+
---
|
2
|
+
SHA512:
|
3
|
+
metadata.gz: 351a1fb41b97253c60d3c98cb49f40afd0a9524bf7f32d2f4980ef7e1bd79917b01ad1f1c9744e5a0a28dc6c4be72d6a936e316ae8a9d69ffaa739184c8870ab
|
4
|
+
data.tar.gz: 670743ec71585ed4947346781d55c367a9268b51e85abb8baebd24edf44e06b70998c9094da7b40023b085582b8069a5d0ae2d3370c0977b8248b7c4b9b8a682
|
5
|
+
SHA1:
|
6
|
+
metadata.gz: 46aff37bf34d1243b63df3624720605bfe432430
|
7
|
+
data.tar.gz: e34469dacd968ad842532427b7c44620bd767455
|
@@ -0,0 +1,36 @@
|
|
1
|
+
desc 'Creates a Makefile only if needed. (Explicitly control with XCODEPROJ_BUILD)'
|
2
|
+
task :ext do
|
3
|
+
use_prebuilt = case ENV['XCODEPROJ_BUILD']
|
4
|
+
when '1'
|
5
|
+
false
|
6
|
+
when '0'
|
7
|
+
true
|
8
|
+
else
|
9
|
+
require 'rbconfig'
|
10
|
+
if RbConfig::CONFIG['prefix'] =~ %r{^/System/Library/Frameworks/Ruby.framework/}
|
11
|
+
prebuilt_ext = File.join('prebuilt', "#{RUBY_PLATFORM}-#{RUBY_VERSION}", 'xcodeproj_ext.bundle')
|
12
|
+
File.exist?(prebuilt_ext)
|
13
|
+
else
|
14
|
+
false
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
if use_prebuilt
|
19
|
+
# TODO It might be important that we communicate this, but there is no other way than this hack.
|
20
|
+
# Can't change the spec anymore to have a post install message nor can we output to stdout/stderr,
|
21
|
+
# because RubyGems catches all output and only shows it in case of a build failure.
|
22
|
+
#
|
23
|
+
# Do we want this?
|
24
|
+
#
|
25
|
+
if File.writable?('/dev/tty')
|
26
|
+
File.open('/dev/tty', 'w') do |out|
|
27
|
+
out.puts "[!] You are using the prebuilt binary version of the xcodeproj gem."
|
28
|
+
end
|
29
|
+
end
|
30
|
+
else
|
31
|
+
ruby 'extconf.rb'
|
32
|
+
sh 'make'
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
task :default => :ext
|
data/ext/xcodeproj/extconf.rb
CHANGED
@@ -42,10 +42,10 @@ unless have_framework('CoreFoundation')
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
-
have_header
|
46
|
-
have_header
|
47
|
-
have_header
|
48
|
-
have_header
|
45
|
+
have_header('CoreFoundation/CoreFoundation.h')
|
46
|
+
have_header('CoreFoundation/CFStream.h')
|
47
|
+
have_header('CoreFoundation/CFPropertyList.h')
|
48
|
+
have_header('ruby/st.h') || have_header('st.h') || abort('xcodeproj currently requires the (ruby/)st.h header')
|
49
49
|
|
50
50
|
create_header
|
51
51
|
create_makefile 'xcodeproj_ext'
|
@@ -0,0 +1,7 @@
|
|
1
|
+
# In case a binary built for the current Ruby exists, use that, otherwise see
|
2
|
+
# if a prebuilt binary exists for the current platform and Ruby version.
|
3
|
+
begin
|
4
|
+
require 'xcodeproj/xcodeproj_ext'
|
5
|
+
rescue LoadError
|
6
|
+
require "xcodeproj/prebuilt/#{RUBY_PLATFORM}-#{RUBY_VERSION}/xcodeproj_ext"
|
7
|
+
end
|
data/lib/xcodeproj/project.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'fileutils'
|
2
2
|
require 'pathname'
|
3
|
-
|
3
|
+
|
4
|
+
require 'xcodeproj/ext'
|
4
5
|
require 'xcodeproj/project/object'
|
5
6
|
require 'xcodeproj/project/project_helper'
|
6
7
|
require 'xcodeproj/project/xcproj_helper'
|
@@ -469,6 +470,24 @@ module Xcodeproj
|
|
469
470
|
objects.select { |obj| obj.class == PBXFileReference }
|
470
471
|
end
|
471
472
|
|
473
|
+
# Returns the file reference for the given absolute path.
|
474
|
+
#
|
475
|
+
# @param [#to_s] absolute_path
|
476
|
+
# The absolute path of the file whose reference is needed.
|
477
|
+
#
|
478
|
+
# @return [PBXFileReference] The file reference.
|
479
|
+
# @return [Nil] If no file reference could be found.
|
480
|
+
#
|
481
|
+
def reference_for_path(absolute_path)
|
482
|
+
unless Pathname.new(absolute_path).absolute?
|
483
|
+
raise ArgumentError, "Paths must be absolute #{absolute_path}"
|
484
|
+
end
|
485
|
+
|
486
|
+
objects.find do |child|
|
487
|
+
child.isa == 'PBXFileReference' && child.real_path == absolute_path
|
488
|
+
end
|
489
|
+
end
|
490
|
+
|
472
491
|
# @return [ObjectList<PBXNativeTarget>] A list of all the targets in the
|
473
492
|
# project.
|
474
493
|
#
|
@@ -138,7 +138,7 @@ module Xcodeproj
|
|
138
138
|
child_ref = new_file_reference(ref, child_path, :group)
|
139
139
|
last_child_ref = child_ref
|
140
140
|
elsif File.basename(child_path) == '.xccurrentversion'
|
141
|
-
full_path = path + child_path
|
141
|
+
full_path = path + File.basename(child_path)
|
142
142
|
xccurrentversion = Xcodeproj.read_plist(full_path)
|
143
143
|
current_version_name = xccurrentversion['_XCCurrentVersionName']
|
144
144
|
end
|
@@ -124,7 +124,8 @@ module Xcodeproj
|
|
124
124
|
end
|
125
125
|
|
126
126
|
# Adds a new build configuration to the target and populates its with
|
127
|
-
# default settings according to the provided type
|
127
|
+
# default settings according to the provided type if one doesn't
|
128
|
+
# exists.
|
128
129
|
#
|
129
130
|
# @note If a build configuration with the given name is already
|
130
131
|
# present no new build configuration is added.
|
@@ -136,8 +137,13 @@ module Xcodeproj
|
|
136
137
|
# The type of the build configuration used to populate the build
|
137
138
|
# settings, must be :debug or :release.
|
138
139
|
#
|
139
|
-
|
140
|
-
|
140
|
+
# @return [XCBuildConfiguration] the created build configuration or the
|
141
|
+
# existing one with the same name.
|
142
|
+
#
|
143
|
+
def add_build_configuration(name, type)
|
144
|
+
if existing = build_configuration_list[name]
|
145
|
+
existing
|
146
|
+
else
|
141
147
|
build_configuration = project.new(XCBuildConfiguration)
|
142
148
|
build_configuration.name = name
|
143
149
|
build_configuration.build_settings = ProjectHelper.common_build_settings(type, platform_name, deployment_target, product_type)
|
@@ -184,14 +190,22 @@ module Xcodeproj
|
|
184
190
|
#
|
185
191
|
# @param [AbstractTarget] target
|
186
192
|
# the target which should be added to the dependencies list of
|
187
|
-
# the receiver.
|
193
|
+
# the receiver. The target may be a target of this target's
|
194
|
+
# project or of a subproject of this project. Note that the
|
195
|
+
# subproject must already be added to this target's project.
|
188
196
|
#
|
189
197
|
# @return [void]
|
190
198
|
#
|
191
199
|
def add_dependency(target)
|
192
200
|
unless dependencies.map(&:target).include?(target)
|
193
201
|
container_proxy = project.new(Xcodeproj::Project::PBXContainerItemProxy)
|
194
|
-
|
202
|
+
if target.project == project
|
203
|
+
container_proxy.container_portal = project.root_object.uuid
|
204
|
+
else
|
205
|
+
subproject_reference = project.reference_for_path(target.project.path)
|
206
|
+
raise ArgumentError, "add_dependency got target that belongs to a project is not this project and is not a subproject of this project" unless subproject_reference
|
207
|
+
container_proxy.container_portal = subproject_reference.uuid
|
208
|
+
end
|
195
209
|
container_proxy.proxy_type = '1'
|
196
210
|
container_proxy.remote_global_id_string = target.uuid
|
197
211
|
container_proxy.remote_info = target.name
|
data/lib/xcodeproj/scheme.rb
CHANGED
@@ -90,9 +90,9 @@ module Xcodeproj
|
|
90
90
|
buildable_reference = build_action_entry.add_element 'BuildableReference'
|
91
91
|
buildable_reference.attributes['BuildableIdentifier'] = 'primary'
|
92
92
|
buildable_reference.attributes['BlueprintIdentifier'] = build_target.uuid
|
93
|
-
buildable_reference.attributes['BuildableName'] =
|
93
|
+
buildable_reference.attributes['BuildableName'] = construct_buildable_name(build_target)
|
94
94
|
buildable_reference.attributes['BlueprintName'] = build_target.name
|
95
|
-
buildable_reference.attributes['ReferencedContainer'] =
|
95
|
+
buildable_reference.attributes['ReferencedContainer'] = construct_referenced_container_uri(build_target)
|
96
96
|
end
|
97
97
|
|
98
98
|
# Add a target to the list of targets to build in the build action.
|
@@ -109,7 +109,7 @@ module Xcodeproj
|
|
109
109
|
buildable_reference.attributes['BlueprintIdentifier'] = test_target.uuid
|
110
110
|
buildable_reference.attributes['BuildableName'] = "#{test_target.name}.octest"
|
111
111
|
buildable_reference.attributes['BlueprintName'] = test_target.name
|
112
|
-
buildable_reference.attributes['ReferencedContainer'] =
|
112
|
+
buildable_reference.attributes['ReferencedContainer'] = construct_referenced_container_uri(test_target)
|
113
113
|
end
|
114
114
|
|
115
115
|
# Sets a runnable target target to be the target of the launch action of the scheme.
|
@@ -125,7 +125,7 @@ module Xcodeproj
|
|
125
125
|
launch_buildable_reference.attributes['BlueprintIdentifier'] = build_target.uuid
|
126
126
|
launch_buildable_reference.attributes['BuildableName'] = "#{build_target.name}.app"
|
127
127
|
launch_buildable_reference.attributes['BlueprintName'] = build_target.name
|
128
|
-
launch_buildable_reference.attributes['ReferencedContainer'] =
|
128
|
+
launch_buildable_reference.attributes['ReferencedContainer'] = construct_referenced_container_uri(build_target)
|
129
129
|
|
130
130
|
profile_product_runnable = @profile_action.add_element 'BuildableProductRunnable'
|
131
131
|
|
@@ -134,7 +134,7 @@ module Xcodeproj
|
|
134
134
|
profile_buildable_reference.attributes['BlueprintIdentifier'] = build_target.uuid
|
135
135
|
profile_buildable_reference.attributes['BuildableName'] = "#{build_target.name}.app"
|
136
136
|
profile_buildable_reference.attributes['BlueprintName'] = build_target.name
|
137
|
-
profile_buildable_reference.attributes['ReferencedContainer'] =
|
137
|
+
profile_buildable_reference.attributes['ReferencedContainer'] = construct_referenced_container_uri(build_target)
|
138
138
|
|
139
139
|
macro_expansion = @test_action.add_element 'MacroExpansion'
|
140
140
|
|
@@ -143,7 +143,7 @@ module Xcodeproj
|
|
143
143
|
buildable_reference.attributes['BlueprintIdentifier'] = build_target.uuid
|
144
144
|
buildable_reference.attributes['BuildableName'] = File.basename(build_target.product_reference.path)
|
145
145
|
buildable_reference.attributes['BlueprintName'] = build_target.name
|
146
|
-
buildable_reference.attributes['ReferencedContainer'] =
|
146
|
+
buildable_reference.attributes['ReferencedContainer'] = construct_referenced_container_uri(build_target)
|
147
147
|
end
|
148
148
|
|
149
149
|
# @!group Class methods
|
@@ -271,5 +271,39 @@ module Xcodeproj
|
|
271
271
|
|
272
272
|
#-------------------------------------------------------------------------#
|
273
273
|
|
274
|
+
private
|
275
|
+
|
276
|
+
# @!group Private helpers
|
277
|
+
|
278
|
+
# @param [Xcodeproj::Project::Object::AbstractTarget] target
|
279
|
+
#
|
280
|
+
# @return [String] The buildable name of the scheme.
|
281
|
+
#
|
282
|
+
def construct_buildable_name(build_target)
|
283
|
+
case build_target.isa
|
284
|
+
when 'PBXNativeTarget'
|
285
|
+
File.basename(build_target.product_reference.path)
|
286
|
+
when 'PBXAggregateTarget'
|
287
|
+
build_target.name
|
288
|
+
else
|
289
|
+
raise ArgumentError, "Unsupported build target type #{build_target.isa}"
|
290
|
+
end
|
291
|
+
end
|
292
|
+
|
293
|
+
# @param [Xcodeproj::Project::Object::AbstractTarget] target
|
294
|
+
#
|
295
|
+
# @return [String] A string in the format "container:[path to the project
|
296
|
+
# file relative to the project_dir_path, always ending with
|
297
|
+
# the actual project directory name]"
|
298
|
+
#
|
299
|
+
def construct_referenced_container_uri(target)
|
300
|
+
project = target.project
|
301
|
+
relative_path = project.path.relative_path_from(project.path + project.root_object.project_dir_path).to_s
|
302
|
+
relative_path = project.path.basename if relative_path == '.'
|
303
|
+
"container:#{relative_path}"
|
304
|
+
end
|
305
|
+
|
306
|
+
#-------------------------------------------------------------------------#
|
307
|
+
|
274
308
|
end
|
275
309
|
end
|
metadata
CHANGED
@@ -1,53 +1,47 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: xcodeproj
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.14.0
|
5
5
|
platform: ruby
|
6
|
-
authors:
|
6
|
+
authors:
|
7
7
|
- Eloy Duran
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
|
12
|
+
date: 2013-10-24 00:00:00 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
14
15
|
name: activesupport
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ~>
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '3.0'
|
20
|
-
type: :runtime
|
21
16
|
prerelease: false
|
22
|
-
|
23
|
-
requirements:
|
24
|
-
- - ~>
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '3.0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: colored
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
17
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
31
19
|
- - ~>
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version:
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: "3.0"
|
34
22
|
type: :runtime
|
23
|
+
version_requirements: *id001
|
24
|
+
- !ruby/object:Gem::Dependency
|
25
|
+
name: colored
|
35
26
|
prerelease: false
|
36
|
-
|
37
|
-
requirements:
|
27
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
38
29
|
- - ~>
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version:
|
41
|
-
|
42
|
-
|
43
|
-
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: "1.2"
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id002
|
34
|
+
description: Xcodeproj lets you create and modify Xcode projects from Ruby. Script boring management tasks or build Xcode-friendly libraries. Also includes support for Xcode workspaces (.xcworkspace) and configuration files (.xcconfig).
|
44
35
|
email: eloy.de.enige@gmail.com
|
45
|
-
executables:
|
36
|
+
executables:
|
46
37
|
- xcodeproj
|
47
|
-
extensions:
|
48
|
-
- ext/xcodeproj/
|
38
|
+
extensions:
|
39
|
+
- ext/xcodeproj/Rakefile
|
49
40
|
extra_rdoc_files: []
|
50
|
-
|
41
|
+
|
42
|
+
files:
|
43
|
+
- README.md
|
44
|
+
- LICENSE
|
51
45
|
- lib/xcodeproj/command/project_diff.rb
|
52
46
|
- lib/xcodeproj/command/show.rb
|
53
47
|
- lib/xcodeproj/command/sort.rb
|
@@ -56,6 +50,7 @@ files:
|
|
56
50
|
- lib/xcodeproj/config.rb
|
57
51
|
- lib/xcodeproj/constants.rb
|
58
52
|
- lib/xcodeproj/differ.rb
|
53
|
+
- lib/xcodeproj/ext.rb
|
59
54
|
- lib/xcodeproj/gem_version.rb
|
60
55
|
- lib/xcodeproj/helper.rb
|
61
56
|
- lib/xcodeproj/project/object/build_configuration.rb
|
@@ -84,35 +79,40 @@ files:
|
|
84
79
|
- lib/xcodeproj/workspace.rb
|
85
80
|
- lib/xcodeproj/xcodebuild_helper.rb
|
86
81
|
- lib/xcodeproj.rb
|
82
|
+
- ext/xcodeproj/Rakefile
|
87
83
|
- ext/xcodeproj/extconf.rb
|
88
84
|
- ext/xcodeproj/xcodeproj_ext.c
|
89
|
-
-
|
90
|
-
-
|
85
|
+
- ext/xcodeproj/prebuilt/universal-darwin12.0-1.8.7/xcodeproj_ext.bundle
|
86
|
+
- ext/xcodeproj/prebuilt/universal.x86_64-darwin13-2.0.0/xcodeproj_ext.bundle
|
91
87
|
- bin/xcodeproj
|
92
88
|
homepage: https://github.com/cocoapods/xcodeproj
|
93
|
-
licenses:
|
89
|
+
licenses:
|
94
90
|
- MIT
|
95
91
|
metadata: {}
|
92
|
+
|
96
93
|
post_install_message:
|
97
|
-
rdoc_options:
|
98
|
-
|
94
|
+
rdoc_options:
|
95
|
+
- -x
|
96
|
+
- ext/.+\.(o|bundle)
|
97
|
+
require_paths:
|
99
98
|
- ext
|
100
99
|
- lib
|
101
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
102
|
-
requirements:
|
103
|
-
-
|
104
|
-
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
version: '0'
|
100
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- &id003
|
103
|
+
- ">="
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: "0"
|
106
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- *id003
|
111
109
|
requirements: []
|
110
|
+
|
112
111
|
rubyforge_project:
|
113
|
-
rubygems_version: 2.
|
112
|
+
rubygems_version: 2.1.8
|
114
113
|
signing_key:
|
115
114
|
specification_version: 3
|
116
115
|
summary: Create and modify Xcode projects from Ruby.
|
117
116
|
test_files: []
|
117
|
+
|
118
118
|
has_rdoc:
|