xcodeproj 0.13.1 → 0.14.0
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|