Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(114)

Side by Side Diff: mojo/devtools/common/devtoolslib/shell_config.py

Issue 1844943004: devtools: download shell binaries and set origin when run w/ --mojo-version. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Copyright 2015 The Chromium Authors. All rights reserved. 1 # Copyright 2015 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """Configuration for the shell abstraction. 5 """Configuration for the shell abstraction.
6 6
7 This module declares ShellConfig and knows how to compute it from command-line 7 This module declares ShellConfig and knows how to compute it from command-line
8 arguments, applying any default paths inferred from the checkout, configuration 8 arguments, applying any default paths inferred from the checkout, configuration
9 file, etc. 9 file, etc.
10 """ 10 """
11 11
12 import ast 12 import ast
13 13
14 from devtoolslib import paths 14 from devtoolslib import paths
15 15
16 16
17 class ShellConfigurationException(Exception): 17 class ShellConfigurationException(Exception):
18 """Represents an error preventing creating a functional shell abstraction.""" 18 """Represents an error preventing creating a functional shell abstraction."""
19 pass 19 pass
20 20
21 21
22 class ShellConfig(object): 22 class ShellConfig(object):
23 """Configuration for the shell abstraction.""" 23 """Configuration for the shell abstraction."""
24 24
25 def __init__(self): 25 def __init__(self):
26 self.android = None 26 self.android = None
27 self.mojo_version = None
27 self.shell_path = None 28 self.shell_path = None
28 self.origin = None 29 self.origin = None
29 self.map_url_list = [] 30 self.map_url_list = []
30 self.map_origin_list = [] 31 self.map_origin_list = []
31 self.dev_servers = [] 32 self.dev_servers = []
32 self.reuse_servers = False 33 self.reuse_servers = False
33 self.content_handlers = dict() 34 self.content_handlers = dict()
34 self.verbose = None 35 self.verbose = None
35 36
36 # Android-only. 37 # Android-only.
(...skipping 15 matching lines...) Expand all
52 self.mappings = None 53 self.mappings = None
53 54
54 55
55 def add_shell_arguments(parser): 56 def add_shell_arguments(parser):
56 """Adds argparse arguments allowing to configure shell abstraction using 57 """Adds argparse arguments allowing to configure shell abstraction using
57 configure_shell() below. 58 configure_shell() below.
58 """ 59 """
59 # Arguments configuring the shell run. 60 # Arguments configuring the shell run.
60 parser.add_argument('--android', help='Run on Android', 61 parser.add_argument('--android', help='Run on Android',
61 action='store_true') 62 action='store_true')
63 parser.add_argument('--mojo-version', help='Version of the Mojo to use. '
64 'This will set the origin and download the shell binary '
65 'at the given version')
62 parser.add_argument('--shell-path', help='Path of the Mojo shell binary.') 66 parser.add_argument('--shell-path', help='Path of the Mojo shell binary.')
63 parser.add_argument('--origin', help='Origin for mojo: URLs. This can be a ' 67 parser.add_argument('--origin', help='Origin for mojo: URLs. This can be a '
64 'web url or a local directory path. If MOJO_VERSION file ' 68 'web url or a local directory path. If MOJO_VERSION file '
65 'is among ancestors of this file, by default the origin ' 69 'is among ancestors of this file, by default the origin '
66 'will point to mojo services prebuilt at the ' 70 'will point to mojo services prebuilt at the '
67 'specified version in Google Storage') 71 'specified version in Google Storage')
68 parser.add_argument('--map-url', action='append', 72 parser.add_argument('--map-url', action='append',
69 help='Define a mapping for a url in the format ' 73 help='Define a mapping for a url in the format '
70 '<url>=<url-or-local-file-path>') 74 '<url>=<url-or-local-file-path>')
71 parser.add_argument('--map-origin', action='append', 75 parser.add_argument('--map-origin', action='append',
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 return ast.literal_eval(spec) 141 return ast.literal_eval(spec)
138 142
139 143
140 def get_shell_config(script_args): 144 def get_shell_config(script_args):
141 """Processes command-line options defined in add_shell_arguments(), applying 145 """Processes command-line options defined in add_shell_arguments(), applying
142 any inferred default paths and produces an instance of ShellConfig. 146 any inferred default paths and produces an instance of ShellConfig.
143 147
144 Returns: 148 Returns:
145 An instance of ShellConfig. 149 An instance of ShellConfig.
146 """ 150 """
147 # Infer paths based on the Chromium configuration options
148 # (--debug/--release, etc.), if running within a Chromium-like checkout.
149 inferred_params = paths.infer_params(script_args.android, script_args.debug,
150 script_args.target_cpu)
151 inferred_origin = None
152 if inferred_params['mojo_version']:
153 inferred_origin = "https://storage.googleapis.com/mojo/services"
154 if script_args.android:
155 inferred_origin += "/android-arm"
156 else:
157 inferred_origin += "/linux-x64"
158 # Get the versions that were built against Modular's version of the SDK.
159 inferred_origin += "/%s" % inferred_params['mojo_version']
160 if script_args.verbose:
161 print('Inferring origin from `MOJO_VERSION` as: ' +
162 inferred_origin)
163 151
164 shell_config = ShellConfig() 152 shell_config = ShellConfig()
165 shell_config.android = script_args.android 153 shell_config.android = script_args.android
166 shell_config.shell_path = (script_args.shell_path or 154 shell_config.mojo_version = script_args.mojo_version
167 inferred_params['shell_path']) 155 shell_config.shell_path = script_args.shell_path
168 shell_config.origin = script_args.origin or inferred_origin 156 shell_config.origin = script_args.origin
169 shell_config.map_url_list = script_args.map_url 157 shell_config.map_url_list = script_args.map_url
170 shell_config.map_origin_list = script_args.map_origin 158 shell_config.map_origin_list = script_args.map_origin
171 shell_config.reuse_servers = script_args.reuse_servers 159 shell_config.reuse_servers = script_args.reuse_servers
172 shell_config.verbose = script_args.verbose 160 shell_config.verbose = script_args.verbose
173 161
162 # Infer paths based on the Chromium configuration options
163 # (--debug/--release, etc.), if running within a Chromium-like checkout.
164 inferred_params = paths.infer_params(script_args.android, script_args.debug,
165 script_args.target_cpu)
166 # Infer |mojo_version| if the client sets it in a MOJO_VERSION file.
167 shell_config.mojo_version = (shell_config.mojo_version or
168 inferred_params['mojo_version'])
169 # Use the shell binary and mojo: apps from the build directory, unless
170 # |mojo_version| is set.
171 if not shell_config.mojo_version:
172 shell_config.shell_path = (shell_config.shell_path or
173 inferred_params['shell_path'])
174 if shell_config.android:
175 shell_config.origin = (shell_config.origin or
176 inferred_params['build_dir_path'])
177
174 # Android-only. 178 # Android-only.
175 shell_config.adb_path = (script_args.adb_path or inferred_params['adb_path'] 179 shell_config.adb_path = (script_args.adb_path or inferred_params['adb_path']
176 or 'adb') 180 or 'adb')
177 shell_config.target_device = script_args.target_device 181 shell_config.target_device = script_args.target_device
178 shell_config.logcat_tags = script_args.logcat_tags 182 shell_config.logcat_tags = script_args.logcat_tags
179 183
180 # Desktop-only. 184 # Desktop-only.
181 shell_config.use_osmesa = script_args.use_osmesa 185 shell_config.use_osmesa = script_args.use_osmesa
182 186
183 if (shell_config.android and not shell_config.origin and
184 inferred_params['build_dir_path']):
185 shell_config.origin = inferred_params['build_dir_path']
186
187 # Read the mojoconfig file. 187 # Read the mojoconfig file.
188 config_file = script_args.config_file 188 config_file = script_args.config_file
189 if not script_args.no_config_file: 189 if not script_args.no_config_file:
190 config_file = config_file or _discover_config_file() 190 config_file = config_file or _discover_config_file()
191 191
192 if config_file: 192 if config_file:
193 with config_file: 193 with config_file:
194 config_file_aliases = [] 194 config_file_aliases = []
195 if script_args.config_aliases: 195 if script_args.config_aliases:
196 for alias_spec in script_args.config_aliases: 196 for alias_spec in script_args.config_aliases:
(...skipping 29 matching lines...) Expand all
226 226
227 if 'content_handlers' in config: 227 if 'content_handlers' in config:
228 try: 228 try:
229 for (mime_type, 229 for (mime_type,
230 content_handler_url) in config['content_handlers'].iteritems(): 230 content_handler_url) in config['content_handlers'].iteritems():
231 shell_config.content_handlers[mime_type] = content_handler_url 231 shell_config.content_handlers[mime_type] = content_handler_url
232 except (ValueError, KeyError): 232 except (ValueError, KeyError):
233 raise ShellConfigurationException('Failed to parse content_handlers in ' 233 raise ShellConfigurationException('Failed to parse content_handlers in '
234 'the config file.') 234 'the config file.')
235 return shell_config 235 return shell_config
OLDNEW
« no previous file with comments | « mojo/devtools/common/devtoolslib/shell_arguments.py ('k') | mojo/devtools/common/docs/mojo_run.md » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698