Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(815)

Unified Diff: pkg/dev_compiler/lib/src/analyzer/context.dart

Issue 2584293003: DDC/AnalyzerCLI common cmdline option processing (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/dev_compiler/lib/src/analyzer/context.dart
diff --git a/pkg/dev_compiler/lib/src/analyzer/context.dart b/pkg/dev_compiler/lib/src/analyzer/context.dart
index 007a582957da89b5dba66b0b9adf2c40afd75890..bdf5d1646cd9562fa760c9a96adffbebba41318d 100644
--- a/pkg/dev_compiler/lib/src/analyzer/context.dart
+++ b/pkg/dev_compiler/lib/src/analyzer/context.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:args/args.dart' show ArgParser, ArgResults;
+import 'package:analyzer/src/command_line/arguments.dart';
import 'package:analyzer/file_system/file_system.dart'
show ResourceProvider, ResourceUriResolver;
import 'package:analyzer/file_system/physical_file_system.dart'
@@ -24,11 +25,13 @@ import 'package:path/path.dart' as path;
/// Options used to set up Source URI resolution in the analysis context.
class AnalyzerOptions {
+ final ContextBuilderOptions contextBuilderOptions;
+
/// Custom URI mappings, such as "dart:foo" -> "path/to/foo.dart"
final Map<String, String> customUrlMappings;
/// Package root when resolving 'package:' urls the standard way.
- final String packageRoot;
+ String get packageRoot => contextBuilderOptions.defaultPackagesDirectoryPath;
/// List of summary file paths.
final List<String> summaryPaths;
@@ -39,39 +42,52 @@ class AnalyzerOptions {
/// Path to the dart-sdk summary. If this is set, it will be used in favor
/// of the unsummarized one.
- final String dartSdkSummaryPath;
+ String get dartSdkSummaryPath => contextBuilderOptions.dartSdkSummaryPath;
/// Defined variables used by `bool.fromEnvironment` etc.
- final Map<String, String> declaredVariables;
+ Map<String, String> get declaredVariables =>
+ contextBuilderOptions.declaredVariables;
- AnalyzerOptions(
- {this.summaryPaths: const [],
+ AnalyzerOptions._(
+ {this.contextBuilderOptions,
+ this.summaryPaths: const [],
String dartSdkPath,
- this.dartSdkSummaryPath,
- this.customUrlMappings: const {},
- this.packageRoot: null,
- this.declaredVariables: const {}})
- : dartSdkPath = dartSdkPath ?? getSdkDir().path;
-
- factory AnalyzerOptions.fromArguments(
- ArgResults args, Map<String, String> declaredVariables) {
- var sdkPath = args['dart-sdk'] ?? getSdkDir().path;
- var sdkSummaryPath = args['dart-sdk-summary'];
-
- if (sdkSummaryPath == null) {
- sdkSummaryPath = path.join(sdkPath, 'lib', '_internal', 'ddc_sdk.sum');
- } else if (sdkSummaryPath == 'build') {
+ this.customUrlMappings: const {}})
+ : dartSdkPath = dartSdkPath ?? getSdkDir().path {
+ contextBuilderOptions.declaredVariables ??= const {};
+ }
+
+ factory AnalyzerOptions.basic(
+ {String dartSdkPath,
+ String dartSdkSummaryPath,
+ List<String> summaryPaths}) {
+ var contextBuilderOptions = new ContextBuilderOptions();
+ contextBuilderOptions.dartSdkSummaryPath = dartSdkSummaryPath;
+
+ return new AnalyzerOptions._(
+ contextBuilderOptions: contextBuilderOptions,
+ dartSdkPath: dartSdkPath,
+ summaryPaths: summaryPaths);
+ }
+
+ factory AnalyzerOptions.fromArguments(ArgResults args,
+ {String dartSdkSummaryPath, List<String> summaryPaths}) {
+ var contextBuilderOptions = createContextBuilderOptions(args);
+
+ if (dartSdkSummaryPath != null)
+ contextBuilderOptions.dartSdkSummaryPath = dartSdkSummaryPath;
+ contextBuilderOptions.dartSdkSummaryPath ??=
+ path.join(args['dart-sdk'], 'lib', '_internal', 'ddc_sdk.sum');
+ if (contextBuilderOptions.dartSdkSummaryPath == 'build') {
// For building the SDK, we explicitly set the path to none.
- sdkSummaryPath = null;
+ contextBuilderOptions.dartSdkSummaryPath = null;
}
- return new AnalyzerOptions(
- summaryPaths: args['summary'] as List<String>,
- dartSdkPath: sdkPath,
- dartSdkSummaryPath: sdkSummaryPath,
- customUrlMappings: _parseUrlMappings(args['url-mapping']),
- packageRoot: args['package-root'],
- declaredVariables: declaredVariables);
+ return new AnalyzerOptions._(
+ contextBuilderOptions: contextBuilderOptions,
+ summaryPaths: summaryPaths ?? args['summary'] as List<String>,
+ dartSdkPath: args['dart-sdk'],
+ customUrlMappings: _parseUrlMappings(args['url-mapping']));
}
static void addArguments(ArgParser parser, {bool hide: true}) {

Powered by Google App Engine
This is Rietveld 408576698