Version 2.14.0-371.0.dev
Merge commit '58969783ba6b20b68c42da32a91a77e5862bbafb' into 'dev'
diff --git a/pkg/dartdev/lib/src/analysis_server.dart b/pkg/dartdev/lib/src/analysis_server.dart
index 0e0f59c..9768d39 100644
--- a/pkg/dartdev/lib/src/analysis_server.dart
+++ b/pkg/dartdev/lib/src/analysis_server.dart
@@ -9,6 +9,7 @@
import 'package:analysis_server/src/server/driver.dart' show Driver;
import 'package:analysis_server_client/protocol.dart'
show EditBulkFixesResult, ResponseDecoder;
+import 'package:args/args.dart';
import 'package:meta/meta.dart';
import 'package:path/path.dart' as path;
@@ -16,17 +17,23 @@
import 'sdk.dart';
import 'utils.dart';
+/// When set, this function is executed just before the Analysis Server starts.
+void Function(String cmdName, List<FileSystemEntity> analysisRoots,
+ ArgResults argResults) preAnalysisServerStart;
+
/// A class to provide an API wrapper around an analysis server process.
class AnalysisServer {
AnalysisServer(
this.sdkPath,
this.analysisRoots, {
@required this.commandName,
+ @required this.argResults,
});
final Directory sdkPath;
final List<FileSystemEntity> analysisRoots;
final String commandName;
+ final ArgResults argResults;
Process _process;
@@ -69,6 +76,7 @@
final Map<String, Completer<Map<String, dynamic>>> _requestCompleters = {};
Future<void> start() async {
+ preAnalysisServerStart?.call(commandName, analysisRoots, argResults);
final List<String> command = <String>[
sdk.analysisServerSnapshot,
'--${Driver.SUPPRESS_ANALYTICS_FLAG}',
diff --git a/pkg/dartdev/lib/src/commands/analyze.dart b/pkg/dartdev/lib/src/commands/analyze.dart
index a4c02be..0c1d925 100644
--- a/pkg/dartdev/lib/src/commands/analyze.dart
+++ b/pkg/dartdev/lib/src/commands/analyze.dart
@@ -100,6 +100,7 @@
io.Directory(sdk.sdkPath),
targets,
commandName: 'analyze',
+ argResults: argResults,
);
server.onErrors.listen((FileAnalysisErrors fileErrors) {
diff --git a/pkg/dartdev/lib/src/commands/fix.dart b/pkg/dartdev/lib/src/commands/fix.dart
index 60d2e46..08d4d36 100644
--- a/pkg/dartdev/lib/src/commands/fix.dart
+++ b/pkg/dartdev/lib/src/commands/fix.dart
@@ -93,6 +93,7 @@
io.Directory(sdk.sdkPath),
[dir],
commandName: 'fix',
+ argResults: argResults,
);
await server.start();
diff --git a/pkg/dartdev/lib/src/core.dart b/pkg/dartdev/lib/src/core.dart
index 2da96fc..b84cd86 100644
--- a/pkg/dartdev/lib/src/core.dart
+++ b/pkg/dartdev/lib/src/core.dart
@@ -18,6 +18,10 @@
Logger log;
bool isDiagnostics = false;
+/// When set, this function is executed from the [DartdevCommand] constructor to
+/// contribute additional flags.
+void Function(ArgParser argParser, String cmdName) flagContributor;
+
abstract class DartdevCommand extends Command<int> {
final String _name;
final String _description;
@@ -29,7 +33,9 @@
final bool hidden;
DartdevCommand(this._name, this._description, this._verbose,
- {this.hidden = false});
+ {this.hidden = false}) {
+ flagContributor?.call(argParser, _name);
+ }
@override
String get name => _name;
diff --git a/pkg/dartdev/test/analysis_server_test.dart b/pkg/dartdev/test/analysis_server_test.dart
index dba2ccc..05f7597 100644
--- a/pkg/dartdev/test/analysis_server_test.dart
+++ b/pkg/dartdev/test/analysis_server_test.dart
@@ -25,14 +25,14 @@
test('can start', () async {
AnalysisServer server = AnalysisServer(io.Directory(sdk.sdkPath), [p.dir],
- commandName: 'testing');
+ commandName: 'testing', argResults: null);
await server.start();
await server.shutdown();
});
test('can send message', () async {
AnalysisServer server = AnalysisServer(io.Directory(sdk.sdkPath), [p.dir],
- commandName: 'testing');
+ commandName: 'testing', argResults: null);
await server.start();
final response = await server.getVersion();
diff --git a/tools/VERSION b/tools/VERSION
index d3f29b9..2713250 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 14
PATCH 0
-PRERELEASE 370
+PRERELEASE 371
PRERELEASE_PATCH 0
\ No newline at end of file