mirror of
https://github.com/flutter/flutter
synced 2024-10-13 03:32:55 +00:00
Add --checked flag to mojo_run that runs sky_viewer in checked mode
Also refactors the command line assembling to make a bit more sense. Fixes #53
This commit is contained in:
parent
9996d4255e
commit
ed2877c093
|
@ -7,7 +7,6 @@ library sky_tools.run_mojo;
|
|||
import 'dart:async';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:args/args.dart';
|
||||
import 'package:args/command_runner.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:path/path.dart' as path;
|
||||
|
@ -17,11 +16,14 @@ import 'process.dart';
|
|||
|
||||
final Logger _logging = new Logger('sky_tools.run_mojo');
|
||||
|
||||
enum _MojoConfig { Debug, Release }
|
||||
|
||||
class RunMojoCommand extends Command {
|
||||
final name = 'run_mojo';
|
||||
final description = 'Run a Flutter app in mojo.';
|
||||
RunMojoCommand() {
|
||||
argParser.addFlag('android', negatable: false, help: 'Run on an Android device');
|
||||
argParser.addFlag('checked', negatable: false, help: 'Run Flutter in checked mode');
|
||||
argParser.addFlag('mojo-debug', negatable: false, help: 'Use Debug build of mojo');
|
||||
argParser.addFlag('mojo-release', negatable: false, help: 'Use Release build of mojo (default)');
|
||||
|
||||
|
@ -38,12 +40,12 @@ class RunMojoCommand extends Command {
|
|||
return file.absolute.path;
|
||||
}
|
||||
|
||||
Future<int> _runAndroid(ArgResults results, String appPath) async {
|
||||
Future<int> _runAndroid(String mojoPath, _MojoConfig mojoConfig, String appPath, List<String> additionalArgs) async {
|
||||
String skyViewerUrl = ArtifactStore.googleStorageUrl('viewer', 'android-arm');
|
||||
String command = await _makePathAbsolute(path.join(results['mojo-path'], 'mojo', 'devtools', 'common', 'mojo_run'));
|
||||
String command = await _makePathAbsolute(path.join(mojoPath, 'mojo', 'devtools', 'common', 'mojo_run'));
|
||||
String appName = path.basename(appPath);
|
||||
String appDir = path.dirname(appPath);
|
||||
String buildFlag = argResults['mojo-debug'] ? '--debug' : '--release';
|
||||
String buildFlag = mojoConfig == _MojoConfig.Debug ? '--debug' : '--release';
|
||||
List<String> args = [
|
||||
'--android',
|
||||
buildFlag,
|
||||
|
@ -58,19 +60,19 @@ class RunMojoCommand extends Command {
|
|||
args.add('--verbose');
|
||||
}
|
||||
}
|
||||
args.addAll(results.rest);
|
||||
args.addAll(additionalArgs);
|
||||
return runCommandAndStreamOutput(command, args);
|
||||
}
|
||||
|
||||
Future<int> _runLinux(ArgResults results, String appPath) async {
|
||||
Future<int> _runLinux(String mojoPath, _MojoConfig mojoConfig, String appPath, List<String> additionalArgs) async {
|
||||
String viewerPath = await _makePathAbsolute(await ArtifactStore.getPath(Artifact.SkyViewerMojo));
|
||||
String mojoBuildType = argResults['mojo-debug'] ? 'Debug' : 'Release';
|
||||
String mojoShellPath = await _makePathAbsolute(path.join(results['mojo-path'], 'out', mojoBuildType, 'mojo_shell'));
|
||||
String mojoBuildType = mojoConfig == _MojoConfig.Debug ? 'Debug' : 'Release';
|
||||
String mojoShellPath = await _makePathAbsolute(path.join(mojoPath, 'out', mojoBuildType, 'mojo_shell'));
|
||||
List<String> args = [
|
||||
'file://${appPath}',
|
||||
'--url-mappings=mojo:sky_viewer=file://${viewerPath}'
|
||||
];
|
||||
args.addAll(results.rest);
|
||||
args.addAll(additionalArgs);
|
||||
return runCommandAndStreamOutput(mojoShellPath, args);
|
||||
}
|
||||
|
||||
|
@ -84,11 +86,18 @@ class RunMojoCommand extends Command {
|
|||
_logging.severe('Cannot specify both --mojo-debug and --mojo-release');
|
||||
return 1;
|
||||
}
|
||||
List<String> args = [];
|
||||
if (argResults['checked']) {
|
||||
args.add('--args-for=mojo:sky_viewer --enable-checked-mode');
|
||||
}
|
||||
String mojoPath = argResults['mojo-path'];
|
||||
_MojoConfig mojoConfig = argResults['mojo-debug'] ? _MojoConfig.Debug : _MojoConfig.Release;
|
||||
String appPath = await _makePathAbsolute(argResults['app']);
|
||||
|
||||
if (argResults['android']) {
|
||||
return _runAndroid(argResults, appPath);
|
||||
return _runAndroid(mojoPath, mojoConfig, appPath, args);
|
||||
} else {
|
||||
return _runLinux(argResults, appPath);
|
||||
return _runLinux(mojoPath, mojoConfig, appPath, args);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue