Commit aed056c6 authored by Dan Rubel's avatar Dan Rubel Committed by GitHub

remove flutter listen (#6198)

parent e44f6fe4
......@@ -23,7 +23,6 @@ import 'src/commands/doctor.dart';
import 'src/commands/drive.dart';
import 'src/commands/format.dart';
import 'src/commands/install.dart';
import 'src/commands/listen.dart';
import 'src/commands/logs.dart';
import 'src/commands/setup.dart';
import 'src/commands/packages.dart';
......@@ -70,7 +69,6 @@ Future<Null> main(List<String> args) async {
..addCommand(new DriveCommand())
..addCommand(new FormatCommand())
..addCommand(new InstallCommand())
..addCommand(new ListenCommand())
..addCommand(new LogsCommand())
..addCommand(new PackagesCommand())
..addCommand(new PrecacheCommand())
......
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:async';
import 'dart:io';
import '../base/os.dart';
import '../base/process.dart';
import '../cache.dart';
import '../device.dart';
import '../globals.dart';
import 'run.dart';
class ListenCommand extends RunCommandBase {
ListenCommand({ this.singleRun: false });
@override
final String name = 'listen';
@override
final String description = 'Listen for changes to files and reload the running app.';
@override
final String usageFooter =
'By default, only listens to "./" and "./lib/". To listen to additional directories, list them on\n'
'the command line.';
/// Only run once. Used for testing.
final bool singleRun;
Device device;
@override
Future<int> verifyThenRunCommand() async {
if (!commandValidator())
return 1;
device = await findTargetDevice();
if (device == null)
return 1;
return super.verifyThenRunCommand();
}
@override
Future<int> runCommand() async {
Iterable<String> directories = () sync* {
yield* argResults.rest;
yield '.';
yield 'lib';
}();
List<String> watchCommand = _constructWatchCommand(directories);
if (watchCommand == null)
return 1;
Cache.releaseLockEarly();
printStatus('Listening for changes in '
'${directories.map((String name) => "'$name${Platform.pathSeparator}'").join(', ')}'
'.');
int result = 0;
bool firstTime = true;
do {
printStatus('');
// TODO(devoncarew): We could print out here what changes we detected that caused a re-run.
if (!firstTime)
printStatus('Re-running app...');
result = await startApp(
device,
target: targetFile,
install: firstTime,
stop: true,
debuggingOptions: new DebuggingOptions.enabled(getBuildMode()),
traceStartup: traceStartup,
route: route
);
firstTime = false;
} while (!singleRun && result == 0 && _watchDirectory(watchCommand));
return 0;
}
List<String> _constructWatchCommand(Iterable<String> directories) {
if (Platform.isMacOS) {
if (os.which('fswatch') == null) {
printError('"listen" command is only useful if you have installed '
'fswatch on Mac. Run "brew install fswatch" to install it with homebrew.');
return null;
} else {
return <String>['fswatch', '-r', '-v', '-1']..addAll(directories);
}
} else if (Platform.isLinux) {
if (os.which('inotifywait') == null) {
printError('"listen" command is only useful if you have installed '
'inotifywait on Linux. Run "apt-get install inotify-tools" or '
'equivalent to install it.');
return null;
} else {
return <String>[
'inotifywait',
'-r',
'-e',
// Only listen for events that matter, to avoid triggering constantly
// from the editor watching files.
'modify,close_write,move,create,delete',
]..addAll(directories);
}
} else {
printError('"listen" command is only available on Mac and Linux.');
}
return null;
}
bool _watchDirectory(List<String> watchCommand) {
assert(watchCommand != null);
try {
runCheckedSync(watchCommand);
} catch (e) {
printError('Watching directories failed.', e);
return false;
}
return true;
}
}
......@@ -28,7 +28,6 @@ import 'devices_test.dart' as devices_test;
import 'drive_test.dart' as drive_test;
import 'format_test.dart' as format_test;
import 'install_test.dart' as install_test;
import 'listen_test.dart' as listen_test;
import 'logs_test.dart' as logs_test;
import 'os_utils_test.dart' as os_utils_test;
import 'packages_test.dart' as packages_test;
......@@ -62,7 +61,6 @@ void main() {
drive_test.main();
format_test.main();
install_test.main();
listen_test.main();
logs_test.main();
os_utils_test.main();
packages_test.main();
......
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:flutter_tools/src/commands/listen.dart';
import 'package:test/test.dart';
import 'src/common.dart';
import 'src/context.dart';
import 'src/mocks.dart';
void main() {
group('listen', () {
testUsingContext('returns 1 when no device is connected', () {
ListenCommand command = new ListenCommand(singleRun: true);
applyMocksToCommand(command);
return createTestCommandRunner(command).run(<String>['listen']).then((int code) {
expect(code, 1);
});
});
});
}
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