mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
77 lines
2.5 KiB
Dart
77 lines
2.5 KiB
Dart
// Copyright 2014 The Flutter 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 '../debug_adapters/server.dart';
|
|
import '../globals.dart' as globals;
|
|
import '../runner/flutter_command.dart';
|
|
|
|
/// This command will start up a Debug Adapter that communicates using the Debug Adapter Protocol (DAP).
|
|
///
|
|
/// This is for use by editors and IDEs that have DAP clients to launch and
|
|
/// debug Flutter apps/tests. It extends the standard Dart DAP implementation
|
|
/// from DDS with Flutter-specific functionality (such as Hot Restart).
|
|
///
|
|
/// The server is intended to be single-use. It should live only for the
|
|
/// duration of a single debug session in the editor, and terminate when the
|
|
/// user stops debugging. If a user starts multiple debug sessions
|
|
/// simultaneously it is expected that the editor will start multiple debug
|
|
/// adapters.
|
|
///
|
|
/// The DAP specification can be found at
|
|
/// https://microsoft.github.io/debug-adapter-protocol/.
|
|
class DebugAdapterCommand extends FlutterCommand {
|
|
DebugAdapterCommand({ bool verboseHelp = false}) : hidden = !verboseHelp {
|
|
usesIpv6Flag(verboseHelp: verboseHelp);
|
|
addDdsOptions(verboseHelp: verboseHelp);
|
|
argParser
|
|
.addFlag(
|
|
'test',
|
|
help: 'Whether to use the "flutter test" debug adapter to run tests'
|
|
' and emit custom events for test progress/results.',
|
|
);
|
|
}
|
|
|
|
@override
|
|
final String name = 'debug-adapter';
|
|
|
|
@override
|
|
List<String> get aliases => const <String>['debug_adapter'];
|
|
|
|
@override
|
|
final String description = 'Run a Debug Adapter Protocol (DAP) server to communicate with the Flutter tool.';
|
|
|
|
@override
|
|
final String category = FlutterCommandCategory.tools;
|
|
|
|
@override
|
|
final bool hidden;
|
|
|
|
@override
|
|
Future<FlutterCommandResult> runCommand() async {
|
|
final DapServer server = DapServer(
|
|
globals.stdio.stdin,
|
|
globals.stdio.stdout.nonBlocking,
|
|
fileSystem: globals.fs,
|
|
platform: globals.platform,
|
|
ipv6: ipv6 ?? false,
|
|
enableDds: enableDds,
|
|
test: boolArgDeprecated('test'),
|
|
onError: (Object? e) {
|
|
globals.printError(
|
|
'Input could not be parsed as a Debug Adapter Protocol message.\n'
|
|
'The "flutter debug-adapter" command is intended for use by tooling '
|
|
'that communicates using the Debug Adapter Protocol.\n\n'
|
|
'$e',
|
|
);
|
|
},
|
|
);
|
|
|
|
await server.channel.closed;
|
|
|
|
return FlutterCommandResult.success();
|
|
}
|
|
}
|