xcodeproj 0.27.2 → 0.28.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/lib/xcodeproj/constants.rb +9 -3
- data/lib/xcodeproj/gem_version.rb +1 -1
- data/lib/xcodeproj/project/object/build_configuration.rb +10 -2
- data/lib/xcodeproj/project/object/helpers/groupable_helper.rb +1 -1
- data/lib/xcodeproj/project/object/native_target.rb +7 -0
- data/lib/xcodeproj/project/object/target_dependency.rb +13 -0
- data/lib/xcodeproj/project/project_helper.rb +1 -0
- data/lib/xcodeproj/project/uuid_generator.rb +1 -0
- data/lib/xcodeproj/project.rb +1 -0
- data/lib/xcodeproj/scheme/test_action.rb +15 -1
- data/lib/xcodeproj/scheme.rb +14 -0
- data/lib/xcodeproj/xcodebuild_helper.rb +10 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c7d00b03edaadced305aa8777a0d05a924c03c0e
|
4
|
+
data.tar.gz: 0a68995ecb9c3345dd3551f16dc3870b4aa82cdd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7eebcc5974da2e09f13f8cf3502a4c6544681822bc8434e88c343aafd39cee71b34e7980e1a6756485c1ed2eb0d6f4fa96bcddb7dd5d7e1b5cb0f9038bebee0a
|
7
|
+
data.tar.gz: 040a7c2c88ceb88e0fa8184c9b8efbf67829558576751c82891f254d7bcdbc1e8b5a23c511e4073acdd6599f8391e3adae49bebe9faa7d3d38fa1a1ce685e9d3
|
data/lib/xcodeproj/constants.rb
CHANGED
@@ -4,13 +4,16 @@ module Xcodeproj
|
|
4
4
|
module Constants
|
5
5
|
# @return [String] The last known iOS SDK (stable).
|
6
6
|
#
|
7
|
-
LAST_KNOWN_IOS_SDK = '
|
7
|
+
LAST_KNOWN_IOS_SDK = '9.0'
|
8
8
|
|
9
9
|
# @return [String] The last known OS X SDK (stable).
|
10
10
|
#
|
11
|
-
LAST_KNOWN_OSX_SDK = '10.
|
11
|
+
LAST_KNOWN_OSX_SDK = '10.11'
|
12
12
|
|
13
|
-
# @return [String] The last known
|
13
|
+
# @return [String] The last known tvOS SDK (unstable).
|
14
|
+
LAST_KNOWN_TVOS_SDK = '9.0'
|
15
|
+
|
16
|
+
# @return [String] The last known watchOS SDK.
|
14
17
|
LAST_KNOWN_WATCHOS_SDK = '2.0'
|
15
18
|
|
16
19
|
# @return [String] The last known archive version to Xcodeproj.
|
@@ -150,6 +153,9 @@ module Xcodeproj
|
|
150
153
|
[:osx] => {
|
151
154
|
'SDKROOT' => 'macosx',
|
152
155
|
}.freeze,
|
156
|
+
[:tvos] => {
|
157
|
+
'SDKROOT' => 'appletvos',
|
158
|
+
}.freeze,
|
153
159
|
[:watchos] => {
|
154
160
|
'SDKROOT' => 'watchos',
|
155
161
|
}.freeze,
|
@@ -31,7 +31,7 @@ module Xcodeproj
|
|
31
31
|
#
|
32
32
|
def pretty_print
|
33
33
|
data = {}
|
34
|
-
data['Build Settings'] =
|
34
|
+
data['Build Settings'] = sorted_build_settings
|
35
35
|
if base_configuration_reference
|
36
36
|
data['Base Configuration'] = base_configuration_reference.pretty_print
|
37
37
|
end
|
@@ -44,11 +44,19 @@ module Xcodeproj
|
|
44
44
|
# @return [void]
|
45
45
|
#
|
46
46
|
def sort(_options = nil)
|
47
|
+
self.build_settings = sorted_build_settings
|
48
|
+
end
|
49
|
+
|
50
|
+
#---------------------------------------------------------------------#
|
51
|
+
|
52
|
+
private
|
53
|
+
|
54
|
+
def sorted_build_settings
|
47
55
|
sorted = {}
|
48
56
|
build_settings.keys.sort.each do |key|
|
49
57
|
sorted[key] = build_settings[key]
|
50
58
|
end
|
51
|
-
|
59
|
+
sorted
|
52
60
|
end
|
53
61
|
|
54
62
|
#---------------------------------------------------------------------#
|
@@ -94,6 +94,8 @@ module Xcodeproj
|
|
94
94
|
:ios
|
95
95
|
elsif sdk.include? 'macosx'
|
96
96
|
:osx
|
97
|
+
elsif sdk.include? 'appletvos'
|
98
|
+
:tvos
|
97
99
|
elsif sdk.include? 'watchos'
|
98
100
|
:watchos
|
99
101
|
end
|
@@ -113,6 +115,7 @@ module Xcodeproj
|
|
113
115
|
case platform_name
|
114
116
|
when :ios then common_resolved_build_setting('IPHONEOS_DEPLOYMENT_TARGET')
|
115
117
|
when :osx then common_resolved_build_setting('MACOSX_DEPLOYMENT_TARGET')
|
118
|
+
when :tvos then common_resolved_build_setting('TVOS_DEPLOYMENT_TARGET')
|
116
119
|
when :watchos then common_resolved_build_setting('WATCHOS_DEPLOYMENT_TARGET')
|
117
120
|
end
|
118
121
|
end
|
@@ -296,6 +299,10 @@ module Xcodeproj
|
|
296
299
|
group = project.frameworks_group['OS X'] || project.frameworks_group.new_group('OS X')
|
297
300
|
path_sdk_name = 'MacOSX'
|
298
301
|
path_sdk_version = sdk_version || Constants::LAST_KNOWN_OSX_SDK
|
302
|
+
when :tvos
|
303
|
+
group = project.frameworks_group['tvOS'] || project.frameworks_group.new_group('tvOS')
|
304
|
+
path_sdk_name = 'AppleTVOS'
|
305
|
+
path_sdk_version = sdk_version || Constants::LAST_KNOWN_TVOS_SDK
|
299
306
|
when :watchos
|
300
307
|
group = project.frameworks_group['watchOS'] || project.frameworks_group.new_group('watchOS')
|
301
308
|
path_sdk_name = 'WatchOS'
|
@@ -39,6 +39,19 @@ module Xcodeproj
|
|
39
39
|
return target_proxy.remote_info if target_proxy
|
40
40
|
end
|
41
41
|
|
42
|
+
# @note This override is necessary because Xcode allows for circular
|
43
|
+
# target dependencies.
|
44
|
+
#
|
45
|
+
# @return [Hash<String => String>] Returns a cascade representation of
|
46
|
+
# the object without UUIDs.
|
47
|
+
#
|
48
|
+
def to_tree_hash
|
49
|
+
hash = {}
|
50
|
+
hash['displayName'] = display_name
|
51
|
+
hash['isa'] = isa
|
52
|
+
hash
|
53
|
+
end
|
54
|
+
|
42
55
|
# @note This is a no-op, because the targets could theoretically depend
|
43
56
|
# on each other, leading to a stack level too deep error.
|
44
57
|
#
|
@@ -237,6 +237,7 @@ module Xcodeproj
|
|
237
237
|
case platform
|
238
238
|
when :ios then settings['IPHONEOS_DEPLOYMENT_TARGET'] = deployment_target
|
239
239
|
when :osx then settings['MACOSX_DEPLOYMENT_TARGET'] = deployment_target
|
240
|
+
when :tvos then settings['TVOS_DEPLOYMENT_TARGET'] = deployment_target
|
240
241
|
when :watchos then settings['WATCHOS_DEPLOYMENT_TARGET'] = deployment_target
|
241
242
|
end
|
242
243
|
end
|
@@ -42,6 +42,7 @@ module Xcodeproj
|
|
42
42
|
|
43
43
|
def generate_paths(object, path = '')
|
44
44
|
existing = @paths_by_object[object] || path
|
45
|
+
return existing if @paths_by_object.key?(object)
|
45
46
|
@paths_by_object[object] = path.size > existing.size ? path : existing
|
46
47
|
|
47
48
|
object.to_one_attributes.each do |attrb|
|
data/lib/xcodeproj/project.rb
CHANGED
@@ -245,6 +245,7 @@ module Xcodeproj
|
|
245
245
|
if attributes
|
246
246
|
klass = Object.const_get(attributes['isa'])
|
247
247
|
object = klass.new(self, uuid)
|
248
|
+
objects_by_uuid[uuid] = object
|
248
249
|
object.add_referrer(self) if root_object
|
249
250
|
object.configure_with_plist(objects_by_uuid_plist)
|
250
251
|
object
|
@@ -28,13 +28,27 @@ module Xcodeproj
|
|
28
28
|
end
|
29
29
|
|
30
30
|
# @param [Bool] flag
|
31
|
-
# Set
|
31
|
+
# Set whether this Test Action should use the same arguments and environment variables
|
32
32
|
# as the Launch Action.
|
33
33
|
#
|
34
34
|
def should_use_launch_scheme_args_env=(flag)
|
35
35
|
@xml_element.attributes['shouldUseLaunchSchemeArgsEnv'] = bool_to_string(flag)
|
36
36
|
end
|
37
37
|
|
38
|
+
# @return [Bool]
|
39
|
+
# Whether Clang Code Coverage is enabled ('Gather coverage data' turned ON)
|
40
|
+
#
|
41
|
+
def code_coverage_enabled?
|
42
|
+
string_to_bool(@xml_element.attributes['codeCoverageEnabled'])
|
43
|
+
end
|
44
|
+
|
45
|
+
# @rparam [Bool] flag
|
46
|
+
# Set whether Clang Code Coverage is enabled ('Gather coverage data' turned ON)
|
47
|
+
#
|
48
|
+
def code_coverage_enabled=(flag)
|
49
|
+
@xml_element.attributes['codeCoverageEnabled'] = bool_to_string(flag)
|
50
|
+
end
|
51
|
+
|
38
52
|
# @return [Array<TestableReference>]
|
39
53
|
# The list of TestableReference (test bundles) associated with this Test Action
|
40
54
|
#
|
data/lib/xcodeproj/scheme.rb
CHANGED
@@ -29,6 +29,7 @@ module Xcodeproj
|
|
29
29
|
#
|
30
30
|
def initialize(file_path = nil)
|
31
31
|
if file_path
|
32
|
+
@file_path = file_path
|
32
33
|
@doc = REXML::Document.new(File.new(file_path))
|
33
34
|
@doc.context[:attribute_quote] = :quote
|
34
35
|
|
@@ -311,6 +312,19 @@ module Xcodeproj
|
|
311
312
|
end
|
312
313
|
end
|
313
314
|
|
315
|
+
# Serializes the current state of the object to the original ".xcscheme"
|
316
|
+
# file this XCScheme was created from, overriding the original file.
|
317
|
+
#
|
318
|
+
# Requires that the XCScheme object was initialized using a file path.
|
319
|
+
#
|
320
|
+
def save!
|
321
|
+
raise Informative, 'This XCScheme object was not initialized ' \
|
322
|
+
'using a file path. Use save_as instead.' unless @file_path
|
323
|
+
File.open(@file_path, 'w') do |f|
|
324
|
+
f.write(to_s)
|
325
|
+
end
|
326
|
+
end
|
327
|
+
|
314
328
|
#-------------------------------------------------------------------------#
|
315
329
|
|
316
330
|
# XML formatter which closely mimics the output generated by Xcode.
|
@@ -20,6 +20,13 @@ module Xcodeproj
|
|
20
20
|
versions_by_sdk[:osx].sort.last
|
21
21
|
end
|
22
22
|
|
23
|
+
# @return [String] The version of the last tvOS sdk.
|
24
|
+
#
|
25
|
+
def last_tvos_sdk
|
26
|
+
parse_sdks_if_needed
|
27
|
+
versions_by_sdk[:tvos].sort.last
|
28
|
+
end
|
29
|
+
|
23
30
|
# @return [String] The version of the last watchOS sdk.
|
24
31
|
#
|
25
32
|
def last_watchos_sdk
|
@@ -45,6 +52,7 @@ module Xcodeproj
|
|
45
52
|
@versions_by_sdk = {}
|
46
53
|
@versions_by_sdk[:osx] = []
|
47
54
|
@versions_by_sdk[:ios] = []
|
55
|
+
@versions_by_sdk[:tvos] = []
|
48
56
|
@versions_by_sdk[:watchos] = []
|
49
57
|
if xcodebuild_available?
|
50
58
|
sdks = parse_sdks_information(xcodebuild_sdks)
|
@@ -52,6 +60,7 @@ module Xcodeproj
|
|
52
60
|
case
|
53
61
|
when name == 'macosx' then @versions_by_sdk[:osx] << version
|
54
62
|
when name == 'iphoneos' then @versions_by_sdk[:ios] << version
|
63
|
+
when name == 'appletvos' then @versions_by_sdk[:tvos] << version
|
55
64
|
when name == 'watchos' then @versions_by_sdk[:watchos] << version
|
56
65
|
end
|
57
66
|
end
|
@@ -73,7 +82,7 @@ module Xcodeproj
|
|
73
82
|
# is the name of the SDK and the second is the version.
|
74
83
|
#
|
75
84
|
def parse_sdks_information(output)
|
76
|
-
output.scan(/-sdk (macosx|iphoneos|watchos)(.+\w)/)
|
85
|
+
output.scan(/-sdk (macosx|iphoneos|watchos|appletvos)(.+\w)/)
|
77
86
|
end
|
78
87
|
|
79
88
|
# @return [String] The sdk information reported by xcodebuild.
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xcodeproj
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.28.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eloy Duran
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-10-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|