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:
James Robinson 2015-09-25 15:59:36 -07:00
parent 9996d4255e
commit ed2877c093

View file

@ -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);
}
}
}