Commit 725474c6 authored by krisgiesing's avatar krisgiesing

Merge pull request #416 from krisgiesing/run_mojo_fix

Allow flutter engine path to be set when using run_mojo
parents 3350c0c3 95a2af8b
...@@ -5,17 +5,17 @@ ...@@ -5,17 +5,17 @@
import 'dart:async'; import 'dart:async';
import 'dart:io'; import 'dart:io';
import 'package:args/command_runner.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import 'package:path/path.dart' as path; import 'package:path/path.dart' as path;
import '../artifacts.dart'; import '../artifacts.dart';
import '../build_configuration.dart'; import '../build_configuration.dart';
import '../process.dart'; import '../process.dart';
import 'flutter_command.dart';
final Logger _logging = new Logger('flutter_tools.run_mojo'); final Logger _logging = new Logger('flutter_tools.run_mojo');
class RunMojoCommand extends Command { class RunMojoCommand extends FlutterCommand {
final String name = 'run_mojo'; final String name = 'run_mojo';
final String description = 'Run a Flutter app in mojo.'; final String description = 'Run a Flutter app in mojo.';
...@@ -30,6 +30,8 @@ class RunMojoCommand extends Command { ...@@ -30,6 +30,8 @@ class RunMojoCommand extends Command {
argParser.addOption('devtools-path', help: 'Path to mojo devtools\' mojo_run command.'); argParser.addOption('devtools-path', help: 'Path to mojo devtools\' mojo_run command.');
} }
bool get requiresProjectRoot => false;
// TODO(abarth): Why not use path.absolute? // TODO(abarth): Why not use path.absolute?
String _makePathAbsolute(String relativePath) { String _makePathAbsolute(String relativePath) {
File file = new File(relativePath); File file = new File(relativePath);
...@@ -58,6 +60,18 @@ class RunMojoCommand extends Command { ...@@ -58,6 +60,18 @@ class RunMojoCommand extends Command {
return _makePathAbsolute(path.join(argResults['mojo-path'], 'out', mojoBuildType, 'mojo_shell')); return _makePathAbsolute(path.join(argResults['mojo-path'], 'out', mojoBuildType, 'mojo_shell'));
} }
BuildConfiguration _getCurrentHostConfig() {
BuildConfiguration result;
TargetPlatform target = getCurrentHostPlatformAsTarget();
for (BuildConfiguration config in buildConfigurations) {
if (config.targetPlatform == target) {
result = config;
break;
}
}
return result;
}
Future<List<String>> _getShellConfig() async { Future<List<String>> _getShellConfig() async {
List<String> args = []; List<String> args = [];
...@@ -77,8 +91,15 @@ class RunMojoCommand extends Command { ...@@ -77,8 +91,15 @@ class RunMojoCommand extends Command {
args.add('--url-mappings=mojo:sky_viewer=http://sky_viewer/sky_viewer.mojo'); args.add('--url-mappings=mojo:sky_viewer=http://sky_viewer/sky_viewer.mojo');
} else { } else {
final appPath = _makePathAbsolute(argResults['app']); final appPath = _makePathAbsolute(argResults['app']);
Artifact artifact = ArtifactStore.getArtifact(type: ArtifactType.viewer, targetPlatform: TargetPlatform.linux); String viewerPath;
final viewerPath = _makePathAbsolute(await ArtifactStore.getPath(artifact)); BuildConfiguration config = _getCurrentHostConfig();
if (config.type == BuildType.prebuilt) {
Artifact artifact = ArtifactStore.getArtifact(type: ArtifactType.viewer, targetPlatform: TargetPlatform.linux);
viewerPath = _makePathAbsolute(await ArtifactStore.getPath(artifact));
} else {
String localPath = path.join(config.buildDir, 'sky_viewer.mojo');
viewerPath = _makePathAbsolute(localPath);
}
args.add('file://$appPath'); args.add('file://$appPath');
args.add('--url-mappings=mojo:sky_viewer=file://$viewerPath'); args.add('--url-mappings=mojo:sky_viewer=file://$viewerPath');
} }
...@@ -104,7 +125,7 @@ class RunMojoCommand extends Command { ...@@ -104,7 +125,7 @@ class RunMojoCommand extends Command {
} }
@override @override
Future<int> run() async { Future<int> runInProject() async {
if ((argResults['mojo-path'] == null && argResults['devtools-path'] == null) || (argResults['mojo-path'] != null && argResults['devtools-path'] != null)) { if ((argResults['mojo-path'] == null && argResults['devtools-path'] == null) || (argResults['mojo-path'] != null && argResults['devtools-path'] != null)) {
_logging.severe('Must specify either --mojo-path or --devtools-path.'); _logging.severe('Must specify either --mojo-path or --devtools-path.');
return 1; return 1;
...@@ -117,4 +138,5 @@ class RunMojoCommand extends Command { ...@@ -117,4 +138,5 @@ class RunMojoCommand extends Command {
return await runCommandAndStreamOutput(await _getShellConfig()); return await runCommandAndStreamOutput(await _getShellConfig());
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment