Skip to content

Commit

Permalink
Organize hyphenated name and underscore delimited name
Browse files Browse the repository at this point in the history
* plugin name will unify to underscore delimited name
* gem name will unify to hyphenated name with "fluent-plugin-" prefix
  • Loading branch information
okkez committed Nov 15, 2017
1 parent a75e2a5 commit f8ace9c
Show file tree
Hide file tree
Showing 6 changed files with 63 additions and 23 deletions.
32 changes: 24 additions & 8 deletions lib/fluent/command/plugin_generator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -137,32 +137,36 @@ def user_email
end

def gem_name
"fluent-plugin-#{name}"
"fluent-plugin-#{dash_name}"
end

def plugin_name
underscore_name
end

def class_name
"#{name.capitalize}#{type.capitalize}"
"#{capitalized_name}#{type.capitalize}"
end

def plugin_filename
case type
when "input"
"in_#{name}.rb"
"in_#{underscore_name}.rb"
when "output"
"out_#{name}.rb"
"out_#{underscore_name}.rb"
else
"#{type}_#{name}.rb"
"#{type}_#{underscore_name}.rb"
end
end

def test_filename
case type
when "input"
"test_in_#{name}.rb"
"test_in_#{underscore_name}.rb"
when "output"
"test_out_#{name}.rb"
"test_out_#{underscore_name}.rb"
else
"test_#{type}_#{name}.rb"
"test_#{type}_#{underscore_name}.rb"
end
end

Expand All @@ -179,6 +183,18 @@ def dest_filename(path)
end
end

def capitalized_name
@capitalized_name ||= name.split(/[-_]/).map(&:capitalize).join
end

def underscore_name
@underscore_name ||= name.tr("-", "_")
end

def dash_name
@dash_name ||= name.tr("_", "-")
end

def preamble
@license.preamble(user_name)
end
Expand Down
2 changes: 1 addition & 1 deletion templates/new_gem/lib/fluent/plugin/filter.rb.erb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ require "fluent/plugin/filter"
module Fluent
module Plugin
class <%= class_name %> < Fluent::Plugin::Filter
Fluent::Plugin.register_filter("<%= name %>", self)
Fluent::Plugin.register_filter("<%= plugin_name %>", self)

def filter(tag, time, record)
end
Expand Down
2 changes: 1 addition & 1 deletion templates/new_gem/lib/fluent/plugin/input.rb.erb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ require "fluent/plugin/input"
module Fluent
module Plugin
class <%= class_name %> < Fluent::Plugin::Input
Fluent::Plugin.register_input("<%= name %>", self)
Fluent::Plugin.register_input("<%= plugin_name %>", self)
end
end
end
2 changes: 1 addition & 1 deletion templates/new_gem/lib/fluent/plugin/output.rb.erb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ require "fluent/plugin/output"
module Fluent
module Plugin
class <%= class_name %> < Fluent::Plugin::Output
Fluent::Plugin.register_output("<%= name %>", self)
Fluent::Plugin.register_output("<%= plugin_name %>", self)
end
end
end
2 changes: 1 addition & 1 deletion templates/new_gem/lib/fluent/plugin/parser.rb.erb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ require "fluent/plugin/parser"
module Fluent
module Plugin
class <%= class_name %> < Fluent::Plugin::Parser
Fluent::Plugin.register_parser("<%= name %>", self)
Fluent::Plugin.register_parser("<%= plugin_name %>", self)
end

def parse(text)
Expand Down
46 changes: 35 additions & 11 deletions test/command/test_plugin_generator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,19 @@
require 'fluent/command/plugin_generator'

class TestFluentPluginGenerator < Test::Unit::TestCase
sub_test_case "generate plugin" do
TEMP_DIR = "tmp/plugin_generator"
setup do
FileUtils.mkdir_p(TEMP_DIR)
@pwd = Dir.pwd
Dir.chdir(TEMP_DIR)
end
TEMP_DIR = "tmp/plugin_generator"
setup do
FileUtils.mkdir_p(TEMP_DIR)
@pwd = Dir.pwd
Dir.chdir(TEMP_DIR)
end

teardown do
Dir.chdir(@pwd)
FileUtils.rm_rf(TEMP_DIR)
end
teardown do
Dir.chdir(@pwd)
FileUtils.rm_rf(TEMP_DIR)
end

sub_test_case "generate plugin" do
data(input: ["input", "in"],
output: ["output", "out"],
filter: ["filter", "filter"],
Expand Down Expand Up @@ -65,4 +65,28 @@ class TestFluentPluginGenerator < Test::Unit::TestCase
assert { out.lines.include?("License: unknown\n") }
end
end

sub_test_case "unify plugin name" do
data("word" => ["fake", "fake"],
"underscore" => ["rewrite_tag_filter", "rewrite_tag_filter"],
"dash" => ["rewrite-tag-filter", "rewrite_tag_filter"])
test "plugin_name" do |(name, plugin_name)|
generator = FluentPluginGenerator.new(["filter", name])
capture_stdout do
generator.call
end
assert_equal(plugin_name, generator.__send__(:plugin_name))
end

data("word" => ["fake", "fluent-plugin-fake"],
"underscore" => ["rewrite_tag_filter", "fluent-plugin-rewrite-tag-filter"],
"dash" => ["rewrite-tag-filter", "fluent-plugin-rewrite-tag-filter"])
test "gem_name" do |(name, gem_name)|
generator = FluentPluginGenerator.new(["output", name])
capture_stdout do
generator.call
end
assert_equal(gem_name, generator.__send__(:gem_name))
end
end
end

0 comments on commit f8ace9c

Please sign in to comment.