fluent-format 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 969f4553fc32823ac426e1f1aa7f8acd1b99c94f
4
- data.tar.gz: c3a78502cd9a2592db22a8db7edc8c414c9457ce
3
+ metadata.gz: 885cab275f6fb1fd2c3985502fe7c4af090e04f3
4
+ data.tar.gz: 7bed0b502af72155bec463042b4c76897478cc93
5
5
  SHA512:
6
- metadata.gz: 18bb1683805a0e7dfa9297c44ca66949b279844eb9c0bee0fd31c30808add30d8af31f574c5b18c45a4aaade41f40791536360c15faf07a252f9fc72beaa62cb
7
- data.tar.gz: 5bd3024ab31d88d630100a356fd71272a2c4cab4f22b2d91712b97d71ea5488b64d27c302e32e3ae5b7bfc64bee4457cf28060553847b7a5d0900ecbe81a652f
6
+ metadata.gz: 97d236a5c5afa4a85d568856f254f35c991e0def0721651e776ed543c8492ea9e84921dc03ce006ff10556d5c169311e7e6ce49c3354743960dda61cd07e975d
7
+ data.tar.gz: abf9334f02803e4a628711c6fb639f2d0470720c519be167e87c830a908f806ed8b5feefbbae84d2ad042bdbd553552e033c09f4faa0fc09db72880f545d49c8
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## 0.2.0 (2014/02/05)
2
+
3
+ Enhancement:
4
+
5
+ * Add `check` command
6
+
1
7
  ## 0.1.1 (2013/12/04)
2
8
 
3
9
  First version
10
+
data/README.md CHANGED
@@ -16,9 +16,27 @@ Or install it yourself as:
16
16
 
17
17
  $ gem install fluent-format
18
18
 
19
- Run as
19
+ ## Command Line Interface
20
20
 
21
- $ fluent-format -c fluentd.conf
21
+ Format fluent.conf
22
+
23
+ $ fluent-format -c fluent.conf
24
+
25
+ Check fluent.conf
26
+
27
+ $ fluent-format check -c fluent.conf -p plugin_dir
28
+ $ echo $? # 0: success 1: failure
29
+
30
+ ## As a library
31
+
32
+ ```ruby
33
+ require 'fluent-format'
34
+
35
+ File.open(path) {|config|
36
+ puts Fluent::Format.format(config) # formatted string
37
+ puts Fluent::Format.check(config, plugin_dir) #=> true: success false: failure
38
+ }
39
+ ```
22
40
 
23
41
  ## ToDo
24
42
 
@@ -0,0 +1,3 @@
1
+ <source>
2
+ type forward
3
+ </match>
@@ -0,0 +1,3 @@
1
+ <source>
2
+ type foobar
3
+ </source>
@@ -0,0 +1,68 @@
1
+ require 'fluent/supervisor'
2
+
3
+ module Fluent
4
+ class Format
5
+ class Check
6
+ # Initialize
7
+ #
8
+ # @param [IO|String] config_dev
9
+ # @param [String] plugin_dir the plugin directory
10
+ def initialize(config_dev, plugin_dir = nil)
11
+ @opts = {
12
+ :config_path => config_dev, # Fluent::DEFAULT_CONFIG_PATH,
13
+ :plugin_dirs => [Fluent::DEFAULT_PLUGIN_DIR],
14
+ :log_level => Fluent::Log::LEVEL_INFO,
15
+ :log_path => nil,
16
+ :daemonize => false,
17
+ :libs => [],
18
+ :setup_path => nil,
19
+ :chuser => nil,
20
+ :chgroup => nil,
21
+ :suppress_interval => 0,
22
+ :suppress_repeated_stacktrace => false,
23
+ }
24
+ @opts[:plugin_dirs] << plugin_dir if plugin_dir
25
+ end
26
+
27
+ # Check config file
28
+ #
29
+ # @return [Boolean]
30
+ def run
31
+ Fluent::Supervisor.new(@opts).ext_dry_run
32
+ end
33
+ end
34
+ end
35
+ end
36
+
37
+ module Fluent
38
+ class Supervisor
39
+ # Extended to accept IO object
40
+ def ext_dry_run
41
+ ext_read_config
42
+ change_privilege
43
+ init_engine
44
+ install_main_process_signal_handlers
45
+ run_configure
46
+ true
47
+ rescue => e
48
+ false
49
+ end
50
+
51
+ # Extended to accept IO object
52
+ def ext_read_config
53
+ if @config_path.respond_to?(:read) # IO object
54
+ @config_data = @config_path.read
55
+ else
56
+ $log.info "reading config file", :path=>@config_path
57
+ @config_fname = File.basename(@config_path)
58
+ @config_basedir = File.dirname(@config_path)
59
+ @config_data = File.read(@config_path)
60
+ end
61
+ if @inline_config == '-'
62
+ @config_data << "\n" << STDIN.read
63
+ elsif @inline_config
64
+ @config_data << "\n" << @inline_config.gsub("\\n","\n")
65
+ end
66
+ end
67
+ end
68
+ end
@@ -4,13 +4,24 @@ require_relative '../../fluent-format'
4
4
  module Fluent
5
5
  class Format
6
6
  class CLI < Thor
7
- default_command :start
8
- desc "start", "Start fluent-format"
7
+ default_command :format
8
+ desc "format", "Format fluent.conf"
9
9
  option :config, :aliases => ["-c"], :type => :string, :default => 'fluent.conf', :desc => 'Fluentd configuration file'
10
- def start
10
+ def format
11
11
  config = @options[:config]
12
- $log = Fluent::Log.new(STDERR, Fluent::Log::LEVEL_WARN)
13
- puts Fluent::Format.format_config(config)
12
+ puts Fluent::Format.format(config)
13
+ rescue => e
14
+ $log.error "#{e.class}: #{e}"
15
+ exit 1
16
+ end
17
+
18
+ desc "check", "Check fluent.conf"
19
+ option :config, :aliases => ["-c"], :type => :string, :default => 'fluent.conf', :desc => 'Fluentd configuration file'
20
+ option :plugin, :aliases => ["-p"], :type => :string, :desc => 'Fluentd plugin directory'
21
+ def check
22
+ config = @options[:config]
23
+ plugin = @options[:plugin]
24
+ Fluent::Format.check(config, plugin) || exit(1)
14
25
  rescue => e
15
26
  $log.error "#{e.class}: #{e}"
16
27
  exit 1
@@ -0,0 +1,47 @@
1
+ module Fluent
2
+ class Format
3
+ class Format
4
+ # Initialize
5
+ #
6
+ # @param [IO|String] config_dev
7
+ def initialize(config_dev)
8
+ @config_dev = config_dev
9
+ end
10
+
11
+ # Format config
12
+ #
13
+ # @return [String] the formatted config
14
+ def run
15
+ config = read_config(@config_dev)
16
+ indent_config(config)
17
+ end
18
+
19
+ private
20
+
21
+ # partial copy from lib/fluent/config.rb
22
+ def read_config(dev)
23
+ if dev.respond_to?(:read) # IO object
24
+ parse_config(dev, '-', '-')
25
+ else
26
+ File.open(dev) {|io| parse_config(io, File.basename(dev), File.dirname(dev)) }
27
+ end
28
+ end
29
+
30
+ # partial copy from lib/fluent/config.rb
31
+ def parse_config(io, fname, basepath=Dir.pwd)
32
+ if fname =~ /\.rb$/
33
+ Fluent::Config::DSL::Parser.parse(io, File.join(basepath, fname))
34
+ else
35
+ Fluent::Config.parse(io, fname, basepath)
36
+ end
37
+ end
38
+
39
+ # hmm, ugly workaround
40
+ def indent_config(conf)
41
+ lines = conf.to_s.split("\n")[1..-2] # remove <ROOT> and </ROOT>
42
+ lines = lines.map {|line| line[2..-1] } # remove heading 2 white spaces
43
+ lines.join("\n")
44
+ end
45
+ end
46
+ end
47
+ end
@@ -1,5 +1,5 @@
1
1
  module Fluent
2
2
  class Format
3
- VERSION = "0.1.1"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
data/lib/fluent/format.rb CHANGED
@@ -1,42 +1,22 @@
1
- require 'fluent/load'
1
+ $log = Fluent::Log.new(STDERR, Fluent::Log::LEVEL_WARN)
2
2
 
3
3
  module Fluent
4
4
  class Format
5
- class << self
6
- def format_config(dev)
7
- config =
8
- if dev.respond_to?(:read) # IO object
9
- parse_config(dev, '-', '-')
10
- else
11
- read_config(dev)
12
- end
13
- indent_config(config)
14
- end
15
-
16
- private
17
-
18
- # partial copy from lib/fluent/config.rb
19
- def read_config(path)
20
- File.open(path) {|io|
21
- parse_config(io, File.basename(path), File.dirname(path))
22
- }
23
- end
24
-
25
- # partial copy from lib/fluent/config.rb
26
- def parse_config(io, fname, basepath=Dir.pwd)
27
- if fname =~ /\.rb$/
28
- Fluent::Config::DSL::Parser.parse(io, File.join(basepath, fname))
29
- else
30
- Fluent::Config.parse(io, fname, basepath)
31
- end
32
- end
5
+ # Format config file
6
+ #
7
+ # @param [IO|String] config_dev
8
+ # @return [String] the formatted config
9
+ def self.format(config_dev)
10
+ Fluent::Format::Format.new(config_dev).run
11
+ end
33
12
 
34
- # hmm, ugly workaround
35
- def indent_config(conf)
36
- lines = conf.to_s.split("\n")[1..-2] # remove <ROOT> and </ROOT>
37
- lines = lines.map {|line| line[2..-1] } # remove heading 2 white spaces
38
- lines.join("\n")
39
- end
13
+ # Check config file
14
+ #
15
+ # @param [IO|String] config_dev
16
+ # @param [String] plugin_dir the plugin directory
17
+ # @return [Boolean]
18
+ def self.check(config_dev, plugin_dir = nil)
19
+ Fluent::Format::Check.new(config_dev, plugin_dir).run
40
20
  end
41
21
  end
42
22
  end
data/lib/fluent-format.rb CHANGED
@@ -1,2 +1,5 @@
1
1
  require_relative 'fluent/format/version'
2
+ require 'fluent/load'
3
+ require_relative 'fluent/format/format'
4
+ require_relative 'fluent/format/check'
2
5
  require_relative 'fluent/format'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-format
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Naotoshi Seo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-04 00:00:00.000000000 Z
11
+ date: 2014-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -111,11 +111,15 @@ files:
111
111
  - README.md
112
112
  - Rakefile
113
113
  - bin/fluent-format
114
+ - example/syntax_error.conf
115
+ - example/unknown_plugin.conf
114
116
  - fluent-format.gemspec
115
117
  - fluent.conf
116
118
  - lib/fluent-format.rb
117
119
  - lib/fluent/format.rb
120
+ - lib/fluent/format/check.rb
118
121
  - lib/fluent/format/cli.rb
122
+ - lib/fluent/format/format.rb
119
123
  - lib/fluent/format/version.rb
120
124
  homepage: https://github.com/sonots/fluent-format
121
125
  licenses: