cinder 0.5.1

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.
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>