xcodeproj 0.24.3 → 0.25.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/command/config_dump.rb +1 -0
- data/lib/xcodeproj/constants.rb +23 -1
- data/lib/xcodeproj/gem_version.rb +1 -1
- data/lib/xcodeproj/plist_helper.rb +2 -4
- data/lib/xcodeproj/project/object/native_target.rb +24 -14
- data/lib/xcodeproj/project/object/root_object.rb +3 -1
- data/lib/xcodeproj/project/project_helper.rb +5 -5
- data/lib/xcodeproj/scheme.rb +4 -0
- data/lib/xcodeproj/xcodebuild_helper.rb +20 -11
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3f8b59744123dd288ccf5eed2303ce6e9ff441b6
|
4
|
+
data.tar.gz: e808faecace05daf138478734b8f737e648eda70
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0ac442b8dd9088340357b5d30c1330a6aff37bb63922fe43e1e5d9ab6f8e7fe9fb8fa6766bdcd8494d6ccb310fa3c10afe4c40148a1791546523771468fb1e70
|
7
|
+
data.tar.gz: dc0cd72c4c6c781c97e327837401b5ee0d66317a61ff7ed8c999a63fe34ea6c3cf77b0824a19a8d695345c16b9fa6c077587e182a96b6f5f5acf9a51c448b59d
|
@@ -2,6 +2,7 @@ module Xcodeproj
|
|
2
2
|
class Command
|
3
3
|
class ConfigDump < Command
|
4
4
|
def self.banner
|
5
|
+
require 'active_support/core_ext/string/strip.rb'
|
5
6
|
<<-eos.strip_heredoc
|
6
7
|
Dumps the build settings of all project targets for all configurations in
|
7
8
|
directories named by the target in given output directory.
|
data/lib/xcodeproj/constants.rb
CHANGED
@@ -10,6 +10,9 @@ module Xcodeproj
|
|
10
10
|
#
|
11
11
|
LAST_KNOWN_OSX_SDK = '10.10'
|
12
12
|
|
13
|
+
# @return [String] The last known watchOS SDK (unstable).
|
14
|
+
LAST_KNOWN_WATCHOS_SDK = '2.0'
|
15
|
+
|
13
16
|
# @return [String] The last known archive version to Xcodeproj.
|
14
17
|
#
|
15
18
|
LAST_KNOWN_ARCHIVE_VERSION = 1
|
@@ -23,7 +26,11 @@ module Xcodeproj
|
|
23
26
|
|
24
27
|
# @return [String] The last known object version to Xcodeproj.
|
25
28
|
#
|
26
|
-
LAST_UPGRADE_CHECK = '
|
29
|
+
LAST_UPGRADE_CHECK = '0700'
|
30
|
+
|
31
|
+
# @return [String] The last known object version to Xcodeproj.
|
32
|
+
#
|
33
|
+
LAST_SWIFT_UPGRADE_CHECK = '0700'
|
27
34
|
|
28
35
|
# @return [Hash] The all the known ISAs grouped by superclass.
|
29
36
|
#
|
@@ -101,7 +108,9 @@ module Xcodeproj
|
|
101
108
|
:app_extension => 'com.apple.product-type.app-extension',
|
102
109
|
:command_line_tool => 'com.apple.product-type.tool',
|
103
110
|
:watch_app => 'com.apple.product-type.application.watchapp',
|
111
|
+
:watch2_app => 'com.apple.product-type.application.watchapp2',
|
104
112
|
:watch_extension => 'com.apple.product-type.watchkit-extension',
|
113
|
+
:watch2_extension => 'com.apple.product-type.watchkit2-extension',
|
105
114
|
}.freeze
|
106
115
|
|
107
116
|
# @return [Hash] The extensions or the various product UTIs.
|
@@ -134,6 +143,9 @@ module Xcodeproj
|
|
134
143
|
[:osx] => {
|
135
144
|
'SDKROOT' => 'macosx',
|
136
145
|
}.freeze,
|
146
|
+
[:watchos] => {
|
147
|
+
'SDKROOT' => 'watchos',
|
148
|
+
}.freeze,
|
137
149
|
[:debug, :osx] => {
|
138
150
|
# Empty?
|
139
151
|
}.freeze,
|
@@ -145,6 +157,16 @@ module Xcodeproj
|
|
145
157
|
}.freeze,
|
146
158
|
[:debug, :application, :swift] => {
|
147
159
|
'SWIFT_OPTIMIZATION_LEVEL' => '-Onone',
|
160
|
+
'ENABLE_TESTABILITY' => 'YES',
|
161
|
+
}.freeze,
|
162
|
+
[:debug, :dynamic_library, :swift] => {
|
163
|
+
'ENABLE_TESTABILITY' => 'YES',
|
164
|
+
}.freeze,
|
165
|
+
[:debug, :framework, :swift] => {
|
166
|
+
'ENABLE_TESTABILITY' => 'YES',
|
167
|
+
}.freeze,
|
168
|
+
[:debug, :static_library, :swift] => {
|
169
|
+
'ENABLE_TESTABILITY' => 'YES',
|
148
170
|
}.freeze,
|
149
171
|
[:framework] => {
|
150
172
|
'VERSION_INFO_PREFIX' => '',
|
@@ -642,14 +642,10 @@ module DevToolsCore
|
|
642
642
|
nil
|
643
643
|
end
|
644
644
|
|
645
|
-
# @note The IB frameworks only seem to be necessary on Xcode 7+
|
646
|
-
#
|
647
645
|
def self.load_xcode_frameworks
|
648
646
|
load_xcode_framework('SharedFrameworks/DVTFoundation.framework/DVTFoundation')
|
649
647
|
load_xcode_framework('SharedFrameworks/DVTSourceControl.framework/DVTSourceControl')
|
650
648
|
load_xcode_framework('SharedFrameworks/CSServiceClient.framework/CSServiceClient')
|
651
|
-
load_xcode_framework('Frameworks/IBFoundation.framework/IBFoundation')
|
652
|
-
load_xcode_framework('Frameworks/IBAutolayoutFoundation.framework/IBAutolayoutFoundation')
|
653
649
|
load_xcode_framework('Frameworks/IDEFoundation.framework/IDEFoundation')
|
654
650
|
load_xcode_framework('PlugIns/Xcode3Core.ideplugin/Contents/MacOS/Xcode3Core')
|
655
651
|
end
|
@@ -703,6 +699,8 @@ module DevToolsCore
|
|
703
699
|
def initialize(path)
|
704
700
|
DevToolsCore.silence_stderr do
|
705
701
|
CoreFoundation.IDEInitialize(1, CoreFoundation::NULL)
|
702
|
+
|
703
|
+
# The parameter is whether UI must be initialized (which we don't need)
|
706
704
|
CoreFoundation.XCInitializeCoreIfNeeded(0)
|
707
705
|
end
|
708
706
|
|
@@ -93,6 +93,8 @@ module Xcodeproj
|
|
93
93
|
:ios
|
94
94
|
elsif sdk.include? 'macosx'
|
95
95
|
:osx
|
96
|
+
elsif sdk.include? 'watchos'
|
97
|
+
:watchos
|
96
98
|
end
|
97
99
|
end
|
98
100
|
|
@@ -108,10 +110,10 @@ module Xcodeproj
|
|
108
110
|
# platform.
|
109
111
|
#
|
110
112
|
def deployment_target
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
113
|
+
case platform_name
|
114
|
+
when :ios then common_resolved_build_setting('IPHONEOS_DEPLOYMENT_TARGET')
|
115
|
+
when :osx then common_resolved_build_setting('MACOSX_DEPLOYMENT_TARGET')
|
116
|
+
when :watchos then common_resolved_build_setting('WATCHOS_DEPLOYMENT_TARGET')
|
115
117
|
end
|
116
118
|
end
|
117
119
|
|
@@ -294,6 +296,10 @@ module Xcodeproj
|
|
294
296
|
group = project.frameworks_group['OS X'] || project.frameworks_group.new_group('OS X')
|
295
297
|
path_sdk_name = 'MacOSX'
|
296
298
|
path_sdk_version = sdk_version || Constants::LAST_KNOWN_OSX_SDK
|
299
|
+
when :watchos
|
300
|
+
group = project.frameworks_group['watchOS'] || project.frameworks_group.new_group('watchOS')
|
301
|
+
path_sdk_name = 'WatchOS'
|
302
|
+
path_sdk_version = sdk_version || Constants::LAST_KNOWN_WATCHOS_SDK
|
297
303
|
else
|
298
304
|
raise 'Unknown platform for target'
|
299
305
|
end
|
@@ -398,7 +404,7 @@ module Xcodeproj
|
|
398
404
|
# the files references of the source files that should be added
|
399
405
|
# to the target.
|
400
406
|
#
|
401
|
-
# @param [
|
407
|
+
# @param [String] compiler_flags
|
402
408
|
# the compiler flags for the source files.
|
403
409
|
#
|
404
410
|
# @yield_param [PBXBuildFile] each created build file.
|
@@ -407,18 +413,21 @@ module Xcodeproj
|
|
407
413
|
#
|
408
414
|
def add_file_references(file_references, compiler_flags = {})
|
409
415
|
file_references.map do |file|
|
410
|
-
build_file = project.new(PBXBuildFile)
|
411
|
-
build_file.file_ref = file
|
412
|
-
|
413
416
|
extension = File.extname(file.path).downcase
|
414
417
|
header_extensions = Constants::HEADER_FILES_EXTENSIONS
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
418
|
+
is_header_phase = header_extensions.include?(extension)
|
419
|
+
phase = is_header_phase ? headers_build_phase : source_build_phase
|
420
|
+
|
421
|
+
unless build_file = phase.build_file(file)
|
422
|
+
build_file = project.new(PBXBuildFile)
|
423
|
+
build_file.file_ref = file
|
424
|
+
phase.files << build_file
|
425
|
+
end
|
426
|
+
|
427
|
+
if compiler_flags && !compiler_flags.empty? && !is_header_phase
|
428
|
+
(build_file.settings ||= {}).merge!('COMPILER_FLAGS' => compiler_flags) do |_, old, new|
|
429
|
+
[old, new].compact.join(' ')
|
420
430
|
end
|
421
|
-
source_build_phase.files << build_file
|
422
431
|
end
|
423
432
|
|
424
433
|
yield build_file if block_given?
|
@@ -436,6 +445,7 @@ module Xcodeproj
|
|
436
445
|
#
|
437
446
|
def add_resources(resource_file_references)
|
438
447
|
resource_file_references.each do |file|
|
448
|
+
next if resources_build_phase.include?(file)
|
439
449
|
build_file = project.new(PBXBuildFile)
|
440
450
|
build_file.file_ref = file
|
441
451
|
resources_build_phase.files << build_file
|
@@ -20,7 +20,9 @@ module Xcodeproj
|
|
20
20
|
# - `LastUpgradeCheck`
|
21
21
|
# - `ORGANIZATIONNAME`
|
22
22
|
#
|
23
|
-
attribute :attributes, Hash,
|
23
|
+
attribute :attributes, Hash,
|
24
|
+
'LastSwiftUpdateCheck' => Constants::LAST_SWIFT_UPGRADE_CHECK,
|
25
|
+
'LastUpgradeCheck' => Constants::LAST_UPGRADE_CHECK
|
24
26
|
|
25
27
|
# @return [XCConfigurationList] the configuration list of the project.
|
26
28
|
#
|
@@ -59,7 +59,7 @@ module Xcodeproj
|
|
59
59
|
target.build_phases << project.new(PBXFrameworksBuildPhase)
|
60
60
|
|
61
61
|
# Frameworks
|
62
|
-
framework_name = (platform == :
|
62
|
+
framework_name = (platform == :osx) ? 'Cocoa' : 'Foundation'
|
63
63
|
target.add_system_framework(framework_name)
|
64
64
|
|
65
65
|
target
|
@@ -234,10 +234,10 @@ module Xcodeproj
|
|
234
234
|
end
|
235
235
|
|
236
236
|
if deployment_target
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
237
|
+
case platform
|
238
|
+
when :ios then settings['IPHONEOS_DEPLOYMENT_TARGET'] = deployment_target
|
239
|
+
when :osx then settings['MACOSX_DEPLOYMENT_TARGET'] = deployment_target
|
240
|
+
when :watchos then settings['WATCHOS_DEPLOYMENT_TARGET'] = deployment_target
|
241
241
|
end
|
242
242
|
end
|
243
243
|
|
data/lib/xcodeproj/scheme.rb
CHANGED
@@ -33,6 +33,8 @@ module Xcodeproj
|
|
33
33
|
@test_action.attributes['shouldUseLaunchSchemeArgsEnv'] = 'YES'
|
34
34
|
@test_action.attributes['buildConfiguration'] = 'Debug'
|
35
35
|
|
36
|
+
@test_action_additional_options = @test_action.add_element 'AdditionalOptions'
|
37
|
+
|
36
38
|
@testables = @test_action.add_element 'Testables'
|
37
39
|
|
38
40
|
@launch_action = @scheme.add_element 'LaunchAction'
|
@@ -43,6 +45,7 @@ module Xcodeproj
|
|
43
45
|
@launch_action.attributes['buildConfiguration'] = 'Debug'
|
44
46
|
@launch_action.attributes['ignoresPersistentStateOnLaunch'] = 'NO'
|
45
47
|
@launch_action.attributes['debugDocumentVersioning'] = 'YES'
|
48
|
+
@launch_action.attributes['debugServiceExtension'] = 'internal'
|
46
49
|
@launch_action.attributes['allowLocationSimulation'] = 'YES'
|
47
50
|
@launch_action.add_element('AdditionalOptions')
|
48
51
|
|
@@ -117,6 +120,7 @@ module Xcodeproj
|
|
117
120
|
#
|
118
121
|
def set_launch_target(build_target)
|
119
122
|
launch_product_runnable = @launch_action.add_element 'BuildableProductRunnable'
|
123
|
+
launch_product_runnable.attributes['runnableDebuggingMode'] = '0'
|
120
124
|
|
121
125
|
launch_buildable_reference = launch_product_runnable.add_element 'BuildableReference'
|
122
126
|
launch_buildable_reference.attributes['BuildableIdentifier'] = 'primary'
|
@@ -10,14 +10,21 @@ module Xcodeproj
|
|
10
10
|
#
|
11
11
|
def last_ios_sdk
|
12
12
|
parse_sdks_if_needed
|
13
|
-
|
13
|
+
versions_by_sdk[:ios].sort.last
|
14
14
|
end
|
15
15
|
|
16
16
|
# @return [String] The version of the last OS X sdk.
|
17
17
|
#
|
18
18
|
def last_osx_sdk
|
19
19
|
parse_sdks_if_needed
|
20
|
-
|
20
|
+
versions_by_sdk[:osx].sort.last
|
21
|
+
end
|
22
|
+
|
23
|
+
# @return [String] The version of the last watchOS sdk.
|
24
|
+
#
|
25
|
+
def last_watchos_sdk
|
26
|
+
parse_sdks_if_needed
|
27
|
+
versions_by_sdk[:watchos].sort.last
|
21
28
|
end
|
22
29
|
|
23
30
|
private
|
@@ -28,22 +35,24 @@ module Xcodeproj
|
|
28
35
|
|
29
36
|
# @return [Hash] The versions of the sdks grouped by name (`:ios`, or `:osx`).
|
30
37
|
#
|
31
|
-
attr_accessor :
|
38
|
+
attr_accessor :versions_by_sdk
|
32
39
|
|
33
40
|
# @return [void] Parses the SDKs returned by xcodebuild and stores the
|
34
41
|
# information in the `needs_to_parse_sdks` hash.
|
35
42
|
#
|
36
43
|
def parse_sdks_if_needed
|
37
44
|
if @needs_to_parse_sdks
|
38
|
-
@
|
39
|
-
@
|
40
|
-
@
|
45
|
+
@versions_by_sdk = {}
|
46
|
+
@versions_by_sdk[:osx] = []
|
47
|
+
@versions_by_sdk[:ios] = []
|
48
|
+
@versions_by_sdk[:watchos] = []
|
41
49
|
if xcodebuild_available?
|
42
|
-
|
43
|
-
|
50
|
+
sdks = parse_sdks_information(xcodebuild_sdks)
|
51
|
+
sdks.each do |(name, version)|
|
44
52
|
case
|
45
|
-
when name == 'macosx' then @
|
46
|
-
when name == 'iphoneos' then @
|
53
|
+
when name == 'macosx' then @versions_by_sdk[:osx] << version
|
54
|
+
when name == 'iphoneos' then @versions_by_sdk[:ios] << version
|
55
|
+
when name == 'watchos' then @versions_by_sdk[:watchos] << version
|
47
56
|
end
|
48
57
|
end
|
49
58
|
end
|
@@ -64,7 +73,7 @@ module Xcodeproj
|
|
64
73
|
# is the name of the SDK and the second is the version.
|
65
74
|
#
|
66
75
|
def parse_sdks_information(output)
|
67
|
-
output.scan(/-sdk (macosx|iphoneos)(.+\w)/)
|
76
|
+
output.scan(/-sdk (macosx|iphoneos|watchos)(.+\w)/)
|
68
77
|
end
|
69
78
|
|
70
79
|
# @return [String] The sdk information reported by xcodebuild.
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xcodeproj
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.25.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eloy Duran
|
@@ -14,28 +14,28 @@ dependencies:
|
|
14
14
|
name: activesupport
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '3'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: colored
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.2'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.2'
|
41
41
|
description: Xcodeproj lets you create and modify Xcode projects from Ruby. Script
|
@@ -100,12 +100,12 @@ require_paths:
|
|
100
100
|
- lib
|
101
101
|
required_ruby_version: !ruby/object:Gem::Requirement
|
102
102
|
requirements:
|
103
|
-
- -
|
103
|
+
- - '>='
|
104
104
|
- !ruby/object:Gem::Version
|
105
105
|
version: 2.0.0
|
106
106
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- -
|
108
|
+
- - '>='
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
requirements: []
|