diff --git a/webdev/lib/src/command/build_command.dart b/webdev/lib/src/command/build_command.dart index 822211b95..1d1c64fdd 100644 --- a/webdev/lib/src/command/build_command.dart +++ b/webdev/lib/src/command/build_command.dart @@ -3,10 +3,10 @@ // BSD-style license that can be found in the LICENSE file. import 'dart:async'; -import 'build_runner_command_base.dart'; +import 'command_base.dart'; /// Command to execute pub run build_runner build. -class BuildCommand extends BuildRunnerCommandBase { +class BuildCommand extends CommandBase { BuildCommand() : super(releaseDefault: true); @override diff --git a/webdev/lib/src/command/build_runner_command_base.dart b/webdev/lib/src/command/command_base.dart similarity index 95% rename from webdev/lib/src/command/build_runner_command_base.dart rename to webdev/lib/src/command/command_base.dart index fe7adc399..f5fd1a7ba 100644 --- a/webdev/lib/src/command/build_runner_command_base.dart +++ b/webdev/lib/src/command/command_base.dart @@ -19,10 +19,10 @@ const _verbose = 'verbose'; /// Extend to get a command with the arguments common to all build_runner /// commands. -abstract class BuildRunnerCommandBase extends Command { +abstract class CommandBase extends Command { final bool releaseDefault; - BuildRunnerCommandBase({@required this.releaseDefault}) { + CommandBase({@required this.releaseDefault}) { // TODO(nshahan) Expose more common args passed to build_runner commands. // build_runner might expose args for use in wrapping scripts like this one. argParser @@ -45,13 +45,8 @@ abstract class BuildRunnerCommandBase extends Command { help: 'Enables verbose logging.'); } - Future runCore(String command) async { - await checkPubspecLock(); - - var buildRunnerScript = await _buildRunnerScript(); - - final arguments = [command]; - + List getArgs() { + var arguments = []; if ((argResults[_release] as bool) ?? releaseDefault) { arguments.add('--$_release'); } @@ -64,6 +59,15 @@ abstract class BuildRunnerCommandBase extends Command { if (argResults[_verbose] as bool) { arguments.add('--$_verbose'); } + return arguments; + } + + Future runCore(String command) async { + await checkPubspecLock(); + + var buildRunnerScript = await _buildRunnerScript(); + + final arguments = [command]..addAll(getArgs()); var exitCode = 0; diff --git a/webdev/lib/src/command/serve_command.dart b/webdev/lib/src/command/serve_command.dart index 142d2da87..116742f39 100644 --- a/webdev/lib/src/command/serve_command.dart +++ b/webdev/lib/src/command/serve_command.dart @@ -4,10 +4,10 @@ import 'dart:async'; -import 'build_runner_command_base.dart'; +import 'command_base.dart'; /// Command to execute pub run build_runner serve. -class ServeCommand extends BuildRunnerCommandBase { +class ServeCommand extends CommandBase { @override final name = 'serve'; @@ -30,6 +30,22 @@ class ServeCommand extends BuildRunnerCommandBase { help: 'Enables logging for each request to the server.'); } + @override + List getArgs() { + var arguments = super.getArgs(); + + var hostname = argResults['hostname'] as String; + if (hostname != null) { + arguments.addAll(['--hostname', hostname]); + } + + if (argResults['log-requests'] == true) { + arguments.add('--log-requests'); + } + + return arguments; + } + @override Future run() => runCore('serve'); }