OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library analyzer_cli.src.options; | 5 library analyzer_cli.src.options; |
6 | 6 |
7 import 'dart:io'; | 7 import 'dart:io'; |
8 | 8 |
9 import 'package:analyzer/file_system/physical_file_system.dart'; | 9 import 'package:analyzer/file_system/physical_file_system.dart'; |
10 import 'package:analyzer/src/command_line/arguments.dart'; | 10 import 'package:analyzer/src/command_line/arguments.dart'; |
(...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
484 help: 'Disable implicit casts in strong mode (https://goo.gl/cTLz40)') | 484 help: 'Disable implicit casts in strong mode (https://goo.gl/cTLz40)') |
485 ..addFlag('no-implicit-dynamic', | 485 ..addFlag('no-implicit-dynamic', |
486 negatable: false, | 486 negatable: false, |
487 help: 'Disable implicit dynamic (https://goo.gl/m0UgXD)'); | 487 help: 'Disable implicit dynamic (https://goo.gl/m0UgXD)'); |
488 | 488 |
489 try { | 489 try { |
490 // TODO(scheglov) https://code.google.com/p/dart/issues/detail?id=11061 | 490 // TODO(scheglov) https://code.google.com/p/dart/issues/detail?id=11061 |
491 args = | 491 args = |
492 args.map((String arg) => arg == '-batch' ? '--batch' : arg).toList(); | 492 args.map((String arg) => arg == '-batch' ? '--batch' : arg).toList(); |
493 Map<String, String> definedVariables = <String, String>{}; | 493 Map<String, String> definedVariables = <String, String>{}; |
494 var results = parser.parse(args, definedVariables); | 494 args = extractDefinedVariables(args, definedVariables); |
| 495 var results = parser.parse(args); |
495 | 496 |
496 // Persistent worker. | 497 // Persistent worker. |
497 if (args.contains('--persistent_worker')) { | 498 if (args.contains('--persistent_worker')) { |
498 bool validArgs; | 499 bool validArgs; |
499 if (!args.contains('--build-mode')) { | 500 if (!args.contains('--build-mode')) { |
500 validArgs = false; | 501 validArgs = false; |
501 } else if (args.length == 2) { | 502 } else if (args.length == 2) { |
502 validArgs = true; | 503 validArgs = true; |
503 } else if (args.length == 4 && args.contains('--dart-sdk')) { | 504 } else if (args.length == 4 && args.contains('--dart-sdk')) { |
504 validArgs = true; | 505 validArgs = true; |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
626 allowMultiple: allowMultiple, | 627 allowMultiple: allowMultiple, |
627 splitCommas: splitCommas, | 628 splitCommas: splitCommas, |
628 hide: hide); | 629 hide: hide); |
629 } | 630 } |
630 | 631 |
631 /// Generates a string displaying usage information for the defined options. | 632 /// Generates a string displaying usage information for the defined options. |
632 /// See [ArgParser.usage]. | 633 /// See [ArgParser.usage]. |
633 String getUsage() => _parser.usage; | 634 String getUsage() => _parser.usage; |
634 | 635 |
635 /// Parses [args], a list of command-line arguments, matches them against the | 636 /// Parses [args], a list of command-line arguments, matches them against the |
636 /// flags and options defined by this parser, and returns the result. The | 637 /// flags and options defined by this parser, and returns the result. |
637 /// values of any defined variables are captured in the given map. | |
638 /// See [ArgParser]. | 638 /// See [ArgParser]. |
639 ArgResults parse(List<String> args, Map<String, String> definedVariables) => | 639 ArgResults parse(List<String> args) => _parser.parse(_filterUnknowns(args)); |
640 _parser.parse( | |
641 _filterUnknowns(parseDefinedVariables(args, definedVariables))); | |
642 | |
643 List<String> parseDefinedVariables( | |
644 List<String> args, Map<String, String> definedVariables) { | |
645 int count = args.length; | |
646 List<String> remainingArgs = <String>[]; | |
647 for (int i = 0; i < count; i++) { | |
648 String arg = args[i]; | |
649 if (arg == '--') { | |
650 while (i < count) { | |
651 remainingArgs.add(args[i++]); | |
652 } | |
653 } else if (arg.startsWith("-D")) { | |
654 definedVariables[arg.substring(2)] = args[++i]; | |
655 } else { | |
656 remainingArgs.add(arg); | |
657 } | |
658 } | |
659 return remainingArgs; | |
660 } | |
661 | 640 |
662 List<String> _filterUnknowns(List<String> args) { | 641 List<String> _filterUnknowns(List<String> args) { |
663 // Only filter args if the ignore flag is specified, or if | 642 // Only filter args if the ignore flag is specified, or if |
664 // _alwaysIgnoreUnrecognized was set to true. | 643 // _alwaysIgnoreUnrecognized was set to true. |
665 if (_alwaysIgnoreUnrecognized || | 644 if (_alwaysIgnoreUnrecognized || |
666 args.contains('--ignore-unrecognized-flags')) { | 645 args.contains('--ignore-unrecognized-flags')) { |
667 //TODO(pquitslund): replace w/ the following once library skew issues are | 646 //TODO(pquitslund): replace w/ the following once library skew issues are |
668 // sorted out | 647 // sorted out |
669 //return args.where((arg) => !arg.startsWith('--') || | 648 //return args.where((arg) => !arg.startsWith('--') || |
670 // _knownFlags.contains(arg.substring(2))); | 649 // _knownFlags.contains(arg.substring(2))); |
(...skipping 29 matching lines...) Expand all Loading... |
700 | 679 |
701 int _getNextFlagIndex(args, i) { | 680 int _getNextFlagIndex(args, i) { |
702 for (; i < args.length; ++i) { | 681 for (; i < args.length; ++i) { |
703 if (args[i].startsWith('--')) { | 682 if (args[i].startsWith('--')) { |
704 return i; | 683 return i; |
705 } | 684 } |
706 } | 685 } |
707 return i; | 686 return i; |
708 } | 687 } |
709 } | 688 } |
OLD | NEW |