thrust 0.0.0 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/bin/thrust CHANGED
@@ -1,6 +1,27 @@
1
1
  #!/usr/bin/env ruby
2
+ require 'fileutils'
2
3
  project_root = Dir.pwd
3
- thrust_root = File.dirname(__FILE__)
4
+ thrust_root = File.expand_path(File.join(File.dirname(__FILE__), '..'))
4
5
 
5
- FileUtils.cp(thrust_root + '/../lib/tasks/main.rake', project_root + '/Rakefile')
6
- FileUtils.cp(thrust_root + '/../lib/example.yml', project_root + '/thrust.example.yml')
6
+ if (!Dir.exists?(File.join(project_root, 'thrust', 'lib', 'tasks')))
7
+ Dir.mkdir(File.join(project_root, 'thrust'))
8
+ Dir.mkdir(File.join(project_root, 'thrust', 'lib'))
9
+ Dir.mkdir(File.join(project_root, 'thrust', 'lib', 'tasks'))
10
+ end
11
+
12
+ FileUtils.cp(Dir.glob(File.join(thrust_root, 'lib', 'tasks', '*.rake')), File.join(project_root, 'thrust', 'lib', 'tasks'))
13
+ FileUtils.cp(File.join(thrust_root, 'lib', 'thrust_config.rb'), File.join(project_root, 'thrust', 'lib'))
14
+ FileUtils.cp(File.join(thrust_root, 'lib', 'config', 'example.yml'), File.join(project_root, 'thrust.example.yml'))
15
+
16
+ rakefile = File.join(project_root, 'Rakefile')
17
+ if (File.exists?(rakefile))
18
+ puts "You have an existing rakefile to add thrust tasks you should import its tasks:"
19
+ puts "Dir.glob('thrust/lib/tasks/*.rake').each { |r| import r }"
20
+ else
21
+ File.open(rakefile, 'w') do |f|
22
+ f.puts "Dir.glob('thrust/lib/tasks/*.rake').each { |r| import r }"
23
+ end
24
+ puts "a Rakefile was created for you type 'rake -T' to see a list of tasks"
25
+ end
26
+
27
+ puts "Rename #{project_root}/thrust.example.yml to #{project_root}/thrust.yml and edit it for your project."
@@ -1,12 +1,13 @@
1
1
  # rename this file to thrust.yml
2
2
  project_name: My Great Project
3
3
  app_name: My Great Project
4
- identity: iOS Signing Identity # be sure to escape semicolons
4
+ identity: iOS Signing Identity
5
5
 
6
6
  specs:
7
7
  configuration: Release # or whichever iOS configuration you want to run specs under
8
8
  target: Specs # Name of the spec build target
9
9
  sdk: 6.1 # SDK version to build/run the specs with
10
+ binary: 'Specs/bin/ios-sim' # or 'Specs/bin/waxim'
10
11
 
11
12
  api_token: your testflight token here
12
13
  # Add testflight distrobution lists here. Rake tasks are built for all keys directly
@@ -0,0 +1,39 @@
1
+ require 'yaml'
2
+ require 'tmpdir'
3
+
4
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'thrust_config'))
5
+
6
+ @thrust = ThrustConfig.new(Dir.getwd, File.join(Dir.getwd, 'thrust.yml'))
7
+
8
+ task :default => [:trim, :specs]
9
+
10
+ desc 'Trim whitespace'
11
+ task :trim do
12
+ @thrust.system_or_exit %Q[git status --short | awk '{if ($1 != "D" && $1 != "R") print $2}' | grep -e '.*\.[cmh]$' | xargs sed -i '' -e 's/ / /g;s/ *$//g;']
13
+ end
14
+
15
+ desc 'Clean all targets'
16
+ task :clean do
17
+ @thrust.system_or_exit "xcodebuild -project #{@thrust.config['project_name']}.xcodeproj -alltargets -configuration 'AdHoc' -sdk iphoneos clean", @thrust.output_file("clean")
18
+ @thrust.system_or_exit "xcodebuild -project #{@thrust.config['project_name']}.xcodeproj -alltargets -configuration 'Debug' -sdk iphonesimulator clean", @thrust.output_file("clean")
19
+ @thrust.system_or_exit "xcodebuild -project #{@thrust.config['project_name']}.xcodeproj -alltargets -configuration 'Release' -sdk iphonesimulator clean", @thrust.output_file("clean")
20
+ end
21
+
22
+ desc 'Build specs'
23
+ task :build_specs do
24
+ @thrust.kill_simulator
25
+ @thrust.system_or_exit "xcodebuild -project #{@thrust.config['project_name']}.xcodeproj -target #{@thrust.spec_config['target']} -configuration #{@thrust.spec_config['configuration']} -sdk iphonesimulator build", @thrust.output_file("specs")
26
+ end
27
+
28
+ desc 'Run specs'
29
+ task :specs => :build_specs do
30
+ binary = @thrust.spec_config['binary']
31
+ if binary =~ /waxim%/
32
+ @thrust.grep_cmd_for_failure(%Q[#{binary} -s #{@thrust.spec_config['sdk']} -f iphone -e CFFIXED_USER_HOME=#{Dir.tmpdir} -e CEDAR_HEADLESS_SPECS=1 -e CEDAR_REPORTER_CLASS=CDRDefaultReporter #{File.join(sim_dir, "#{@thrust.spec_config['target']}.app")}])
33
+ elsif binary =~ /ios-sim$/
34
+ @thrust.grep_cmd_for_failure(%Q[#{binary} launch #{File.join(@thrust.sim_dir, "#{@thrust.spec_config['target']}.app")} --sdk #{@thrust.spec_config['sdk']} --family iphone --retina --tall --setenv CFFIXED_USER_HOME=#{Dir.tmpdir} --setenv CEDAR_HEADLESS_SPECS=1 --setenv CEDAR_REPORTER_CLASS=CDRDefaultReporter])
35
+ else
36
+ puts "Uknown binary for running specs: '#{binary}'"
37
+ exit(1)
38
+ end
39
+ end
@@ -0,0 +1,63 @@
1
+ require 'yaml'
2
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'thrust_config'))
3
+
4
+ @thrust = ThrustConfig.new(Dir.getwd, File.join(Dir.getwd, 'thrust.yml'))
5
+
6
+ namespace :bump do
7
+ desc 'Bumps the build'
8
+ task :build do
9
+ @thrust.run_git_with_message 'Bumped build to $(agvtool what-version -terse)' do
10
+ @thrust.system_or_exit 'agvtool bump -all'
11
+ end
12
+ end
13
+
14
+ namespace :version do
15
+ desc 'Bumps the major marketing version in (major.minor.patch)'
16
+ task :major do
17
+ @thrust.update_version(:major)
18
+ end
19
+
20
+ desc 'Bumps the minor marketing version in (major.minor.patch)'
21
+ task :minor do
22
+ @thrust.update_version(:minor)
23
+ end
24
+
25
+ desc 'Bumps the patch marketing version in (major.minor.patch)'
26
+ task :patch do
27
+ @thrust.update_version(:patch)
28
+ end
29
+ end
30
+ end
31
+
32
+ desc 'Build custom configuration'
33
+ task :build_configuration, :configuration do |task_name, args|
34
+ build_prefix = @thrust.build_prefix_for(args[:configuration])
35
+ @thrust.system_or_exit "xcodebuild -project #{@thrust.config['project_name']}.xcodeproj -alltargets -configuration '#{args[:configuration]}' -sdk iphoneos clean", @thrust.output_file("clean")
36
+ @thrust.kill_simulator
37
+ @thrust.system_or_exit "xcodebuild -project #{@thrust.config['project_name']}.xcodeproj -target #{@thrust.config['app_name']} -configuration '#{args[:configuration]}' -sdk iphoneos build", @thrust.output_file(args[:configuration])
38
+ @thrust.system_or_exit "/usr/bin/xcrun -sdk iphoneos PackageApplication -v '#{build_prefix}.app' -o '#{build_prefix}.ipa' --sign '#{@thrust.config['identity']}'"
39
+ @thrust.system_or_exit "zip -r -T -y '#{build_prefix}.app.dSYM.zip' '#{build_prefix}.app.dSYM'"
40
+ end
41
+
42
+ namespace :testflight do
43
+ @thrust.config['distributions'].each do |task_name, info|
44
+ desc "Deploy build to testflight #{info['team']} team (use NOTIFY=false to prevent team notification)"
45
+ task task_name do
46
+ Rake::Task["testflight:deploy"].invoke(info['token'], info['default_list'], info['configuration'])
47
+ end
48
+ end
49
+
50
+ task :deploy, :team, :distribution_list, :configuration do |task, args|
51
+ build_prefix = @thrust.build_prefix_for(args[:configuration])
52
+ Rake::Task["bump:build"].invoke
53
+ Rake::Task["build_configuration"].invoke(args[:configuration])
54
+ @thrust.system_or_exit "curl http://testflightapp.com/api/builds.json\
55
+ -F file=@#{build_prefix}.ipa\
56
+ -F dsym=@#{build_prefix}.app.dSYM.zip\
57
+ -F api_token='#{@thrust.config['api_token']}'\
58
+ -F team_token='#{args[:team]}'\
59
+ -F notes='This build was uploaded via the upload API'\
60
+ -F notify=#{(ENV['NOTIFY'] || 'true').downcase.capitalize}\
61
+ #{"-F distribution_lists='#{args[:distribution_list]}'" if args[:distribution_list]}"
62
+ end
63
+ end
@@ -0,0 +1,129 @@
1
+ class ThrustConfig
2
+ attr_reader :project_root, :config, :spec_config, :build_dir
3
+
4
+ def initialize(proj_root, config_file)
5
+ @project_root = File.expand_path(proj_root)
6
+ @build_dir = File.join(project_root, 'build')
7
+ @config = YAML.load_file(config_file)
8
+ @spec_config = config['specs']
9
+ end
10
+
11
+ def build_prefix_for(configuration)
12
+ "#{build_dir}/#{configuration}-iphoneos/#{config['app_name']}"
13
+ end
14
+
15
+ # Xcode 4.3 stores its /Developer inside /Applications/Xcode.app, Xcode 4.2 stored it in /Developer
16
+ def xcode_developer_dir
17
+ `xcode-select -print-path`.strip
18
+ end
19
+
20
+ def sim_dir
21
+ File.join(build_dir, spec_config['configuration'] + '-iphonesimulator')
22
+ end
23
+
24
+ def system_or_exit(cmd, stdout = nil)
25
+ puts "Executing #{cmd}"
26
+ cmd += " >#{stdout}" if stdout
27
+ system(cmd) or raise '******** Build failed ********'
28
+ end
29
+
30
+ def run(cmd)
31
+ puts "Executing #{cmd}"
32
+ `#{cmd}`
33
+ end
34
+
35
+ def grep_cmd_for_failure(cmd)
36
+ 1.times do
37
+ puts "Executing #{cmd} and checking for FAILURE"
38
+ %x[#{cmd} > #{Dir.tmpdir}/cmd.out 2>&1]
39
+ status = $?
40
+ result = File.read("#{Dir.tmpdir}/cmd.out")
41
+ if status.success?
42
+ puts 'Results:'
43
+ puts result
44
+ if result.include?('FAILURE')
45
+ exit(1)
46
+ else
47
+ exit(0)
48
+ end
49
+ elsif status == 256
50
+ redo
51
+ else
52
+ puts "Failed to launch: #{status}"
53
+ exit(1)
54
+ end
55
+ end
56
+ end
57
+
58
+ def with_env_vars(env_vars)
59
+ old_values = {}
60
+ env_vars.each do |key,new_value|
61
+ old_values[key] = ENV[key]
62
+ ENV[key] = new_value
63
+ end
64
+
65
+ yield
66
+
67
+ env_vars.each_key do |key|
68
+ ENV[key] = old_values[key]
69
+ end
70
+ end
71
+
72
+ def output_file(target)
73
+ output_dir = if ENV['IS_CI_BOX']
74
+ ENV['CC_BUILD_ARTIFACTS']
75
+ else
76
+ Dir.mkdir(build_dir) unless File.exists?(build_dir)
77
+ build_dir
78
+ end
79
+
80
+ output_file = File.join(output_dir, "#{target}.output")
81
+ puts "Output: #{output_file}"
82
+ output_file
83
+ end
84
+
85
+ def kill_simulator
86
+ system %q[killall -m -KILL "gdb"]
87
+ system %q[killall -m -KILL "otest"]
88
+ system %q[killall -m -KILL "iPhone Simulator"]
89
+ end
90
+
91
+ def update_version(release)
92
+ run_git_with_message('Changes version to $(agvtool what-marketing-version -terse)') do
93
+ version = run "agvtool what-marketing-version -terse | head -n1 |cut -f2 -d\="
94
+ puts "version !#{version}!"
95
+ build_regex = %r{^(?<major>\d+)(\.(?<minor>\d+))?(\.(?<patch>\d+))$}
96
+ if (match = build_regex.match(version))
97
+ puts "found match #{match.inspect}"
98
+ v = {:major => match[:major].to_i, :minor => match[:minor].to_i, :patch => match[:patch].to_i}
99
+ case(release)
100
+ when :major then new_build_version(v[:major] + 1, 0, 0)
101
+ when :minor then new_build_version(v[:major], v[:minor] + 1, 0)
102
+ when :patch then new_build_version(v[:major], v[:minor], v[:patch] + 1)
103
+ when :clear then new_build_version(v[:major], v[:minor], v[:patch])
104
+ end
105
+ else
106
+ raise "Unknown version #{version} it should match major.minor.patch"
107
+ end
108
+ end
109
+ end
110
+
111
+ def new_build_version(major, minor, patch)
112
+ version = [major, minor, patch].join(".")
113
+ system_or_exit "agvtool new-marketing-version \"#{version}\""
114
+ end
115
+
116
+ def run_git_with_message(message, &block)
117
+ if ENV['IGNORE_GIT']
118
+ puts 'WARNING NOT CHECKING FOR CLEAN WORKING DIRECTORY'
119
+ block.call
120
+ else
121
+ puts 'Checking for clean working tree...'
122
+ system_or_exit 'git diff-index --quiet HEAD'
123
+ puts 'Checking that the master branch is up to date...'
124
+ system_or_exit 'git fetch && git diff --quiet HEAD origin/master'
125
+ block.call
126
+ system_or_exit "git commit -am \"#{message}\" && git push origin head"
127
+ end
128
+ end
129
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: thrust
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -17,7 +17,7 @@ authors:
17
17
  autorequire:
18
18
  bindir: bin
19
19
  cert_chain: []
20
- date: 2013-06-05 00:00:00.000000000 Z
20
+ date: 2013-07-24 00:00:00.000000000 Z
21
21
  dependencies: []
22
22
  description: ''
23
23
  email: mc+jbritz@pivotallabs.com
@@ -26,9 +26,10 @@ executables:
26
26
  extensions: []
27
27
  extra_rdoc_files: []
28
28
  files:
29
- - lib/thrust.rb
30
- - lib/tasks/main.rake
31
- - lib/example.yml
29
+ - lib/thrust_config.rb
30
+ - lib/tasks/cedar.rake
31
+ - lib/tasks/testflight.rake
32
+ - lib/config/example.yml
32
33
  - bin/thrust
33
34
  homepage: http://github.com/dipolesource/thrust
34
35
  licenses: []
data/lib/tasks/main.rake DELETED
@@ -1,218 +0,0 @@
1
- require 'yaml'
2
-
3
- @thrust_config = YAML.load_file(Dir.pwd + '/thrust.yml')
4
- @spec_config = @thrust_config['specs']
5
-
6
- TESTFLIGHT_NOTIFICATION = ENV['NOTIFY'] || 'true'
7
-
8
- PROJECT_ROOT = File.dirname(__FILE__)
9
- BUILD_DIR = File.join(PROJECT_ROOT, "build")
10
-
11
- def build_prefix_for(configuration)
12
- "#{BUILD_DIR}/#{configuration}-iphoneos/#{@thrust_config['app_name']}"
13
- end
14
-
15
- def sdk_dir
16
- "#{xcode_developer_dir}/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator#{@spec_config['sdk']}.sdk"
17
- end
18
-
19
- # Xcode 4.3 stores its /Developer inside /Applications/Xcode.app, Xcode 4.2 stored it in /Developer
20
- def xcode_developer_dir
21
- `xcode-select -print-path`.strip
22
- end
23
-
24
- def build_dir(effective_platform_name)
25
- File.join(BUILD_DIR, @spec_config['configuration'] + effective_platform_name)
26
- end
27
-
28
- def system_or_exit(cmd, stdout = nil)
29
- puts "Executing #{cmd}"
30
- cmd += " >#{stdout}" if stdout
31
- system(cmd) or raise '******** Build failed ********'
32
- end
33
-
34
- def run(cmd)
35
- puts "Executing #{cmd}"
36
- `#{cmd}`
37
- end
38
-
39
- def grep_cmd_for_failure(cmd)
40
- 1.times do
41
- puts "Executing #{cmd} and checking for FAILURE"
42
- %x[#{cmd} > #{Dir.tmpdir}/cmd.out 2>&1]
43
- status = $?
44
- result = File.read("#{Dir.tmpdir}/cmd.out")
45
- if status.success?
46
- puts 'Results:'
47
- puts result
48
- if result.include?('FAILURE')
49
- exit(1)
50
- else
51
- exit(0)
52
- end
53
- elsif status == 256
54
- redo
55
- else
56
- puts "Failed to launch: #{status}"
57
- exit(1)
58
- end
59
- end
60
- end
61
-
62
- def with_env_vars(env_vars)
63
- old_values = {}
64
- env_vars.each do |key,new_value|
65
- old_values[key] = ENV[key]
66
- ENV[key] = new_value
67
- end
68
-
69
- yield
70
-
71
- env_vars.each_key do |key|
72
- ENV[key] = old_values[key]
73
- end
74
- end
75
-
76
- def output_file(target)
77
- output_dir = if ENV['IS_CI_BOX']
78
- ENV['CC_BUILD_ARTIFACTS']
79
- else
80
- Dir.mkdir(BUILD_DIR) unless File.exists?(BUILD_DIR)
81
- BUILD_DIR
82
- end
83
-
84
- output_file = File.join(output_dir, "#{target}.output")
85
- puts "Output: #{output_file}"
86
- output_file
87
- end
88
-
89
- def kill_simulator
90
- system %q[killall -m -KILL "gdb"]
91
- system %q[killall -m -KILL "otest"]
92
- system %q[killall -m -KILL "iPhone Simulator"]
93
- end
94
-
95
- task :default => [:trim, :specs]
96
-
97
- desc 'Trim whitespace'
98
- task :trim do
99
- system_or_exit %Q[git status --short | awk '{if ($1 != "D" && $1 != "R") print $2}' | grep -e '.*\.[cmh]$' | xargs sed -i '' -e 's/ / /g;s/ *$//g;']
100
- end
101
-
102
- desc 'Clean all targets'
103
- task :clean do
104
- system_or_exit "xcodebuild -project #{@thrust_config['project_name']}.xcodeproj -alltargets -configuration 'AdHoc' -sdk iphoneos clean", output_file("clean")
105
- system_or_exit "xcodebuild -project #{@thrust_config['project_name']}.xcodeproj -alltargets -configuration 'Debug' -sdk iphonesimulator clean", output_file("clean")
106
- system_or_exit "xcodebuild -project #{@thrust_config['project_name']}.xcodeproj -alltargets -configuration 'Release' -sdk iphonesimulator clean", output_file("clean")
107
- end
108
-
109
- namespace :bump do
110
- desc 'Bumps the build'
111
- task :build do
112
- run_git_with_message 'Bumped build to $(agvtool what-version -terse)' do
113
- system_or_exit 'agvtool bump -all'
114
- end
115
- end
116
-
117
- namespace :version do
118
- desc 'Bumps the major marketing version in (major.minor.patch)'
119
- task :major do
120
- update_version(:major)
121
- end
122
-
123
- desc 'Bumps the minor marketing version in (major.minor.patch)'
124
- task :minor do
125
- update_version(:minor)
126
- end
127
-
128
- desc 'Bumps the patch marketing version in (major.minor.patch)'
129
- task :patch do
130
- update_version(:patch)
131
- end
132
- end
133
- end
134
-
135
- def update_version(release)
136
- run_git_with_message('Changes version to $(agvtool what-marketing-version -terse)') do
137
- version = run "agvtool what-marketing-version -terse | head -n1 |cut -f2 -d\="
138
- puts "version !#{version}!"
139
- build_regex = %r{^(?<major>\d+)(\.(?<minor>\d+))?(\.(?<patch>\d+))$}
140
- if (match = build_regex.match(version))
141
- puts "found match #{match.inspect}"
142
- v = {:major => match[:major].to_i, :minor => match[:minor].to_i, :patch => match[:patch].to_i}
143
- case(release)
144
- when :major then new_build_version(v[:major] + 1, 0, 0)
145
- when :minor then new_build_version(v[:major], v[:minor] + 1, 0)
146
- when :patch then new_build_version(v[:major], v[:minor], v[:patch] + 1)
147
- when :clear then new_build_version(v[:major], v[:minor], v[:patch])
148
- end
149
- else
150
- raise "Unknown version #{version} it should match major.minor.patch"
151
- end
152
- end
153
- end
154
-
155
- def new_build_version(major, minor, patch)
156
- version = [major, minor, patch].join(".")
157
- system_or_exit "agvtool new-marketing-version \"#{version}\""
158
- end
159
-
160
- def run_git_with_message(message, &block)
161
- if ENV['IGNORE_GIT']
162
- puts 'WARNING NOT CHECKING FOR CLEAN WORKING DIRECTORY'
163
- block.call
164
- else
165
- puts 'Checking for clean working tree...'
166
- system_or_exit 'git diff-index --quiet HEAD'
167
- puts 'Checking that the master branch is up to date...'
168
- system_or_exit 'git fetch && git diff --quiet HEAD origin/master'
169
- block.call
170
- system_or_exit "git commit -am \"#{message}\" && git push origin head"
171
- end
172
- end
173
-
174
- desc 'Build custom configuration'
175
- task :build_configuration, :configuration do |task_name, args|
176
- build_prefix = build_prefix_for(args[:configuration])
177
- system_or_exit "xcodebuild -project #{@thrust_config['project_name']}.xcodeproj -alltargets -configuration '#{args[:configuration]}' -sdk iphoneos clean", output_file("clean")
178
- kill_simulator
179
- system_or_exit "xcodebuild -project #{@thrust_config['project_name']}.xcodeproj -target #{@thrust_config['app_name']} -configuration '#{args[:configuration]}' -sdk iphoneos build", output_file(args[:configuration])
180
- system_or_exit "/usr/bin/xcrun -sdk iphoneos PackageApplication -v '#{build_prefix}.app' -o '#{build_prefix}.ipa' --sign '#{@thrust_config['identity']}'"
181
- system_or_exit "zip -r -T -y '#{build_prefix}.app.dSYM.zip' '#{build_prefix}.app.dSYM'"
182
- end
183
-
184
- namespace :testflight do
185
- @thrust_config['distributions'].each do |task_name, info|
186
- desc "Deploy build to testflight #{info['team']} team (use NOTIFY=false to prevent team notification)"
187
- task task_name do
188
- Rake::Task["testflight:deploy"].invoke(info['token'], info['default_list'], info['configuration'])
189
- end
190
- end
191
-
192
- task :deploy, :team, :distribution_list, :configuration do |task, args|
193
- build_prefix = build_prefix_for(args[:configuration])
194
- Rake::Task["bump:build"].invoke
195
- Rake::Task["build_configuration"].invoke(args[:configuration])
196
- system_or_exit "curl http://testflightapp.com/api/builds.json\
197
- -F file=@#{build_prefix}.ipa\
198
- -F dsym=@#{build_prefix}.app.dSYM.zip\
199
- -F api_token='#{@thrust_config['api_token']}'\
200
- -F team_token='#{args[:team]}'\
201
- -F notes='This build was uploaded via the upload API'\
202
- -F notify=#{TESTFLIGHT_NOTIFICATION.downcase.capitalize}\
203
- #{"-F distribution_lists='#{args[:distribution_list]}'" if args[:distribution_list]}"
204
- end
205
- end
206
-
207
- desc 'Build specs'
208
- task :build_specs do
209
- kill_simulator
210
- system_or_exit "xcodebuild -project #{@thrust_config['project_name']}.xcodeproj -target #{@spec_config['target']} -configuration #{@spec_config['configuration']} -sdk iphonesimulator build", output_file("specs")
211
- end
212
-
213
- require 'tmpdir'
214
-
215
- desc 'Run specs'
216
- task :specs => :build_specs do
217
- grep_cmd_for_failure(%Q[Specs/bin/ios-sim launch #{File.join(build_dir("-iphonesimulator"), "#{@spec_config['target']}.app")} --sdk #{@spec_config['sdk']} --family iphone --retina --tall --setenv CFFIXED_USER_HOME=#{Dir.tmpdir} --setenv CEDAR_HEADLESS_SPECS=1 --setenv CEDAR_REPORTER_CLASS=CDRDefaultReporter])
218
- end
data/lib/thrust.rb DELETED
File without changes