From c4da1da20cfb3a5e185358c2794356bcf62f456a Mon Sep 17 00:00:00 2001 From: Alhaad Gokhale Date: Wed, 23 Mar 2016 17:13:47 -0700 Subject: [PATCH 1/3] Allow run_mojo command to run an app at a URL. Fixes #2113 --- .../lib/src/commands/run_mojo.dart | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/packages/flutter_tools/lib/src/commands/run_mojo.dart b/packages/flutter_tools/lib/src/commands/run_mojo.dart index f19c208054d..ce7d8157fdc 100644 --- a/packages/flutter_tools/lib/src/commands/run_mojo.dart +++ b/packages/flutter_tools/lib/src/commands/run_mojo.dart @@ -94,7 +94,6 @@ class RunMojoCommand extends FlutterCommand { args.add(command); BuildConfiguration config = _getCurrentHostConfig(); - final String appPath = _makePathAbsolute(bundlePath); String flutterPath; if (config == null || config.type == BuildType.prebuilt) { @@ -108,17 +107,31 @@ class RunMojoCommand extends FlutterCommand { if (argResults['android']) { args.add('--android'); - final String appName = path.basename(appPath); - final String appDir = path.dirname(appPath); - args.add('mojo:launcher http://app/$appName'); - args.add('--map-origin=http://app/=$appDir'); + } + try { + final String appPath = _makePathAbsolute(bundlePath); + if (argResults['android']) { + final String appName = path.basename(appPath); + final String appDir = path.dirname(appPath); + args.add('mojo:launcher http://app/$appName'); + args.add('--map-origin=http://app/=$appDir'); + } else { + args.add('mojo:launcher file://$appPath'); + } + } catch(_) { + // This means that |bundlePath| is not on the file-system, so let us treat + // it as a URL. + args.add('mojo:launcher $bundlePath'); + } + + // Add url-mapping for mojo:flutter. + if (argResults['android']) { final String flutterName = path.basename(flutterPath); final String flutterDir = path.dirname(flutterPath); args.add('--map-origin=http://flutter/=$flutterDir'); args.add('--url-mappings=mojo:flutter=http://flutter/$flutterName'); } else { - args.add('mojo:launcher file://$appPath'); args.add('--url-mappings=mojo:flutter=file://$flutterPath'); } From 35e30235f09136bfb41613528a7bba6163b693fb Mon Sep 17 00:00:00 2001 From: Alhaad Gokhale Date: Wed, 23 Mar 2016 19:11:04 -0700 Subject: [PATCH 2/3] In run_mojo command, parse Uri scheme to decide whether app is on local filesystem or not. --- .../flutter_tools/lib/src/commands/run_mojo.dart | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/packages/flutter_tools/lib/src/commands/run_mojo.dart b/packages/flutter_tools/lib/src/commands/run_mojo.dart index ce7d8157fdc..f94f41abd40 100644 --- a/packages/flutter_tools/lib/src/commands/run_mojo.dart +++ b/packages/flutter_tools/lib/src/commands/run_mojo.dart @@ -109,19 +109,18 @@ class RunMojoCommand extends FlutterCommand { args.add('--android'); } - try { + final Uri appUri = Uri.parse(bundlePath); + if (appUri.scheme.isEmpty || appUri.scheme == 'file') { final String appPath = _makePathAbsolute(bundlePath); if (argResults['android']) { - final String appName = path.basename(appPath); - final String appDir = path.dirname(appPath); - args.add('mojo:launcher http://app/$appName'); - args.add('--map-origin=http://app/=$appDir'); + final String appName = path.basename(appPath); + final String appDir = path.dirname(appPath); + args.add('mojo:launcher http://app/$appName'); + args.add('--map-origin=http://app/=$appDir'); } else { args.add('mojo:launcher file://$appPath'); } - } catch(_) { - // This means that |bundlePath| is not on the file-system, so let us treat - // it as a URL. + } else { args.add('mojo:launcher $bundlePath'); } From 58edc7ed9bc97dd8d00a8fe3ce0fd4d8374fbb86 Mon Sep 17 00:00:00 2001 From: Alhaad Gokhale Date: Thu, 24 Mar 2016 10:01:00 -0700 Subject: [PATCH 3/3] In run_mojo, rename bundlePath -> targetApp since it may not be a path. --- .../lib/src/commands/run_mojo.dart | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/flutter_tools/lib/src/commands/run_mojo.dart b/packages/flutter_tools/lib/src/commands/run_mojo.dart index f94f41abd40..cf2d535d6ad 100644 --- a/packages/flutter_tools/lib/src/commands/run_mojo.dart +++ b/packages/flutter_tools/lib/src/commands/run_mojo.dart @@ -86,7 +86,7 @@ class RunMojoCommand extends FlutterCommand { return result; } - Future> _getShellConfig(String bundlePath) async { + Future> _getShellConfig(String targetApp) async { List args = []; final bool useDevtools = _useDevtools(); @@ -109,9 +109,9 @@ class RunMojoCommand extends FlutterCommand { args.add('--android'); } - final Uri appUri = Uri.parse(bundlePath); + final Uri appUri = Uri.parse(targetApp); if (appUri.scheme.isEmpty || appUri.scheme == 'file') { - final String appPath = _makePathAbsolute(bundlePath); + final String appPath = _makePathAbsolute(targetApp); if (argResults['android']) { final String appName = path.basename(appPath); final String appDir = path.dirname(appPath); @@ -121,7 +121,7 @@ class RunMojoCommand extends FlutterCommand { args.add('mojo:launcher file://$appPath'); } } else { - args.add('mojo:launcher $bundlePath'); + args.add('mojo:launcher $targetApp'); } // Add url-mapping for mojo:flutter. @@ -164,21 +164,21 @@ class RunMojoCommand extends FlutterCommand { await downloadToolchain(); - String bundlePath = argResults['app']; - if (bundlePath == null) { - bundlePath = _kDefaultBundlePath; + String targetApp = argResults['app']; + if (targetApp == null) { + targetApp = _kDefaultBundlePath; String mainPath = findMainDartFile(argResults['target']); int result = await flx.build( toolchain, mainPath: mainPath, - outputPath: bundlePath + outputPath: targetApp ); if (result != 0) return result; } - return await runCommandAndStreamOutput(await _getShellConfig(bundlePath)); + return await runCommandAndStreamOutput(await _getShellConfig(targetApp)); } }