vendor 0.1.4 → 0.1.5
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.
- data/CHANGELOG.md +8 -0
- data/Gemfile +2 -2
- data/Gemfile.lock +2 -26
- data/VERSION +1 -1
- data/lib/vendor/api.rb +1 -1
- data/lib/vendor/cli/app.rb +2 -2
- data/lib/vendor/cli/auth.rb +1 -1
- data/lib/vendor/extensions/string.rb +8 -1
- data/lib/vendor/vendor_file/source.rb +1 -1
- data/lib/vendor/xcode/project.rb +22 -8
- data/lib/vendor/xcode/proxy.rb +2 -0
- data/lib/vendor/xcode/proxy/pbx_aggregate_target.rb +11 -0
- data/lib/vendor/xcode/proxy/unknown.rb +8 -0
- data/spec/lib/vendor/vendor_file/loader_spec.rb +1 -1
- data/spec/lib/vendor/vendor_file/source_spec.rb +1 -1
- data/spec/lib/vendor/xcode/project_spec.rb +20 -3
- data/spec/lib/vendor/xcode/proxy/pbx_project_spec.rb +4 -1
- data/spec/support/api_stubs.rb +13 -13
- data/spec/support/resources/projects/MultipleTargets/MultipleTargets.xcodeproj/project.pbxproj +36 -0
- data/spec/support/resources/projects/ProjectWithSpecs/ProjectWithSpecs.xcodeproj/project.pbxproj +38 -2
- data/spec/support/resources/projects/ProjectsToTestParsing/TestWithFamilyString.xcodeproj/project.pbxproj +295 -0
- data/spec/support/resources/projects/ProjectsToTestParsing/TestWithUnknownObject.xcodeproj/project.pbxproj +295 -0
- data/vendor.gemspec +2 -2
- metadata +41 -29
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
vendor (0.1.
|
4
|
+
vendor (0.1.5)
|
5
5
|
highline
|
6
6
|
json
|
7
7
|
rake
|
@@ -13,9 +13,7 @@ PATH
|
|
13
13
|
GEM
|
14
14
|
remote: http://rubygems.org/
|
15
15
|
specs:
|
16
|
-
archive-tar-minitar (0.5.2)
|
17
16
|
bond (0.4.1)
|
18
|
-
columnize (0.3.4)
|
19
17
|
diff-lcs (1.1.2)
|
20
18
|
fakeweb (1.3.0)
|
21
19
|
growl (1.0.3)
|
@@ -24,14 +22,9 @@ GEM
|
|
24
22
|
guard-rspec (0.5.0)
|
25
23
|
guard (>= 0.8.4)
|
26
24
|
highline (1.6.2)
|
27
|
-
json (1.6.
|
28
|
-
linecache (0.46)
|
29
|
-
rbx-require-relative (> 0.0.4)
|
30
|
-
linecache19 (0.5.12)
|
31
|
-
ruby_core_source (>= 0.1.4)
|
25
|
+
json (1.6.5)
|
32
26
|
mime-types (1.17.2)
|
33
27
|
rake (0.9.2.2)
|
34
|
-
rbx-require-relative (0.0.5)
|
35
28
|
rest-client (1.6.7)
|
36
29
|
mime-types (>= 1.16)
|
37
30
|
ripl (0.5.1)
|
@@ -44,21 +37,6 @@ GEM
|
|
44
37
|
rspec-expectations (2.6.0)
|
45
38
|
diff-lcs (~> 1.1.2)
|
46
39
|
rspec-mocks (2.6.0)
|
47
|
-
ruby-debug (0.10.4)
|
48
|
-
columnize (>= 0.1)
|
49
|
-
ruby-debug-base (~> 0.10.4.0)
|
50
|
-
ruby-debug-base (0.10.4)
|
51
|
-
linecache (>= 0.3)
|
52
|
-
ruby-debug-base19 (0.11.25)
|
53
|
-
columnize (>= 0.3.1)
|
54
|
-
linecache19 (>= 0.5.11)
|
55
|
-
ruby_core_source (>= 0.1.4)
|
56
|
-
ruby-debug19 (0.11.6)
|
57
|
-
columnize (>= 0.3.1)
|
58
|
-
linecache19 (>= 0.5.11)
|
59
|
-
ruby-debug-base19 (>= 0.11.19)
|
60
|
-
ruby_core_source (0.1.5)
|
61
|
-
archive-tar-minitar (>= 0.5.2)
|
62
40
|
rubyzip (0.9.4)
|
63
41
|
thor (0.14.6)
|
64
42
|
|
@@ -71,6 +49,4 @@ DEPENDENCIES
|
|
71
49
|
guard
|
72
50
|
guard-rspec
|
73
51
|
rspec
|
74
|
-
ruby-debug
|
75
|
-
ruby-debug19
|
76
52
|
vendor!
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.5
|
data/lib/vendor/api.rb
CHANGED
data/lib/vendor/cli/app.rb
CHANGED
@@ -35,7 +35,7 @@ module Vendor
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
-
desc "library push VENDOR_FILE", "Push a vendor package to
|
38
|
+
desc "library push VENDOR_FILE", "Push a vendor package to vendorkit.com"
|
39
39
|
def push(file)
|
40
40
|
begin
|
41
41
|
Vendor::CLI::Auth.with_api_key do |api_key|
|
@@ -105,7 +105,7 @@ module Vendor
|
|
105
105
|
Vendor::Template.copy "Vendorfile"
|
106
106
|
end
|
107
107
|
|
108
|
-
desc "auth", "Login to your
|
108
|
+
desc "auth", "Login to your vendorkit.com account"
|
109
109
|
def auth
|
110
110
|
begin
|
111
111
|
Vendor::CLI::Auth.with_api_key do |api_key|
|
data/lib/vendor/cli/auth.rb
CHANGED
@@ -17,7 +17,7 @@ module Vendor
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def fetch_api_key
|
20
|
-
Vendor.ui.warn "Please enter your
|
20
|
+
Vendor.ui.warn "Please enter your vendorkit.com login and password"
|
21
21
|
|
22
22
|
username = ask("Login: ")
|
23
23
|
password = ask("Password: ") { |q| q.echo = false }
|
@@ -4,7 +4,14 @@ class String
|
|
4
4
|
if length == 0
|
5
5
|
"\"\""
|
6
6
|
else
|
7
|
-
|
7
|
+
# This is really fucking ugly. So the thing is, I hae no idea what
|
8
|
+
# triggers quotes around string values in an ascii plist. If
|
9
|
+
# anyone knows how, please let me know. I can't just put quotes
|
10
|
+
# around everything, because for some reason, it doesn't work. So
|
11
|
+
# as I find characters that seem to trigger quotes, I drop them in
|
12
|
+
# here. Yes, this isn't a sustainable solution, but it works for
|
13
|
+
# now.
|
14
|
+
match(/\-|\s|\+|\<|\$|\"|\[|\=|\*|@|\,|\./) ? self.inspect : self
|
8
15
|
end
|
9
16
|
end
|
10
17
|
|
data/lib/vendor/xcode/project.rb
CHANGED
@@ -34,7 +34,7 @@ module Vendor::XCode
|
|
34
34
|
# because the custom implementation isn't very reliable. We use it mainly
|
35
35
|
# so the gem can run on systems that don't have plutil installed (like our
|
36
36
|
# CI server). The plutil app is far more reliable.
|
37
|
-
if RUBY_PLATFORM
|
37
|
+
if RUBY_PLATFORM !~ /darwin/ || ENV['PARSER'] == 'custom'
|
38
38
|
contents = File.readlines(@pbxproject).join("\n")
|
39
39
|
parsed = Vendor::Plist.parse_ascii(contents)
|
40
40
|
else
|
@@ -47,7 +47,11 @@ module Vendor::XCode
|
|
47
47
|
@objects_by_id = {}
|
48
48
|
|
49
49
|
@objects = parsed['objects'].map do |id, attributes|
|
50
|
-
|
50
|
+
begin
|
51
|
+
klass = Vendor::XCode::Proxy.const_get(attributes['isa'])
|
52
|
+
rescue NameError => e
|
53
|
+
klass = Vendor::XCode::Proxy::Unknown
|
54
|
+
end
|
51
55
|
|
52
56
|
@objects_by_id[id] = klass.new(:project => self, :id => id, :attributes => attributes)
|
53
57
|
end
|
@@ -163,8 +167,10 @@ module Vendor::XCode
|
|
163
167
|
end
|
164
168
|
|
165
169
|
def add_framework(framework, options = {})
|
166
|
-
# Find targets
|
167
|
-
|
170
|
+
# Find targets and filter out aggregate targets (we can't add files to
|
171
|
+
# those bad boys)
|
172
|
+
targets = targets_from_options(options, :ignore_aggregates => true)
|
173
|
+
|
168
174
|
Vendor.ui.debug %{Adding #{framework} to targets "#{targets.map(&:name)}"}
|
169
175
|
|
170
176
|
path = if framework.match(/\.dylib/)
|
@@ -262,8 +268,9 @@ module Vendor::XCode
|
|
262
268
|
raise StandardError.new("Could not find file `#{options[:file]}`") unless File.exists?(options[:file])
|
263
269
|
end
|
264
270
|
|
265
|
-
# Find targets
|
266
|
-
|
271
|
+
# Find targets and filter out aggregate targets (we can't add files to
|
272
|
+
# those bad boys)
|
273
|
+
targets = targets_from_options(options, :ignore_aggregates => true)
|
267
274
|
|
268
275
|
# Create the group
|
269
276
|
group = create_group(options[:path])
|
@@ -433,6 +440,7 @@ module Vendor::XCode
|
|
433
440
|
rescue Vendor::Plist::AsciiParser::ParseError => e
|
434
441
|
Vendor.ui.error "There was an error converting the XCode project back to a Plist"
|
435
442
|
Vendor.ui.error e.inspect
|
443
|
+
Vendor.ui.debug to_ascii_plist
|
436
444
|
|
437
445
|
false
|
438
446
|
end
|
@@ -468,8 +476,8 @@ module Vendor::XCode
|
|
468
476
|
keys.each { |k| raise StandardError.new("Missing :#{k} option") unless options[k] }
|
469
477
|
end
|
470
478
|
|
471
|
-
def targets_from_options(options)
|
472
|
-
if options[:targets]
|
479
|
+
def targets_from_options(options, opts = {})
|
480
|
+
targets = if options[:targets]
|
473
481
|
[ *options[:targets] ].map do |t|
|
474
482
|
if t == :all
|
475
483
|
root_object.targets
|
@@ -482,6 +490,12 @@ module Vendor::XCode
|
|
482
490
|
else
|
483
491
|
root_object.targets
|
484
492
|
end
|
493
|
+
|
494
|
+
if opts[:ignore_aggregates]
|
495
|
+
targets.reject { |t| t.kind_of? Vendor::XCode::Proxy::PBXAggregateTarget }
|
496
|
+
else
|
497
|
+
targets
|
498
|
+
end
|
485
499
|
end
|
486
500
|
|
487
501
|
end
|
data/lib/vendor/xcode/proxy.rb
CHANGED
@@ -5,6 +5,7 @@ module Vendor
|
|
5
5
|
module Proxy
|
6
6
|
|
7
7
|
autoload :Base, "vendor/xcode/proxy/base"
|
8
|
+
autoload :PBXAggregateTarget, "vendor/xcode/proxy/pbx_aggregate_target"
|
8
9
|
autoload :PBXProject, "vendor/xcode/proxy/pbx_project"
|
9
10
|
autoload :PBXFileReference, "vendor/xcode/proxy/pbx_file_reference"
|
10
11
|
autoload :PBXGroup, "vendor/xcode/proxy/pbx_group"
|
@@ -21,6 +22,7 @@ module Vendor
|
|
21
22
|
autoload :XCBuildConfiguration, "vendor/xcode/proxy/xc_build_configuration"
|
22
23
|
autoload :XCConfigurationList, "vendor/xcode/proxy/xc_configuration_list"
|
23
24
|
autoload :XCVersionGroup, "vendor/xcode/proxy/xc_version_group"
|
25
|
+
autoload :Unknown, "vendor/xcode/proxy/unknown"
|
24
26
|
|
25
27
|
end
|
26
28
|
|
@@ -22,7 +22,7 @@ describe Vendor::VendorFile::Loader do
|
|
22
22
|
end
|
23
23
|
|
24
24
|
it "should load all the sources" do
|
25
|
-
@sources.map(&:uri).should == [ "http://
|
25
|
+
@sources.map(&:uri).should == [ "http://vendorkit.com", "http://vendorage.com" ]
|
26
26
|
end
|
27
27
|
|
28
28
|
it "should load all the libraries" do
|
@@ -11,7 +11,7 @@ describe Vendor::VendorFile::Source do
|
|
11
11
|
it "should allow you to set a uri via a symbol" do
|
12
12
|
source = Vendor::VendorFile::Source.new(:vendorforge)
|
13
13
|
|
14
|
-
source.uri.should == "http://
|
14
|
+
source.uri.should == "http://vendorkit.com"
|
15
15
|
end
|
16
16
|
|
17
17
|
end
|
@@ -11,7 +11,7 @@ describe Vendor::XCode::Project do
|
|
11
11
|
context "ProjectWithSpecs.xcodeproj" do
|
12
12
|
|
13
13
|
it "should load all the objects" do
|
14
|
-
@project.objects.length.should ==
|
14
|
+
@project.objects.length.should == 52
|
15
15
|
end
|
16
16
|
|
17
17
|
it "should load the object version" do
|
@@ -52,6 +52,23 @@ describe Vendor::XCode::Project do
|
|
52
52
|
|
53
53
|
end
|
54
54
|
|
55
|
+
context "other projects in the ProjectsToTestParsing folder" do
|
56
|
+
|
57
|
+
projects = Dir[File.join(PROJECT_RESOURCE_PATH, "ProjectsToTestParsing/*.xcodeproj")]
|
58
|
+
|
59
|
+
projects.each do |p|
|
60
|
+
it "should correctly load and save '#{p}'" do
|
61
|
+
project = Vendor::XCode::Project.new(p)
|
62
|
+
contents = File.readlines(File.join(p, "project.pbxproj")).join("\n")
|
63
|
+
original = Vendor::Plist.parse_ascii(contents)
|
64
|
+
saved = Vendor::Plist.parse_ascii(project.to_ascii_plist)
|
65
|
+
|
66
|
+
original.should == saved
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
|
55
72
|
end
|
56
73
|
|
57
74
|
context "#name" do
|
@@ -244,7 +261,7 @@ describe Vendor::XCode::Project do
|
|
244
261
|
:path => "Frameworks", :name => "KeithPitt.framework",
|
245
262
|
:source_tree => :sdkroot })
|
246
263
|
|
247
|
-
@temp_project.add_framework "KeithPitt.framework", :targets => "Integration"
|
264
|
+
@temp_project.add_framework "KeithPitt.framework", :targets => [ "Integration", "AggregateTarget" ]
|
248
265
|
end
|
249
266
|
|
250
267
|
it "should add the dylibs to the right targets" do
|
@@ -563,7 +580,7 @@ describe Vendor::XCode::Project do
|
|
563
580
|
end
|
564
581
|
|
565
582
|
it "should raise an error if there is an invalid format" do
|
566
|
-
@project.should_receive(:to_ascii_plist).and_return { "asd; { f5him" }
|
583
|
+
@project.should_receive(:to_ascii_plist).twice.and_return { "asd; { f5him" }
|
567
584
|
|
568
585
|
@project.valid?.should be_false
|
569
586
|
end
|
@@ -20,7 +20,10 @@ describe Vendor::XCode::Proxy::PBXProject do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
it "should reference the targets" do
|
23
|
-
@pbx_project.targets.should == [
|
23
|
+
@pbx_project.targets.should == [
|
24
|
+
@project.find_object("5378749E14010A0A00D9B746"),
|
25
|
+
@project.find_object("53BD73C714D0AF9A00E30313")
|
26
|
+
]
|
24
27
|
end
|
25
28
|
|
26
29
|
end
|
data/spec/support/api_stubs.rb
CHANGED
@@ -24,47 +24,47 @@ VENDOR_JSON[:LibWithError] = { :name => "LibWithError",
|
|
24
24
|
:versions => [ [ "0.1", { :dependencies => [ ] } ] ]
|
25
25
|
}
|
26
26
|
|
27
|
-
FakeWeb.register_uri :get, "http://keithpitt:password@
|
27
|
+
FakeWeb.register_uri :get, "http://keithpitt:password@vendorkit.com/users/keithpitt/api_key.json",
|
28
28
|
:body => { :api_key => "secret" }.to_json
|
29
29
|
|
30
|
-
FakeWeb.register_uri :get, "http://keithpitt:wrong@
|
30
|
+
FakeWeb.register_uri :get, "http://keithpitt:wrong@vendorkit.com/users/keithpitt/api_key.json",
|
31
31
|
:status => 401
|
32
32
|
|
33
|
-
FakeWeb.register_uri :get, "http://keithpitt:error@
|
33
|
+
FakeWeb.register_uri :get, "http://keithpitt:error@vendorkit.com/users/keithpitt/api_key.json",
|
34
34
|
:status => 500
|
35
35
|
|
36
|
-
FakeWeb.register_uri :get, "http://
|
36
|
+
FakeWeb.register_uri :get, "http://vendorkit.com/vendors/DKBenchmark.json",
|
37
37
|
:body => VENDOR_JSON[:DKBenchmark].to_json
|
38
38
|
|
39
|
-
FakeWeb.register_uri :get, "http://
|
39
|
+
FakeWeb.register_uri :get, "http://vendorkit.com/vendors/DKBenchmark-With-Some-Crazy-Number-Name-.json",
|
40
40
|
:body => VENDOR_JSON[:DKBenchmarkCrazyName].to_json
|
41
41
|
|
42
|
-
FakeWeb.register_uri :get, "http://
|
42
|
+
FakeWeb.register_uri :get, "http://vendorkit.com/vendors/WithAnError.json",
|
43
43
|
:status => 500
|
44
44
|
|
45
|
-
FakeWeb.register_uri :get, "http://
|
45
|
+
FakeWeb.register_uri :get, "http://vendorkit.com/vendors/DoesNotExist.json",
|
46
46
|
:status => 404
|
47
47
|
|
48
|
-
FakeWeb.register_uri :get, "http://
|
48
|
+
FakeWeb.register_uri :get, "http://vendorkit.com/vendors/DKBenchmark/versions/0.1/download",
|
49
49
|
:body => File.read(File.join(PACKAGED_VENDOR_PATH, "DKBenchmark-0.1.vendor"))
|
50
50
|
|
51
|
-
FakeWeb.register_uri :get, "http://
|
51
|
+
FakeWeb.register_uri :get, "http://vendorkit.com/vendors/DKBenchmark/versions/0.2/download",
|
52
52
|
:body => File.read(File.join(PACKAGED_VENDOR_PATH, "DKBenchmark-0.1.vendor"))
|
53
53
|
|
54
|
-
FakeWeb.register_uri :get, "http://
|
54
|
+
FakeWeb.register_uri :get, "http://vendorkit.com/vendors/LibWithError.json",
|
55
55
|
:body => VENDOR_JSON[:LibWithError].to_json
|
56
56
|
|
57
|
-
FakeWeb.register_uri :get, "http://
|
57
|
+
FakeWeb.register_uri :get, "http://vendorkit.com/vendors/LibWithError/versions/0.1/download",
|
58
58
|
:status => 500
|
59
59
|
|
60
60
|
###
|
61
61
|
# DEPENDENCY CALLS
|
62
62
|
###
|
63
63
|
|
64
|
-
FakeWeb.register_uri :get, "http://
|
64
|
+
FakeWeb.register_uri :get, "http://vendorkit.com/vendors/DKRest.json",
|
65
65
|
:body => %{{"name":"DKRest","description":"Classes that make it easy to work with REST Services","release":"0.1","versions":[["0.1",{"dependencies":[["DKAPIRequest","0.1"],["DKCoreData","0.1"],["DKFile","0.1"],["DKPredicateBuilder","0.1"],["DKSupport","0.1"]]}]]}}
|
66
66
|
|
67
|
-
FakeWeb.register_uri :get, "http://
|
67
|
+
FakeWeb.register_uri :get, "http://vendorkit.com/vendors/DKCoreData.json",
|
68
68
|
:body => %{{"name":"DKCoreData","description":"A set of classes that make it easy to work with the Core Data framework on iOS and OSX","release":"0.1","versions":[["1.5.2",{"dependencies":[["DKFile","0.1"],["DKPredicateBuilder","0.1"],["DKSupport","0.1"]]}]]}}
|
69
69
|
|
70
70
|
FakeWeb.allow_net_connect = false
|
data/spec/support/resources/projects/MultipleTargets/MultipleTargets.xcodeproj/project.pbxproj
CHANGED
@@ -6,6 +6,19 @@
|
|
6
6
|
objectVersion = 46;
|
7
7
|
objects = {
|
8
8
|
|
9
|
+
/* Begin PBXAggregateTarget section */
|
10
|
+
53A7DCC114D0B3AE00A4FE42 /* AggregateTarget */ = {
|
11
|
+
isa = PBXAggregateTarget;
|
12
|
+
buildConfigurationList = 53A7DCC414D0B3AE00A4FE42 /* Build configuration list for PBXAggregateTarget "AggregateTarget" */;
|
13
|
+
buildPhases = (
|
14
|
+
);
|
15
|
+
dependencies = (
|
16
|
+
);
|
17
|
+
name = AggregateTarget;
|
18
|
+
productName = AggregateTarget;
|
19
|
+
};
|
20
|
+
/* End PBXAggregateTarget section */
|
21
|
+
|
9
22
|
/* Begin PBXBuildFile section */
|
10
23
|
53F42B5E14667527006B8F7C /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 53F42B5D14667527006B8F7C /* UIKit.framework */; };
|
11
24
|
53F42B6014667527006B8F7C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 53F42B5F14667527006B8F7C /* Foundation.framework */; };
|
@@ -285,6 +298,7 @@
|
|
285
298
|
53F42B8014667530006B8F7C /* MultipleTargets-iPad */,
|
286
299
|
53F42B9B14667536006B8F7C /* Specs */,
|
287
300
|
53F42BAF1466753B006B8F7C /* Integration */,
|
301
|
+
53A7DCC114D0B3AE00A4FE42 /* AggregateTarget */,
|
288
302
|
);
|
289
303
|
};
|
290
304
|
/* End PBXProject section */
|
@@ -423,6 +437,20 @@
|
|
423
437
|
/* End PBXVariantGroup section */
|
424
438
|
|
425
439
|
/* Begin XCBuildConfiguration section */
|
440
|
+
53A7DCC214D0B3AE00A4FE42 /* Debug */ = {
|
441
|
+
isa = XCBuildConfiguration;
|
442
|
+
buildSettings = {
|
443
|
+
PRODUCT_NAME = "$(TARGET_NAME)";
|
444
|
+
};
|
445
|
+
name = Debug;
|
446
|
+
};
|
447
|
+
53A7DCC314D0B3AE00A4FE42 /* Release */ = {
|
448
|
+
isa = XCBuildConfiguration;
|
449
|
+
buildSettings = {
|
450
|
+
PRODUCT_NAME = "$(TARGET_NAME)";
|
451
|
+
};
|
452
|
+
name = Release;
|
453
|
+
};
|
426
454
|
53F42B7B14667527006B8F7C /* Debug */ = {
|
427
455
|
isa = XCBuildConfiguration;
|
428
456
|
buildSettings = {
|
@@ -573,6 +601,14 @@
|
|
573
601
|
/* End XCBuildConfiguration section */
|
574
602
|
|
575
603
|
/* Begin XCConfigurationList section */
|
604
|
+
53A7DCC414D0B3AE00A4FE42 /* Build configuration list for PBXAggregateTarget "AggregateTarget" */ = {
|
605
|
+
isa = XCConfigurationList;
|
606
|
+
buildConfigurations = (
|
607
|
+
53A7DCC214D0B3AE00A4FE42 /* Debug */,
|
608
|
+
53A7DCC314D0B3AE00A4FE42 /* Release */,
|
609
|
+
);
|
610
|
+
defaultConfigurationIsVisible = 0;
|
611
|
+
};
|
576
612
|
53F42B5314667526006B8F7C /* Build configuration list for PBXProject "MultipleTargets" */ = {
|
577
613
|
isa = XCConfigurationList;
|
578
614
|
buildConfigurations = (
|