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

Unified Diff: pkg/analyzer/lib/src/plugin/plugin_configuration.dart

Issue 2559523005: Remove the AnalysisOptionsProcessor (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
« no previous file with comments | « pkg/analyzer/lib/src/plugin/options_plugin.dart ('k') | pkg/analyzer/lib/src/task/options.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/lib/src/plugin/plugin_configuration.dart
diff --git a/pkg/analyzer/lib/src/plugin/plugin_configuration.dart b/pkg/analyzer/lib/src/plugin/plugin_configuration.dart
deleted file mode 100644
index 2137f1195c89aa807315177509eb08b9b770252c..0000000000000000000000000000000000000000
--- a/pkg/analyzer/lib/src/plugin/plugin_configuration.dart
+++ /dev/null
@@ -1,198 +0,0 @@
-// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library analyzer.src.plugin.plugin_configuration;
-
-import 'package:analyzer/plugin/options.dart';
-import 'package:analyzer/src/generated/engine.dart';
-import 'package:yaml/yaml.dart';
-
-const _analyzerOptionScope = 'analyzer';
-
-const _pluginOptionScope = 'plugins';
-
-/// Parse the given string into a plugin manifest.
-PluginManifest parsePluginManifestString(String manifestSource) {
- var yaml = loadYaml(manifestSource);
- if (yaml == null) {
- return null;
- }
- _verifyMap(yaml, 'plugin manifest');
- Iterable<String> pluginHost = _parseHosts(yaml['contributes_to']);
- PluginInfo plugin = _parsePlugin(yaml);
- return new PluginManifest(contributesTo: pluginHost, plugin: plugin);
-}
-
-String _asString(dynamic yaml) {
- if (yaml != null && yaml is! String) {
- throw new PluginConfigFormatException(
- 'Unable to parse pugin manifest, '
- 'expected `String`, got `${yaml.runtimeType}`',
- yaml);
- }
- return yaml;
-}
-
-Iterable<String> _parseHosts(dynamic yaml) {
- List<String> hosts = <String>[];
- if (yaml is String) {
- hosts.add(yaml);
- } else if (yaml is YamlList) {
- yaml.forEach((h) => hosts.add(_asString(h)));
- }
- return hosts;
-}
-
-PluginInfo _parsePlugin(dynamic yaml) {
- if (yaml != null) {
- _verifyMap(yaml, 'plugin manifest');
- return new PluginInfo._fromYaml(details: yaml);
- }
- return null;
-}
-
-PluginInfo _processPluginMapping(dynamic name, dynamic details) {
- if (name is String) {
- if (details is String) {
- return new PluginInfo(name: name, version: details);
- }
- if (details is YamlMap) {
- return new PluginInfo._fromYaml(name: name, details: details);
- }
- }
-
- return null;
-}
-
-_verifyMap(dynamic yaml, String context) {
- if (yaml is! YamlMap) {
- throw new PluginConfigFormatException(
- 'Unable to parse $context, '
- 'expected `YamlMap`, got `${yaml.runtimeType}`',
- yaml);
- }
-}
-
-/// A callback for error handling.
-typedef ErrorHandler(Exception e);
-
-/// Describes plugin configuration information as extracted from an
-/// analysis options map or plugin manifest.
-class PluginConfig {
- final Iterable<PluginInfo> plugins;
- PluginConfig(this.plugins);
-
- /// Create a plugin configuration from an options map.
- factory PluginConfig.fromOptions(Map<String, Object> options) {
- List<PluginInfo> plugins = [];
- var analyzerOptions = options[_analyzerOptionScope];
- if (analyzerOptions != null) {
- //TODO(pq): handle "raw" maps (https://github.com/dart-lang/sdk/issues/25126)
- if (analyzerOptions is YamlMap) {
- var pluginConfig = analyzerOptions[_pluginOptionScope];
- if (pluginConfig is YamlMap) {
- pluginConfig.forEach((name, details) {
- var plugin = _processPluginMapping(name, details);
- if (plugin != null) {
- plugins.add(plugin);
- }
- });
- } else {
- // Anything but an empty list of plugins is treated as a format error.
- if (pluginConfig != null) {
- throw new PluginConfigFormatException(
- 'Unrecognized plugin config format, expected `YamlMap`, '
- 'got `${pluginConfig.runtimeType}`',
- pluginConfig);
- }
- }
- }
- }
-
- return new PluginConfig(plugins);
- }
-}
-
-/// Thrown on bad plugin config format.
-class PluginConfigFormatException implements Exception {
- /// Descriptive message.
- final message;
-
- /// The `plugin:` yaml node for generating detailed error feedback.
- final yamlNode;
- PluginConfigFormatException(this.message, this.yamlNode);
-}
-
-/// Extracts plugin config details from analysis options.
-class PluginConfigOptionsProcessor extends OptionsProcessor {
- final ErrorHandler _errorHandler;
-
- PluginConfig _config;
-
- PluginConfigOptionsProcessor([this._errorHandler]);
-
- /// The processed plugin config.
- PluginConfig get config => _config;
-
- @override
- void onError(Exception exception) {
- if (_errorHandler != null) {
- _errorHandler(exception);
- }
- }
-
- @override
- void optionsProcessed(AnalysisContext context, Map<String, Object> options) {
- _config = new PluginConfig.fromOptions(options);
- }
-}
-
-/// Describes plugin information.
-class PluginInfo {
- final String name;
- final String className;
- final String version;
- final String libraryUri;
- final String packageName;
- final String path;
- PluginInfo(
- {this.name,
- this.version,
- this.className,
- this.libraryUri,
- this.packageName,
- this.path});
-
- factory PluginInfo._fromYaml({String name, YamlMap details}) =>
- new PluginInfo(
- name: name,
- version: _asString(details['version']),
- className: _asString(details['class_name']),
- libraryUri: _asString(details['library_uri']),
- packageName: _asString(details['package_name']),
- path: _asString(details['path']));
-}
-
-/// Plugin manifests accompany plugin packages, providing
-/// configuration information for published plugins.
-///
-/// Provisionally, plugin manifests live in a file `plugin.yaml`
-/// at the root of the plugin package.
-///
-/// my_plugin/
-/// bin/
-/// lib/
-/// plugin.yaml
-/// pubspec.yaml
-///
-/// Provisional manifest file format:
-///
-/// class_name: MyAnalyzerPlugin
-/// library_uri: 'my_plugin/my_analyzer_plugin.dart'
-/// contributes_to: analyzer
-class PluginManifest {
- PluginInfo plugin;
- Iterable<String> contributesTo;
- PluginManifest({this.plugin, this.contributesTo});
-}
« no previous file with comments | « pkg/analyzer/lib/src/plugin/options_plugin.dart ('k') | pkg/analyzer/lib/src/task/options.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698