Chromium Code Reviews| Index: pkg/analyzer_cli/lib/src/options.dart |
| diff --git a/pkg/analyzer_cli/lib/src/options.dart b/pkg/analyzer_cli/lib/src/options.dart |
| index f1095ef7630cdf534b2f521733fc000a6651c7c5..faed8912bbde3c12514e1522d234ecd0d8fa3e39 100644 |
| --- a/pkg/analyzer_cli/lib/src/options.dart |
| +++ b/pkg/analyzer_cli/lib/src/options.dart |
| @@ -39,6 +39,9 @@ class CommandLineOptions { |
| /// Whether to use build mode. |
| final bool buildMode; |
| + /// Whether to use build mode as a Bazel persistent worker. |
| + final bool buildModePersistentWorker; |
| + |
| /// List of summary file paths to use in build mode. |
| final List<String> buildSummaryInputs; |
| @@ -145,6 +148,7 @@ class CommandLineOptions { |
| ArgResults args, Map<String, String> definedVariables) |
| : buildAnalysisOutput = args['build-analysis-output'], |
| buildMode = args['build-mode'], |
| + buildModePersistentWorker = args['persistent_worker'], |
| buildSummaryFallback = args['build-summary-fallback'], |
| buildSummaryInputs = args['build-summary-input'], |
| buildSummaryOnly = args['build-summary-only'], |
| @@ -186,7 +190,7 @@ class CommandLineOptions { |
| /// analyzer options. In case of a format error, calls [printAndFail], which |
| /// by default prints an error message to stderr and exits. |
| static CommandLineOptions parse(List<String> args, |
| - [printAndFail = printAndFail]) { |
| + [printAndFail(String msg) = printAndFail]) { |
| CommandLineOptions options = _parse(args); |
| // Check SDK. |
| { |
| @@ -229,6 +233,10 @@ class CommandLineOptions { |
| } |
| // Build mode. |
| + if (options.buildModePersistentWorker && !options.buildMode) { |
| + printAndFail('The option --persisten_worker can be used only ' |
| + 'together with --build-mode.'); |
| + } |
| if (options.buildSummaryOnlyDiet && !options.buildSummaryOnly) { |
| printAndFail('The option --build-summary-only-diet can be used only ' |
| 'together with --build-summary-only.'); |
| @@ -331,6 +339,11 @@ class CommandLineOptions { |
| // |
| // Build mode. |
| // |
| + ..addFlag('persistent_worker', |
| + help: 'Enable Bazel persistent worker mode.', |
| + defaultsTo: false, |
| + negatable: false, |
| + hide: true) |
| ..addOption('build-analysis-output', |
| help: |
| 'Specifies the path to the file where analysis results should be written.', |
| @@ -437,6 +450,17 @@ class CommandLineOptions { |
| args.map((String arg) => arg == '-batch' ? '--batch' : arg).toList(); |
| Map<String, String> definedVariables = <String, String>{}; |
| var results = parser.parse(args, definedVariables); |
| + |
| + // Persistent worker. |
| + if (args.contains('--persistent_worker')) { |
| + if (args.length != 2 || !args.contains('--build-mode')) { |
| + printAndFail('The --persistent_worker flag should be used with and ' |
| + 'only with the --package-mode flag.'); |
|
Paul Berry
2016/03/30 18:27:43
s/--package-mode/--build-mode/
scheglov
2016/03/30 18:39:02
Done.
|
| + return null; // Only reachable in testing. |
| + } |
| + return new CommandLineOptions._fromArgs(results, definedVariables); |
| + } |
| + |
| // Help requests. |
| if (results['help']) { |
| _showUsage(parser); |
| @@ -451,6 +475,14 @@ class CommandLineOptions { |
| exitHandler(15); |
| return null; // Only reachable in testing. |
| } |
| + } else if (results['persistent_worker']) { |
| + if (results.rest.isNotEmpty) { |
| + errorSink.writeln( |
| + 'No source files expected in the persistent worker mode.'); |
| + _showUsage(parser); |
| + exitHandler(15); |
| + return null; // Only reachable in testing. |
| + } |
| } else if (results['version']) { |
| outSink.write('$_binaryName version ${_getVersion()}'); |
| exitHandler(0); |