| OLD | NEW |
| (Empty) |
| 1 #!/usr/bin/env python | |
| 2 # Copyright 2014 The Chromium Authors. All rights reserved. | |
| 3 # Use of this source code is governed by a BSD-style license that can be | |
| 4 # found in the LICENSE file. | |
| 5 | |
| 6 from mopy.config import Config | |
| 7 import argparse | |
| 8 import mopy.paths | |
| 9 import os | |
| 10 import pipes | |
| 11 import subprocess | |
| 12 import sys | |
| 13 | |
| 14 # FIXME: We need to merge the mojo/tools and sky/tools directories | |
| 15 sys.path.append(os.path.join(mopy.paths.Paths().src_root, 'sky', 'tools')) | |
| 16 from skypy.skyserver import SkyServer | |
| 17 import skypy.paths | |
| 18 | |
| 19 | |
| 20 def main(): | |
| 21 parser = argparse.ArgumentParser(description='Helper to launch mojo demos') | |
| 22 parser.add_argument('-d', dest='build_dir', type=str) | |
| 23 parser.add_argument('--browser', action='store_const', const='browser', | |
| 24 dest='demo', help='Use the browser demo') | |
| 25 parser.add_argument('--wm_flow', action='store_const', const='wm_flow', | |
| 26 dest='demo', help='Use the wm_flow demo') | |
| 27 | |
| 28 args = parser.parse_args() | |
| 29 | |
| 30 config = Config(target_os=Config.OS_LINUX, is_debug=True) | |
| 31 paths = mopy.paths.Paths(config, build_dir=args.build_dir) | |
| 32 mojo_shell = paths.mojo_shell_path | |
| 33 | |
| 34 cmd = [mojo_shell] | |
| 35 cmd.append('--v=1') | |
| 36 | |
| 37 HTTP_PORT = 9999 | |
| 38 configuration = 'Debug' if config.is_debug else 'Release' | |
| 39 | |
| 40 # package: urls in Sky's Dart code expect sky and mojo dart packages | |
| 41 # vended from /packages. Make sure we build mojo/sky packages before serving: | |
| 42 sdk_root = os.path.join(paths.build_dir, 'gen', 'sky_sdk') | |
| 43 packages_root = os.path.join(sdk_root, 'packages_root') | |
| 44 subprocess.check_call([ | |
| 45 os.path.join(paths.src_root, 'sky', 'tools', 'deploy_sdk.py'), | |
| 46 '--build-dir', paths.build_dir, | |
| 47 '--non-interactive', | |
| 48 '--dev-environment', | |
| 49 '--fake-pub-get-into', packages_root, | |
| 50 sdk_root, | |
| 51 ]) | |
| 52 server = SkyServer(HTTP_PORT, configuration, paths.src_root, packages_root) | |
| 53 | |
| 54 if args.demo == 'browser': | |
| 55 base_url = server.path_as_url(paths.build_dir) | |
| 56 wm_url = os.path.join(base_url, 'example_window_manager.mojo') | |
| 57 browser_url = os.path.join(base_url, 'browser.mojo') | |
| 58 cmd.append('--url-mappings=mojo:window_manager=mojo:example_window_manager') | |
| 59 cmd.append('--args-for=mojo:window_manager %s' % (wm_url)) | |
| 60 cmd.append('--args-for=mojo:browser %s' % (browser_url)) | |
| 61 cmd.append('mojo:window_manager') | |
| 62 elif args.demo == 'wm_flow': | |
| 63 base_url = server.path_as_url(paths.build_dir) | |
| 64 wm_url = os.path.join(base_url, 'wm_flow_wm.mojo') | |
| 65 app_url = os.path.join(base_url, 'wm_flow_app.mojo') | |
| 66 cmd.append('--url-mappings=mojo:window_manager=' + wm_url) | |
| 67 # Mojo apps don't know their own URL yet: | |
| 68 # https://docs.google.com/a/chromium.org/document/d/1AQ2y6ekzvbdaMF5WrUQmney
XJnke-MnYYL4Gz1AKDos | |
| 69 cmd.append('--args-for=%s %s' % (app_url, app_url)) | |
| 70 cmd.append('--args-for=mojo:window_manager %s' % (wm_url)) | |
| 71 cmd.append(app_url) | |
| 72 else: | |
| 73 parser.print_usage() | |
| 74 print "--browser or --wm_flow is required" | |
| 75 return 1 | |
| 76 | |
| 77 # http://stackoverflow.com/questions/4748344/whats-the-reverse-of-shlex-split | |
| 78 # shlex.quote doesn't exist until 3.3 | |
| 79 # This doesn't print exactly what we want, but it's better than nothing: | |
| 80 print " ".join(map(pipes.quote, cmd)) | |
| 81 with server: | |
| 82 return subprocess.call(cmd) | |
| 83 | |
| 84 if __name__ == '__main__': | |
| 85 sys.exit(main()) | |
| OLD | NEW |