cinder 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. data/.gitignore +18 -0
  2. data/Gemfile +5 -0
  3. data/LICENSE.txt +22 -0
  4. data/README.md +79 -0
  5. data/Rakefile +10 -0
  6. data/bin/cinder +19 -0
  7. data/cinder.gemspec +34 -0
  8. data/lib/cinder.rb +5 -0
  9. data/lib/cinder/commands.rb +13 -0
  10. data/lib/cinder/commands/build.rb +69 -0
  11. data/lib/cinder/commands/lint.rb +284 -0
  12. data/lib/cinder/commands/setup.rb +32 -0
  13. data/lib/cinder/external_commands.rb +43 -0
  14. data/lib/cinder/version.rb +3 -0
  15. data/spec/cinder/commands/lint_spec.rb +121 -0
  16. data/spec/cinder_spec.rb +9 -0
  17. data/spec/fake_workspace.rb +23 -0
  18. data/spec/fixtures/both-configs-sans-ad_hoc-provisioning/Foo.xcodeproj/project.pbxproj +329 -0
  19. data/spec/fixtures/both-configs-sans-ad_hoc-provisioning/Foo.xcworkspace/contents.xcworkspacedata +1 -0
  20. data/spec/fixtures/both-configs-sans-ad_hoc-provisioning/Podfile +3 -0
  21. data/spec/fixtures/both-configs-sans-ad_hoc-provisioning/enterprise.mobileprovision +0 -0
  22. data/spec/fixtures/both-configs-sans-enterprise-provisioning/Foo.xcodeproj/project.pbxproj +329 -0
  23. data/spec/fixtures/both-configs-sans-enterprise-provisioning/Foo.xcworkspace/contents.xcworkspacedata +1 -0
  24. data/spec/fixtures/both-configs-sans-enterprise-provisioning/Podfile +3 -0
  25. data/spec/fixtures/both-configs-sans-enterprise-provisioning/ad_hoc.mobileprovision +0 -0
  26. data/spec/fixtures/both-configs/Foo.xcodeproj/project.pbxproj +329 -0
  27. data/spec/fixtures/both-configs/Foo.xcodeproj/xcshareddata/xcschemes/Foo.xcscheme +0 -0
  28. data/spec/fixtures/both-configs/Foo.xcworkspace/contents.xcworkspacedata +1 -0
  29. data/spec/fixtures/both-configs/Podfile +3 -0
  30. data/spec/fixtures/both-configs/ad_hoc.mobileprovision +0 -0
  31. data/spec/fixtures/both-configs/enterprise.mobileprovision +0 -0
  32. data/spec/fixtures/empty-podfile/Foo.xcodeproj/project.pbxproj +319 -0
  33. data/spec/fixtures/empty-podfile/Foo.xcworkspace/contents.xcworkspacedata +1 -0
  34. data/spec/fixtures/empty-podfile/Podfile +0 -0
  35. data/spec/fixtures/lowercase/Podfile +3 -0
  36. data/spec/fixtures/lowercase/ad_hoc.mobileprovision +0 -0
  37. data/spec/fixtures/lowercase/foo.xcodeproj/project.pbxproj +319 -0
  38. data/spec/fixtures/lowercase/foo.xcodeproj/xcshareddata/xcschemes/foo.xcscheme +0 -0
  39. data/spec/fixtures/lowercase/foo.xcworkspace/contents.xcworkspacedata +1 -0
  40. data/spec/fixtures/multiple-workspaces/Bar.xcworkspace/contents.xcworkspacedata +1 -0
  41. data/spec/fixtures/multiple-workspaces/Foo.xcodeproj/project.pbxproj +319 -0
  42. data/spec/fixtures/multiple-workspaces/Foo.xcworkspace/contents.xcworkspacedata +1 -0
  43. data/spec/fixtures/multiple-workspaces/Podfile +3 -0
  44. data/spec/fixtures/proper/Foo.xcodeproj/project.pbxproj +319 -0
  45. data/spec/fixtures/proper/Foo.xcodeproj/xcshareddata/xcschemes/Foo.xcscheme +0 -0
  46. data/spec/fixtures/proper/Foo.xcworkspace/contents.xcworkspacedata +1 -0
  47. data/spec/fixtures/proper/Podfile +3 -0
  48. data/spec/fixtures/proper/ad_hoc.mobileprovision +0 -0
  49. data/spec/fixtures/sans-ad_hoc-or-enterprise-config/Foo.xcodeproj/project.pbxproj +309 -0
  50. data/spec/fixtures/sans-ad_hoc-or-enterprise-config/Foo.xcworkspace/contents.xcworkspacedata +1 -0
  51. data/spec/fixtures/sans-ad_hoc-or-enterprise-config/Podfile +3 -0
  52. data/spec/fixtures/sans-podfile/Foo.xcodeproj/project.pbxproj +319 -0
  53. data/spec/fixtures/sans-podfile/Foo.xcworkspace/contents.xcworkspacedata +1 -0
  54. data/spec/fixtures/sans-project/Foo.xcworkspace/contents.xcworkspacedata +1 -0
  55. data/spec/fixtures/sans-project/Podfile +3 -0
  56. data/spec/fixtures/sans-target/Foo.xcodeproj/project.pbxproj +113 -0
  57. data/spec/fixtures/sans-target/Foo.xcworkspace/contents.xcworkspacedata +1 -0
  58. data/spec/fixtures/sans-target/Podfile +3 -0
  59. data/spec/fixtures/sans-workspace/Foo.xcodeproj/project.pbxproj +319 -0
  60. data/spec/fixtures/sans-workspace/Podfile +3 -0
  61. data/spec/fixtures/whitespace-workspace/Foo App.xcodeproj/project.pbxproj +319 -0
  62. data/spec/fixtures/whitespace-workspace/Foo App.xcworkspace/contents.xcworkspacedata +1 -0
  63. data/spec/fixtures/whitespace-workspace/Podfile +3 -0
  64. data/spec/fixtures/workspace-project-mismatch/Bar.xcodeproj/project.pbxproj +319 -0
  65. data/spec/fixtures/workspace-project-mismatch/Foo.xcworkspace/contents.xcworkspacedata +1 -0
  66. data/spec/fixtures/workspace-project-mismatch/Podfile +3 -0
  67. data/spec/fixtures/workspace-projects-mismatch/Bar.xcodeproj/project.pbxproj +319 -0
  68. data/spec/fixtures/workspace-projects-mismatch/Baz.xcodeproj/project.pbxproj +319 -0
  69. data/spec/fixtures/workspace-projects-mismatch/Foo.xcworkspace/contents.xcworkspacedata +1 -0
  70. data/spec/fixtures/workspace-projects-mismatch/Podfile +3 -0
  71. data/spec/fixtures/workspace-target-mismatch/Foo.xcodeproj/project.pbxproj +319 -0
  72. data/spec/fixtures/workspace-target-mismatch/Foo.xcworkspace/contents.xcworkspacedata +1 -0
  73. data/spec/fixtures/workspace-target-mismatch/Podfile +3 -0
  74. data/spec/fixtures/workspace-targets-mismatch/Foo.xcodeproj/project.pbxproj +504 -0
  75. data/spec/fixtures/workspace-targets-mismatch/Foo.xcworkspace/contents.xcworkspacedata +1 -0
  76. data/spec/fixtures/workspace-targets-mismatch/Podfile +3 -0
  77. data/spec/spec_helper.rb +20 -0
  78. metadata +363 -0
@@ -0,0 +1,32 @@
1
+ module Cinder
2
+ command :setup do |c|
3
+ c.syntax = 'cinder setup'
4
+ c.summary = 'Setup project.'
5
+ c.description = 'Set up project for development and building.'
6
+
7
+ c.action do |args, options|
8
+ install_cocoapods_dependencies
9
+ import_provisioning_profiles
10
+ say_ok 'Setup complete'
11
+ end
12
+
13
+ private
14
+
15
+ def self.install_cocoapods_dependencies
16
+ log 'pod', 'Installing Cocoapods dependencies'
17
+ pod! 'install'
18
+ end
19
+
20
+ def self.import_provisioning_profiles
21
+ profiles_home = File.expand_path('~/Library/MobileDevice/Provisioning Profiles')
22
+ Dir['{ad_hoc,app_store,enterprise}.mobileprovision'].each do |f|
23
+ p7 = OpenSSL::PKCS7.new(File.read(f))
24
+ p7.verify([], OpenSSL::X509::Store.new)
25
+ profile = Plist::parse_xml(p7.data)
26
+ mkdir! %{-p "#{profiles_home}"} unless File.directory? profiles_home
27
+ log 'cp', "Importing `#{f}'"
28
+ cp! %{#{f} "#{profiles_home}/#{profile['UUID']}.mobileprovision"}
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,43 @@
1
+ module Cinder
2
+ def self.pod! command
3
+ execute_command 'bin/pod', command
4
+ end
5
+ def self.mkdir! command
6
+ execute_command :mkdir, command
7
+ end
8
+ def self.cp! command
9
+ execute_command :cp, command
10
+ end
11
+ def self.security! command
12
+ execute_command :security, command
13
+ end
14
+ def self.git! command
15
+ execute_command :git, command
16
+ end
17
+ def self.PlistBuddy! command
18
+ execute_command '/usr/libexec/PlistBuddy', command
19
+ end
20
+ def self.ipa! command
21
+ execute_command 'bin/ipa', command
22
+ end
23
+
24
+ private
25
+
26
+ def self.execute_command name, command
27
+ bin = `which #{name}`.strip
28
+ say_error "command not found: #{name}" and abort if bin.empty?
29
+
30
+ require 'open4'
31
+
32
+ full_command = "#{bin} #{command}"
33
+
34
+ out = ''
35
+ options = {:stdout => out, :stderr => out, :status => true}
36
+ status = Open4.spawn(full_command, options)
37
+ unless status.success?
38
+ log name, out
39
+ say_error "#{bin} exited with status #{status.exitstatus}" and abort
40
+ end
41
+ out
42
+ end
43
+ end
@@ -0,0 +1,3 @@
1
+ module Cinder
2
+ VERSION = "0.5.1"
3
+ end
@@ -0,0 +1,121 @@
1
+ require "spec_helper"
2
+ require 'stringio'
3
+ require "cinder/commands/lint"
4
+
5
+ describe Cinder::Linter do
6
+
7
+ let(:ad_hoc_profile) do
8
+ double 'ad_hoc_profile',
9
+ :valid? => true,
10
+ :distribution => :ad_hoc,
11
+ :ad_hoc? => true,
12
+ :devices => ['BADF00D']
13
+ end
14
+
15
+ let(:enterprise_profile) do
16
+ double 'enterprise_profile',
17
+ :valid? => true,
18
+ :distribution => :enterprise,
19
+ :ad_hoc? => false,
20
+ :devices => []
21
+ end
22
+
23
+ before do
24
+ mock_terminal
25
+ Cinder::ProvisioningProfile.stub(:from_file).with('ad_hoc.mobileprovision') { ad_hoc_profile }
26
+ Cinder::ProvisioningProfile.stub(:from_file).with('enterprise.mobileprovision') { enterprise_profile }
27
+ end
28
+
29
+ describe "command output" do
30
+
31
+ let(:linter) { Cinder::Linter.new }
32
+ subject do
33
+ linter._lint
34
+ @output.string
35
+ end
36
+
37
+ context "with everything set up properly", :fakews, :ws => 'proper' do
38
+ it { should =~ /OK to go/ }
39
+ end
40
+
41
+ context "without projects", :fakews, :ws => 'sans-project' do
42
+ it { should =~ /No Xcode project found/ }
43
+ it { should_not =~ /OK to go/ }
44
+ end
45
+
46
+ context "without workspace", :fakews, :ws => 'sans-workspace' do
47
+ it { should =~ /No Xcode workspace found/ }
48
+ it { should_not =~ /OK to go/ }
49
+ end
50
+
51
+ context "with more than 1 workspace", :fakews, :ws => 'multiple-workspaces' do
52
+ it { should =~ /There can be only one Xcode workspace/ }
53
+ it { should_not =~ /OK to go/ }
54
+ end
55
+
56
+ context "with whitespace in workspace name", :fakews, :ws => 'whitespace-workspace' do
57
+ it { should =~ /Workspace name `Foo App' must not contain whitespace/ }
58
+ it { should_not =~ /OK to go/ }
59
+ end
60
+
61
+ context "with .xcodeproj name differing from workspace", :fakews, :ws => 'workspace-project-mismatch' do
62
+ it { should =~ /Xcode project name `Bar' must match workspace name `Foo'/ }
63
+ it { should_not =~ /OK to go/ }
64
+ end
65
+
66
+ context "with no projects matching workspace name", :fakews, :ws => 'workspace-projects-mismatch' do
67
+ it { should =~ /One Xcode project name must match workspace name `Foo'/ }
68
+ it { should_not =~ /OK to go/ }
69
+ end
70
+
71
+ context "with unconventional name", :fakews, :ws => 'lowercase' do
72
+ it { should =~ /Workspace name `foo' should be CamelCase/ }
73
+ it { should =~ /OK to go/ }
74
+ end
75
+
76
+ context "without Podfile", :fakews, :ws => 'sans-podfile' do
77
+ it { should =~ /No CocoaPods Podfile found/ }
78
+ it { should_not =~ /OK to go/ }
79
+ end
80
+
81
+ context "with empty Podfile", :fakews, :ws => 'empty-podfile' do
82
+ it { should =~ /CocoaPods platform must be iOS/ }
83
+ it { should =~ /Must have at least one CocoaPods dependency/ }
84
+ it { should_not =~ /OK to go/ }
85
+ end
86
+
87
+ context "without a target", :fakews, :ws => 'sans-target' do
88
+ it { should =~ /Xcode project must have at least one target/ }
89
+ it { should_not =~ /OK to go/ }
90
+ end
91
+
92
+ context "with target name differing from workspace", :fakews, :ws => 'workspace-target-mismatch' do
93
+ it { should =~ /Target name `Stay on target' must match workspace name `Foo'/ }
94
+ it { should_not =~ /OK to go/ }
95
+ end
96
+
97
+ context "with no targets matching workspace name", :fakews, :ws => 'workspace-targets-mismatch' do
98
+ it { should =~ /One Xcode target name must match workspace name `Foo'/ }
99
+ it { should_not =~ /OK to go/ }
100
+ end
101
+
102
+ context "without testing build configuration", :fakews, :ws => 'sans-ad_hoc-or-enterprise-config' do
103
+ it { should =~ /Must have `AdHoc', `Enterprise', or both build configurations/ }
104
+ it { should_not =~ /OK to go/ }
105
+ end
106
+
107
+ context "with both testing build configurations", :fakews, :ws => 'both-configs' do
108
+ it { should =~ /OK to go/ }
109
+
110
+ context "without AdHoc provisioning profile", :ws => 'both-configs-sans-ad_hoc-provisioning' do
111
+ it { should =~ /`AdHoc' build configuration must have an `ad_hoc.mobileprovision' in project root/ }
112
+ it { should_not =~ /OK to go/ }
113
+ end
114
+
115
+ context "without Enterprise provisioning profile", :ws => 'both-configs-sans-enterprise-provisioning' do
116
+ it { should =~ /`Enterprise' build configuration must have an `enterprise.mobileprovision' in project root/ }
117
+ it { should_not =~ /OK to go/ }
118
+ end
119
+ end
120
+ end
121
+ end
@@ -0,0 +1,9 @@
1
+ require "cinder"
2
+
3
+ describe Cinder do
4
+
5
+ describe "VERSION" do
6
+ subject { Cinder::VERSION }
7
+ it { should be_a String }
8
+ end
9
+ end
@@ -0,0 +1,23 @@
1
+ module FakeWorkspace
2
+ module SpecHelpers
3
+ def self.included example_group
4
+ working_dir = Dir.getwd
5
+
6
+ example_group.before :each do
7
+ ws = example.metadata[:ws]
8
+ raise "must specify fake workspace with :ws" unless ws
9
+ workspace = File.join 'spec/fixtures', ws
10
+ begin
11
+ Dir.chdir workspace
12
+ rescue
13
+ Dir.chdir working_dir
14
+ raise "No fake workspace found at #{workspace}"
15
+ end
16
+ end
17
+
18
+ example_group.after :each do
19
+ Dir.chdir working_dir
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,329 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>archiveVersion</key>
6
+ <string>1</string>
7
+ <key>classes</key>
8
+ <dict/>
9
+ <key>objectVersion</key>
10
+ <string>46</string>
11
+ <key>objects</key>
12
+ <dict>
13
+ <key>411586D0BB4B4316AED38AC7</key>
14
+ <dict>
15
+ <key>attributes</key>
16
+ <dict>
17
+ <key>LastUpgradeCheck</key>
18
+ <string>0450</string>
19
+ </dict>
20
+ <key>buildConfigurationList</key>
21
+ <string>7EEF99AC0DAC4D43B8022109</string>
22
+ <key>compatibilityVersion</key>
23
+ <string>Xcode 3.2</string>
24
+ <key>developmentRegion</key>
25
+ <string>English</string>
26
+ <key>hasScannedForEncodings</key>
27
+ <string>0</string>
28
+ <key>isa</key>
29
+ <string>PBXProject</string>
30
+ <key>knownRegions</key>
31
+ <array>
32
+ <string>en</string>
33
+ </array>
34
+ <key>mainGroup</key>
35
+ <string>D24CCC991A364BAF83843B3C</string>
36
+ <key>productRefGroup</key>
37
+ <string>B2D77DB8D7C744F0A212D960</string>
38
+ <key>projectReferences</key>
39
+ <array/>
40
+ <key>targets</key>
41
+ <array>
42
+ <string>C24E7F3499DD43508B6069C1</string>
43
+ </array>
44
+ </dict>
45
+ <key>5E1457CA10D7479E98484D71</key>
46
+ <dict>
47
+ <key>buildActionMask</key>
48
+ <string>2147483647</string>
49
+ <key>files</key>
50
+ <array/>
51
+ <key>isa</key>
52
+ <string>PBXSourcesBuildPhase</string>
53
+ <key>runOnlyForDeploymentPostprocessing</key>
54
+ <string>0</string>
55
+ </dict>
56
+ <key>6608EC8FDB84446D8A579F1E</key>
57
+ <dict>
58
+ <key>fileRef</key>
59
+ <string>DF2477F05D3740FAAB0468B7</string>
60
+ <key>isa</key>
61
+ <string>PBXBuildFile</string>
62
+ <key>settings</key>
63
+ <dict/>
64
+ </dict>
65
+ <key>6B2164C7EB1341BB94A83E58</key>
66
+ <dict>
67
+ <key>explicitFileType</key>
68
+ <string>archive.ar</string>
69
+ <key>includeInIndex</key>
70
+ <string>0</string>
71
+ <key>isa</key>
72
+ <string>PBXFileReference</string>
73
+ <key>name</key>
74
+ <string>libFoo.a</string>
75
+ <key>path</key>
76
+ <string>libFoo.a</string>
77
+ <key>sourceTree</key>
78
+ <string>BUILT_PRODUCTS_DIR</string>
79
+ </dict>
80
+ <key>6D20F12886A2459A83969F87</key>
81
+ <dict>
82
+ <key>buildSettings</key>
83
+ <dict>
84
+ <key>ALWAYS_SEARCH_USER_PATHS</key>
85
+ <string>NO</string>
86
+ <key>ARCHS</key>
87
+ <string>$(ARCHS_STANDARD_32_BIT)</string>
88
+ <key>COPY_PHASE_STRIP</key>
89
+ <string>NO</string>
90
+ <key>DSTROOT</key>
91
+ <string>/tmp/xcodeproj.dst</string>
92
+ <key>GCC_C_LANGUAGE_STANDARD</key>
93
+ <string>gnu99</string>
94
+ <key>GCC_DYNAMIC_NO_PIC</key>
95
+ <string>NO</string>
96
+ <key>GCC_OPTIMIZATION_LEVEL</key>
97
+ <string>0</string>
98
+ <key>GCC_PRECOMPILE_PREFIX_HEADER</key>
99
+ <string>YES</string>
100
+ <key>GCC_PREPROCESSOR_DEFINITIONS</key>
101
+ <array>
102
+ <string>DEBUG=1</string>
103
+ <string>$(inherited)</string>
104
+ </array>
105
+ <key>GCC_SYMBOLS_PRIVATE_EXTERN</key>
106
+ <string>NO</string>
107
+ <key>GCC_VERSION</key>
108
+ <string>com.apple.compilers.llvm.clang.1_0</string>
109
+ <key>INSTALL_PATH</key>
110
+ <string>$(BUILT_PRODUCTS_DIR)</string>
111
+ <key>IPHONEOS_DEPLOYMENT_TARGET</key>
112
+ <string>4.3</string>
113
+ <key>OTHER_LDFLAGS</key>
114
+ <string></string>
115
+ <key>PRODUCT_NAME</key>
116
+ <string>$(TARGET_NAME)</string>
117
+ <key>PUBLIC_HEADERS_FOLDER_PATH</key>
118
+ <string>$(TARGET_NAME)</string>
119
+ <key>SDKROOT</key>
120
+ <string>iphoneos</string>
121
+ <key>SKIP_INSTALL</key>
122
+ <string>YES</string>
123
+ </dict>
124
+ <key>isa</key>
125
+ <string>XCBuildConfiguration</string>
126
+ <key>name</key>
127
+ <string>Debug</string>
128
+ </dict>
129
+ <key>7B63D8359F2443498349A034</key>
130
+ <dict>
131
+ <key>buildConfigurations</key>
132
+ <array>
133
+ <string>8DD5757BF0884080B280331E</string>
134
+ <string>6D20F12886A2459A83969F87</string>
135
+ </array>
136
+ <key>defaultConfigurationIsVisible</key>
137
+ <string>0</string>
138
+ <key>defaultConfigurationName</key>
139
+ <string>Release</string>
140
+ <key>isa</key>
141
+ <string>XCConfigurationList</string>
142
+ </dict>
143
+ <key>7EEF99AC0DAC4D43B8022109</key>
144
+ <dict>
145
+ <key>buildConfigurations</key>
146
+ <array>
147
+ <string>E705F282629D4EB88F3CFD43</string>
148
+ <string>8B1D2394ACAE4DDE9875EA46</string>
149
+ <string>BCB2B12A985C4B008640F79A</string>
150
+ </array>
151
+ <key>defaultConfigurationIsVisible</key>
152
+ <string>0</string>
153
+ <key>defaultConfigurationName</key>
154
+ <string>AdHoc</string>
155
+ <key>isa</key>
156
+ <string>XCConfigurationList</string>
157
+ </dict>
158
+ <key>8B1D2394ACAE4DDE9875EA46</key>
159
+ <dict>
160
+ <key>buildSettings</key>
161
+ <dict/>
162
+ <key>isa</key>
163
+ <string>XCBuildConfiguration</string>
164
+ <key>name</key>
165
+ <string>AdHoc</string>
166
+ </dict>
167
+ <key>8DD5757BF0884080B280331E</key>
168
+ <dict>
169
+ <key>buildSettings</key>
170
+ <dict>
171
+ <key>ALWAYS_SEARCH_USER_PATHS</key>
172
+ <string>NO</string>
173
+ <key>ARCHS</key>
174
+ <string>$(ARCHS_STANDARD_32_BIT)</string>
175
+ <key>COPY_PHASE_STRIP</key>
176
+ <string>YES</string>
177
+ <key>DSTROOT</key>
178
+ <string>/tmp/xcodeproj.dst</string>
179
+ <key>GCC_C_LANGUAGE_STANDARD</key>
180
+ <string>gnu99</string>
181
+ <key>GCC_PRECOMPILE_PREFIX_HEADER</key>
182
+ <string>YES</string>
183
+ <key>GCC_VERSION</key>
184
+ <string>com.apple.compilers.llvm.clang.1_0</string>
185
+ <key>INSTALL_PATH</key>
186
+ <string>$(BUILT_PRODUCTS_DIR)</string>
187
+ <key>IPHONEOS_DEPLOYMENT_TARGET</key>
188
+ <string>4.3</string>
189
+ <key>OTHER_CFLAGS</key>
190
+ <array>
191
+ <string>-DNS_BLOCK_ASSERTIONS=1</string>
192
+ <string>$(inherited)</string>
193
+ </array>
194
+ <key>OTHER_CPLUSPLUSFLAGS</key>
195
+ <array>
196
+ <string>-DNS_BLOCK_ASSERTIONS=1</string>
197
+ <string>$(inherited)</string>
198
+ </array>
199
+ <key>OTHER_LDFLAGS</key>
200
+ <string></string>
201
+ <key>PRODUCT_NAME</key>
202
+ <string>$(TARGET_NAME)</string>
203
+ <key>PUBLIC_HEADERS_FOLDER_PATH</key>
204
+ <string>$(TARGET_NAME)</string>
205
+ <key>SDKROOT</key>
206
+ <string>iphoneos</string>
207
+ <key>SKIP_INSTALL</key>
208
+ <string>YES</string>
209
+ <key>VALIDATE_PRODUCT</key>
210
+ <string>YES</string>
211
+ </dict>
212
+ <key>isa</key>
213
+ <string>XCBuildConfiguration</string>
214
+ <key>name</key>
215
+ <string>Release</string>
216
+ </dict>
217
+ <key>94BCEDD4F97A454BA3938B87</key>
218
+ <dict>
219
+ <key>buildActionMask</key>
220
+ <string>2147483647</string>
221
+ <key>files</key>
222
+ <array>
223
+ <string>6608EC8FDB84446D8A579F1E</string>
224
+ </array>
225
+ <key>isa</key>
226
+ <string>PBXFrameworksBuildPhase</string>
227
+ <key>runOnlyForDeploymentPostprocessing</key>
228
+ <string>0</string>
229
+ </dict>
230
+ <key>B2D77DB8D7C744F0A212D960</key>
231
+ <dict>
232
+ <key>children</key>
233
+ <array>
234
+ <string>6B2164C7EB1341BB94A83E58</string>
235
+ </array>
236
+ <key>isa</key>
237
+ <string>PBXGroup</string>
238
+ <key>name</key>
239
+ <string>Products</string>
240
+ <key>sourceTree</key>
241
+ <string>&lt;group&gt;</string>
242
+ </dict>
243
+ <key>BCB2B12A985C4B008640F79A</key>
244
+ <dict>
245
+ <key>buildSettings</key>
246
+ <dict/>
247
+ <key>isa</key>
248
+ <string>XCBuildConfiguration</string>
249
+ <key>name</key>
250
+ <string>Enterprise</string>
251
+ </dict>
252
+ <key>C24E7F3499DD43508B6069C1</key>
253
+ <dict>
254
+ <key>buildConfigurationList</key>
255
+ <string>7B63D8359F2443498349A034</string>
256
+ <key>buildPhases</key>
257
+ <array>
258
+ <string>5E1457CA10D7479E98484D71</string>
259
+ <string>94BCEDD4F97A454BA3938B87</string>
260
+ </array>
261
+ <key>buildRules</key>
262
+ <array/>
263
+ <key>dependencies</key>
264
+ <array/>
265
+ <key>isa</key>
266
+ <string>PBXNativeTarget</string>
267
+ <key>name</key>
268
+ <string>Foo</string>
269
+ <key>productName</key>
270
+ <string>Foo</string>
271
+ <key>productReference</key>
272
+ <string>6B2164C7EB1341BB94A83E58</string>
273
+ <key>productType</key>
274
+ <string>com.apple.product-type.application</string>
275
+ </dict>
276
+ <key>D24CCC991A364BAF83843B3C</key>
277
+ <dict>
278
+ <key>children</key>
279
+ <array>
280
+ <string>B2D77DB8D7C744F0A212D960</string>
281
+ <string>DA11037065634A73890959E9</string>
282
+ </array>
283
+ <key>isa</key>
284
+ <string>PBXGroup</string>
285
+ <key>sourceTree</key>
286
+ <string>&lt;group&gt;</string>
287
+ </dict>
288
+ <key>DA11037065634A73890959E9</key>
289
+ <dict>
290
+ <key>children</key>
291
+ <array>
292
+ <string>DF2477F05D3740FAAB0468B7</string>
293
+ </array>
294
+ <key>isa</key>
295
+ <string>PBXGroup</string>
296
+ <key>name</key>
297
+ <string>Frameworks</string>
298
+ <key>sourceTree</key>
299
+ <string>&lt;group&gt;</string>
300
+ </dict>
301
+ <key>DF2477F05D3740FAAB0468B7</key>
302
+ <dict>
303
+ <key>includeInIndex</key>
304
+ <string>1</string>
305
+ <key>isa</key>
306
+ <string>PBXFileReference</string>
307
+ <key>lastKnownFileType</key>
308
+ <string>wrapper.framework</string>
309
+ <key>name</key>
310
+ <string>Foundation.framework</string>
311
+ <key>path</key>
312
+ <string>Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/System/Library/Frameworks/Foundation.framework</string>
313
+ <key>sourceTree</key>
314
+ <string>DEVELOPER_DIR</string>
315
+ </dict>
316
+ <key>E705F282629D4EB88F3CFD43</key>
317
+ <dict>
318
+ <key>buildSettings</key>
319
+ <dict/>
320
+ <key>isa</key>
321
+ <string>XCBuildConfiguration</string>
322
+ <key>name</key>
323
+ <string>Debug</string>
324
+ </dict>
325
+ </dict>
326
+ <key>rootObject</key>
327
+ <string>411586D0BB4B4316AED38AC7</string>
328
+ </dict>
329
+ </plist>