diff --git a/lib/motion/project/template/ios-watch-extension.rb b/lib/motion/project/template/ios-watch-extension.rb index a97e0f4d..83f9e973 100644 --- a/lib/motion/project/template/ios-watch-extension.rb +++ b/lib/motion/project/template/ios-watch-extension.rb @@ -44,7 +44,7 @@ namespace :build do task :simulator do # TODO Try to re-use the env variables used when passing build settings from apps to extensions. rakefile = File.expand_path('../ios-watch-host.rb', __FILE__) - sh "rake -I '#{File.join(App.config.motiondir, 'lib')}' -f '#{rakefile}' build:simulator watch_app_name='#{App.config.name}' #{'--trace' if App::VERBOSE}" + sh "rake -I '#{File.join(App.config.motiondir, 'lib')}' -f '#{rakefile}' build:simulator simulator watch_app_name='#{App.config.name}' #{'--trace' if App::VERBOSE}" end end diff --git a/lib/motion/project/template/ios-watch-host.rb b/lib/motion/project/template/ios-watch-host.rb index 2127bdb5..e5526b3d 100644 --- a/lib/motion/project/template/ios-watch-host.rb +++ b/lib/motion/project/template/ios-watch-host.rb @@ -74,3 +74,43 @@ namespace :build do App.codesign('iPhoneOS') end end + +desc "Run the simulator" +task :simulator do + Rake::Task["build:simulator"].invoke + app = App.config.app_bundle('iPhoneSimulator') + + if ENV['TMUX'] + tmux_default_command = `tmux show-options -g default-command`.strip + unless tmux_default_command.include?("reattach-to-user-namespace") + App.warn(<> ~/.tmux.conf + +END + ) + end + end + + family_int = 1 # iPhone + target = App.config.sdk_version + simulate_device = App.config.device_family_string(nil, family_int, target, nil) + + # Launch the simulator. + xcode = App.config.xcode_dir + env = "DYLD_FRAMEWORK_PATH=\"#{xcode}/../Frameworks\":\"#{xcode}/../OtherFrameworks\"" + env << " RM_BUILT_EXECUTABLE=\"#{File.expand_path(App.config.app_bundle_executable('iPhoneSimulator'))}\"" + env << ' SIM_SPEC_MODE=1' if App.config.spec_mode + sim = File.join(App.config.bindir, 'ios/sim') + debug = (ENV['debug'] ? 1 : (App.config.spec_mode ? '0' : '2')) + app_args = (ENV['args'] or '') + App.info 'Simulate', app + at_exit { system("stty echo") } if $stdout.tty? # Just in case the simulator launcher crashes and leaves the terminal without echo. + Signal.trap(:INT) { } if ENV['debug'] + system "#{env} #{sim} #{debug} #{family_int} \"#{simulate_device}\" #{target} \"#{xcode}\" \"#{app}\" #{app_args}" + App.config.print_crash_message if $?.exitstatus != 0 && !App.config.spec_mode + exit($?.exitstatus) +end