| Index: pkg/analysis_server/lib/src/server/driver.dart
|
| diff --git a/pkg/analysis_server/lib/src/server/driver.dart b/pkg/analysis_server/lib/src/server/driver.dart
|
| index 9a467e4b2d48f93b7d8eb54558e7f28107ada535..36ba37b944c1c8a8776473e0291f3e8a661b9522 100644
|
| --- a/pkg/analysis_server/lib/src/server/driver.dart
|
| +++ b/pkg/analysis_server/lib/src/server/driver.dart
|
| @@ -17,14 +17,14 @@ import 'package:analysis_server/starter.dart';
|
| import 'package:analyzer/file_system/physical_file_system.dart';
|
| import 'package:analyzer/instrumentation/file_instrumentation.dart';
|
| import 'package:analyzer/instrumentation/instrumentation.dart';
|
| +import 'package:analyzer/plugin/plugin.dart';
|
| import 'package:analyzer/src/generated/engine.dart';
|
| import 'package:analyzer/src/generated/incremental_logger.dart';
|
| import 'package:analyzer/src/generated/java_io.dart';
|
| import 'package:analyzer/src/generated/sdk.dart';
|
| import 'package:analyzer/src/generated/sdk_io.dart';
|
| +import 'package:analyzer/src/plugin/plugin_impl.dart';
|
| import 'package:args/args.dart';
|
| -import 'package:plugin/manager.dart';
|
| -import 'package:plugin/plugin.dart';
|
|
|
| /**
|
| * Initializes incremental logger.
|
| @@ -51,130 +51,6 @@ void _initIncrementalLogger(String spec) {
|
| }
|
| }
|
|
|
| -/// Commandline argument parser. (Copied from analyzer/lib/options.dart)
|
| -/// TODO(pquitslund): replaces with a simple [ArgParser] instance
|
| -/// when the args package supports ignoring unrecognized
|
| -/// options/flags (https://github.com/dart-lang/args/issues/9).
|
| -class CommandLineParser {
|
| - final List<String> _knownFlags;
|
| - final bool _alwaysIgnoreUnrecognized;
|
| - final ArgParser _parser;
|
| -
|
| - /// Creates a new command line parser
|
| - CommandLineParser({bool alwaysIgnoreUnrecognized: false})
|
| - : _knownFlags = <String>[],
|
| - _alwaysIgnoreUnrecognized = alwaysIgnoreUnrecognized,
|
| - _parser = new ArgParser(allowTrailingOptions: true);
|
| -
|
| - ArgParser get parser => _parser;
|
| -
|
| - /// Defines a flag.
|
| - /// See [ArgParser.addFlag()].
|
| - void addFlag(String name, {String abbr, String help, bool defaultsTo: false,
|
| - bool negatable: true, void callback(bool value), bool hide: false}) {
|
| - _knownFlags.add(name);
|
| - _parser.addFlag(name,
|
| - abbr: abbr,
|
| - help: help,
|
| - defaultsTo: defaultsTo,
|
| - negatable: negatable,
|
| - callback: callback,
|
| - hide: hide);
|
| - }
|
| -
|
| - /// Defines a value-taking option.
|
| - /// See [ArgParser.addOption()].
|
| - void addOption(String name, {String abbr, String help, List<String> allowed,
|
| - Map<String, String> allowedHelp, String defaultsTo, void callback(value),
|
| - bool allowMultiple: false}) {
|
| - _knownFlags.add(name);
|
| - _parser.addOption(name,
|
| - abbr: abbr,
|
| - help: help,
|
| - allowed: allowed,
|
| - allowedHelp: allowedHelp,
|
| - defaultsTo: defaultsTo,
|
| - callback: callback,
|
| - allowMultiple: allowMultiple);
|
| - }
|
| -
|
| - /// Generates a string displaying usage information for the defined options.
|
| - /// See [ArgParser.usage].
|
| - String getUsage() => _parser.usage;
|
| -
|
| - /// Parses [args], a list of command-line arguments, matches them against the
|
| - /// flags and options defined by this parser, and returns the result. The
|
| - /// values of any defined variables are captured in the given map.
|
| - /// See [ArgParser].
|
| - ArgResults parse(
|
| - List<String> args, Map<String, String> definedVariables) => _parser
|
| - .parse(_filterUnknowns(parseDefinedVariables(args, definedVariables)));
|
| -
|
| - List<String> parseDefinedVariables(
|
| - List<String> args, Map<String, String> definedVariables) {
|
| - int count = args.length;
|
| - List<String> remainingArgs = <String>[];
|
| - for (int i = 0; i < count; i++) {
|
| - String arg = args[i];
|
| - if (arg == '--') {
|
| - while (i < count) {
|
| - remainingArgs.add(args[i++]);
|
| - }
|
| - } else if (arg.startsWith("-D")) {
|
| - definedVariables[arg.substring(2)] = args[++i];
|
| - } else {
|
| - remainingArgs.add(arg);
|
| - }
|
| - }
|
| - return remainingArgs;
|
| - }
|
| -
|
| - List<String> _filterUnknowns(List<String> args) {
|
| -
|
| - // Only filter args if the ignore flag is specified, or if
|
| - // _alwaysIgnoreUnrecognized was set to true
|
| - if (_alwaysIgnoreUnrecognized ||
|
| - args.contains('--ignore-unrecognized-flags')) {
|
| -
|
| - // Filter all unrecognized flags and options.
|
| - List<String> filtered = <String>[];
|
| - for (int i = 0; i < args.length; ++i) {
|
| - String arg = args[i];
|
| - if (arg.startsWith('--') && arg.length > 2) {
|
| - String option = arg.substring(2);
|
| - // strip the last '=value'
|
| - int equalsOffset = option.lastIndexOf('=');
|
| - if (equalsOffset != -1) {
|
| - option = option.substring(0, equalsOffset);
|
| - }
|
| - // check the option
|
| - if (!_knownFlags.contains(option)) {
|
| - //"eat" params by advancing to the next flag/option
|
| - i = _getNextFlagIndex(args, i);
|
| - } else {
|
| - filtered.add(arg);
|
| - }
|
| - } else {
|
| - filtered.add(arg);
|
| - }
|
| - }
|
| -
|
| - return filtered;
|
| - } else {
|
| - return args;
|
| - }
|
| - }
|
| -
|
| - _getNextFlagIndex(args, i) {
|
| - for (; i < args.length; ++i) {
|
| - if (args[i].startsWith('--')) {
|
| - return i;
|
| - }
|
| - }
|
| - return i;
|
| - }
|
| -}
|
| -
|
| /**
|
| * The [Driver] class represents a single running instance of the analysis
|
| * server application. It is responsible for parsing command line options
|
| @@ -542,3 +418,127 @@ class Driver implements ServerStarter {
|
| return uuid;
|
| }
|
| }
|
| +
|
| +/// Commandline argument parser. (Copied from analyzer/lib/options.dart)
|
| +/// TODO(pquitslund): replaces with a simple [ArgParser] instance
|
| +/// when the args package supports ignoring unrecognized
|
| +/// options/flags (https://github.com/dart-lang/args/issues/9).
|
| +class CommandLineParser {
|
| + final List<String> _knownFlags;
|
| + final bool _alwaysIgnoreUnrecognized;
|
| + final ArgParser _parser;
|
| +
|
| + /// Creates a new command line parser
|
| + CommandLineParser({bool alwaysIgnoreUnrecognized: false})
|
| + : _knownFlags = <String>[],
|
| + _alwaysIgnoreUnrecognized = alwaysIgnoreUnrecognized,
|
| + _parser = new ArgParser(allowTrailingOptions: true);
|
| +
|
| + ArgParser get parser => _parser;
|
| +
|
| + /// Defines a flag.
|
| + /// See [ArgParser.addFlag()].
|
| + void addFlag(String name, {String abbr, String help, bool defaultsTo: false,
|
| + bool negatable: true, void callback(bool value), bool hide: false}) {
|
| + _knownFlags.add(name);
|
| + _parser.addFlag(name,
|
| + abbr: abbr,
|
| + help: help,
|
| + defaultsTo: defaultsTo,
|
| + negatable: negatable,
|
| + callback: callback,
|
| + hide: hide);
|
| + }
|
| +
|
| + /// Defines a value-taking option.
|
| + /// See [ArgParser.addOption()].
|
| + void addOption(String name, {String abbr, String help, List<String> allowed,
|
| + Map<String, String> allowedHelp, String defaultsTo, void callback(value),
|
| + bool allowMultiple: false}) {
|
| + _knownFlags.add(name);
|
| + _parser.addOption(name,
|
| + abbr: abbr,
|
| + help: help,
|
| + allowed: allowed,
|
| + allowedHelp: allowedHelp,
|
| + defaultsTo: defaultsTo,
|
| + callback: callback,
|
| + allowMultiple: allowMultiple);
|
| + }
|
| +
|
| + /// Generates a string displaying usage information for the defined options.
|
| + /// See [ArgParser.usage].
|
| + String getUsage() => _parser.usage;
|
| +
|
| + /// Parses [args], a list of command-line arguments, matches them against the
|
| + /// flags and options defined by this parser, and returns the result. The
|
| + /// values of any defined variables are captured in the given map.
|
| + /// See [ArgParser].
|
| + ArgResults parse(
|
| + List<String> args, Map<String, String> definedVariables) => _parser
|
| + .parse(_filterUnknowns(parseDefinedVariables(args, definedVariables)));
|
| +
|
| + List<String> parseDefinedVariables(
|
| + List<String> args, Map<String, String> definedVariables) {
|
| + int count = args.length;
|
| + List<String> remainingArgs = <String>[];
|
| + for (int i = 0; i < count; i++) {
|
| + String arg = args[i];
|
| + if (arg == '--') {
|
| + while (i < count) {
|
| + remainingArgs.add(args[i++]);
|
| + }
|
| + } else if (arg.startsWith("-D")) {
|
| + definedVariables[arg.substring(2)] = args[++i];
|
| + } else {
|
| + remainingArgs.add(arg);
|
| + }
|
| + }
|
| + return remainingArgs;
|
| + }
|
| +
|
| + List<String> _filterUnknowns(List<String> args) {
|
| +
|
| + // Only filter args if the ignore flag is specified, or if
|
| + // _alwaysIgnoreUnrecognized was set to true
|
| + if (_alwaysIgnoreUnrecognized ||
|
| + args.contains('--ignore-unrecognized-flags')) {
|
| +
|
| + // Filter all unrecognized flags and options.
|
| + List<String> filtered = <String>[];
|
| + for (int i = 0; i < args.length; ++i) {
|
| + String arg = args[i];
|
| + if (arg.startsWith('--') && arg.length > 2) {
|
| + String option = arg.substring(2);
|
| + // strip the last '=value'
|
| + int equalsOffset = option.lastIndexOf('=');
|
| + if (equalsOffset != -1) {
|
| + option = option.substring(0, equalsOffset);
|
| + }
|
| + // check the option
|
| + if (!_knownFlags.contains(option)) {
|
| + //"eat" params by advancing to the next flag/option
|
| + i = _getNextFlagIndex(args, i);
|
| + } else {
|
| + filtered.add(arg);
|
| + }
|
| + } else {
|
| + filtered.add(arg);
|
| + }
|
| + }
|
| +
|
| + return filtered;
|
| + } else {
|
| + return args;
|
| + }
|
| + }
|
| +
|
| + _getNextFlagIndex(args, i) {
|
| + for (; i < args.length; ++i) {
|
| + if (args[i].startsWith('--')) {
|
| + return i;
|
| + }
|
| + }
|
| + return i;
|
| + }
|
| +}
|
|
|