
This patch makes `flutter start` work without a clone of the engine git repository. Making this work pulled a relatively large refactor of how the commands interact with application packages and devices. Now commands that want to interact with application packages or devices inherit from a common base class that holds stores of those objects as members. In production, the commands download and connect to devices based on the build configuration stored on the FlutterCommandRunner. In testing, these fields are used to mock out the real application package and devices.
70 lines
1.6 KiB
Dart
70 lines
1.6 KiB
Dart
// 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 'package:logging/logging.dart';
|
|
|
|
import 'flutter_command.dart';
|
|
import '../device.dart';
|
|
|
|
final Logger _logging = new Logger('sky_tools.list');
|
|
|
|
class ListCommand extends FlutterCommand {
|
|
final String name = 'list';
|
|
final String description = 'List all connected devices.';
|
|
|
|
ListCommand() {
|
|
argParser.addFlag('details',
|
|
abbr: 'd',
|
|
negatable: false,
|
|
help: 'Log additional details about attached devices.');
|
|
}
|
|
|
|
@override
|
|
Future<int> run() async {
|
|
connectToDevices();
|
|
|
|
bool details = argResults['details'];
|
|
|
|
if (details)
|
|
print('Android Devices:');
|
|
|
|
for (AndroidDevice device in AndroidDevice.getAttachedDevices(devices.android)) {
|
|
if (details) {
|
|
print('${device.id}\t'
|
|
'${device.modelID}\t'
|
|
'${device.productID}\t'
|
|
'${device.deviceCodeName}');
|
|
} else {
|
|
print(device.id);
|
|
}
|
|
}
|
|
|
|
if (details)
|
|
print('iOS Devices:');
|
|
|
|
for (IOSDevice device in IOSDevice.getAttachedDevices(devices.iOS)) {
|
|
if (details) {
|
|
print('${device.id}\t${device.name}');
|
|
} else {
|
|
print(device.id);
|
|
}
|
|
}
|
|
|
|
if (details) {
|
|
print('iOS Simulators:');
|
|
}
|
|
for (IOSSimulator device in IOSSimulator.getAttachedDevices(devices.iOSSimulator)) {
|
|
if (details) {
|
|
print('${device.id}\t${device.name}');
|
|
} else {
|
|
print(device.id);
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
}
|