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}); |
-} |