|
16 | 16 | require "fluent/plugin/filter" |
17 | 17 | require "open-uri" |
18 | 18 | require "yaml" |
| 19 | +require "json" |
19 | 20 |
|
20 | 21 | module Fluent |
21 | 22 | module Plugin |
22 | 23 | class ObsoletePluginsFilter < Fluent::Plugin::Filter |
23 | 24 | Fluent::Plugin.register_filter("obsolete_plugins", self) |
24 | 25 |
|
25 | | - OBSOLETE_PLUGINS_URL = "https://raw.githubusercontent.com/fluent/fluentd-website/master/scripts/obsolete-plugins.yml" |
| 26 | + PLUGINS_JSON_URL = "https://raw.githubusercontent.com/fluent/fluentd-website/master/scripts/plugins.json" |
26 | 27 |
|
27 | 28 | desc "Path to obsolete-plugins.yml" |
28 | | - config_param :obsolete_plugins_yml, :string, default: OBSOLETE_PLUGINS_URL |
| 29 | + config_param :obsolete_plugins_yml, :string, default: nil, deprecated: "use plugins_json parameter instead" |
| 30 | + desc "Path to plugins.json" |
| 31 | + config_param :plugins_json, :string, default: PLUGINS_JSON_URL |
29 | 32 | desc "Raise error if obsolete plugins are detected" |
30 | 33 | config_param :raise_error, :bool, default: false |
31 | 34 |
|
32 | 35 | def configure(conf) |
33 | 36 | super |
34 | 37 |
|
35 | | - @obsolete_plugins = URI.open(@obsolete_plugins_yml) do |io| |
36 | | - YAML.safe_load(io.read) |
| 38 | + if @obsolete_plugins_yml |
| 39 | + @obsolete_plugins = URI.open(@obsolete_plugins_yml) do |io| |
| 40 | + YAML.safe_load(io.read) |
| 41 | + end |
| 42 | + else |
| 43 | + plugins = URI.open(@plugins_json) do |io| |
| 44 | + # io.read causes Encoding::UndefinedConversionError with UTF-8 data when Ruby is started with "-Eascii-8bit:ascii-8bit". |
| 45 | + # It set the proper encoding to avoid the error. |
| 46 | + io.set_encoding("UTF-8", "UTF-8") |
| 47 | + JSON.parse(io.read) |
| 48 | + end |
| 49 | + @obsolete_plugins = plugins.select { |plugin| plugin["obsolete"] }.reduce({}) do |result, plugin| |
| 50 | + result[plugin["name"]] = plugin["note"] |
| 51 | + result |
| 52 | + end |
37 | 53 | end |
38 | 54 |
|
39 | 55 | obsolete_plugins = Gem.loaded_specs.keys & @obsolete_plugins.keys |
|
0 commit comments