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 |