fluent-plugin-growl 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/AUTHORS ADDED
@@ -0,0 +1 @@
1
+ TAKEI Yuya <takei.yuya AT gmail.com>
data/ChangeLog ADDED
@@ -0,0 +1,2 @@
1
+ Release 0.0.1 2011/09/30
2
+
data/README ADDED
@@ -0,0 +1,31 @@
1
+ Growl Notification Output Plugin
2
+
3
+ First, you must set up growl can "Listen for incoming notifications" at "Growl" in "System Preferences".
4
+
5
+ fluent.conf example:
6
+ =====
7
+ <match growl.**>
8
+ type growl
9
+
10
+ server localhost
11
+ #password fluent
12
+ appname Fluent Growl Notify
13
+
14
+ <notify>
15
+ name Notify
16
+ priority 0
17
+ sticky false
18
+ </notify>
19
+
20
+ <notify>
21
+ name StickyNotify
22
+ priority 0
23
+ sticky true
24
+ </notify>
25
+ </match>
26
+ =====
27
+
28
+ and some command line example
29
+ $ echo '{"title": "Title", "message": "Hello World!!"}' | fluent-cat growl.test
30
+ $ echo '{"title": "Sticky", "message": "It's sticky message!!", notify:"StickyNotify"}' | fluent-cat growl.test
31
+ $ echo '{}' | fluent-cat growl.test
data/Rakefile ADDED
@@ -0,0 +1,32 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'rake/clean'
4
+
5
+ begin
6
+ require 'jeweler'
7
+ Jeweler::Tasks.new {|gemspec|
8
+ gemspec.name = "fluent-plugin-growl"
9
+ gemspec.summary = "Growl output plugin for Fluent Event Collector"
10
+ gemspec.author = "TAKEI Yuya"
11
+ gemspec.email = "takei.yuya@gmail.com"
12
+ gemspec.homepage = "https://github.com/takei-yuya/fluent-plugin-growl"
13
+ gemspec.has_rdoc = false
14
+ gemspec.require_paths = ["lib"]
15
+ gemspec.add_dependency "fluent", "~> 0.9.14"
16
+ gemspec.add_dependency "ruby-growl", "~> 3.0"
17
+ gemspec.test_files = Dir["test/**/*.rb"]
18
+ gemspec.files = Dir["bin/**/*", "lib/**/*", "test/**/*.rb"] + %w[VERSION AUTHORS Rakefile]
19
+ gemspec.executables = []
20
+ }
21
+ Jeweler::GemcutterTasks.new
22
+ rescue LoadError
23
+ puts "Jeweler not available. Install it with: gem install jeweler"
24
+ end
25
+
26
+ Rake::TestTask.new(:test) {|t|
27
+ t.test_files = Dir['test/*_test.rb']
28
+ t.ruby_opts = ['-rubygems'] if defined? Gem
29
+ t.ruby_opts << '-I.'
30
+ }
31
+
32
+ task :default => [:build]
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.1
@@ -0,0 +1,61 @@
1
+ # vim: set tw=0 sw=2 sts=2 ts=2 :
2
+
3
+ module Fluent
4
+ require 'rubygems'
5
+ require 'ruby-growl'
6
+
7
+ class GrowlOutput < Output
8
+ Plugin.register_output('growl', self);
9
+
10
+ DEFAULT_SERVER = "localhost"
11
+ DEFAULT_PASSWORD = nil
12
+ DEFAULT_APPNAME = "Fluent Growl Notification"
13
+ DEFAULT_NOTIFICATION_NAME = "Fluent Defalt Notification"
14
+
15
+ def initialize
16
+ @growl
17
+ end
18
+
19
+ def configure(conf)
20
+ server = conf['server'] || DEFAULT_SERVER
21
+ password = conf['password'] || DEFAULT_PASSWORD
22
+ appname = conf['appname'] || DEFAULT_APPNAME
23
+
24
+ @notifies = {}
25
+ conf.elements.select{|e|
26
+ e.name = "notify"
27
+ }.each{|e|
28
+ name = e['name']
29
+ unless name
30
+ raise ConfigError, "Missing 'name' parameter on <notify> directive"
31
+ end
32
+ priority = e['priority'].to_i
33
+ sticky = (e.has_key? "sticky") && (e["sticky"].match /y(es)?|on|true/i ) && true
34
+ @notifies[name] = {:priority => priority, :sticky => sticky}
35
+ }
36
+ # if @notifies.empty?
37
+ # raise ConfigError, "At least one <notify> directive is needed"
38
+ # end
39
+ @notifies[DEFAULT_NOTIFICATION_NAME] = {:priority => 0, :sticky => false}
40
+
41
+ @growl = Growl.new server, appname, @notifies.keys, nil, password
42
+ end
43
+
44
+ def emit(tag, es, chain)
45
+ es.each{|e|
46
+ title = e.record["title"] || "Fluent Notification"
47
+ message = e.record["message"] || "#{e.record.to_json} at #{Time.at(e.time).localtime}"
48
+ notifyname = e.record["notify"] || DEFAULT_NOTIFICATION_NAME
49
+ notify = @notifies[notifyname]
50
+ unless notify
51
+ # TODO: ConfigError?
52
+ raise ConfigError, "Unknown notify name '#{notifyname}'"
53
+ end
54
+
55
+ @growl.notify notifyname, title, message, notify[:priority], notify[:sticky]
56
+ }
57
+ chain.next
58
+ end
59
+
60
+ end
61
+ end
metadata ADDED
@@ -0,0 +1,98 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fluent-plugin-growl
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 1
9
+ version: 0.0.1
10
+ platform: ruby
11
+ authors:
12
+ - TAKEI Yuya
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2011-09-30 00:00:00 +09:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: fluent
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ - 9
31
+ - 14
32
+ version: 0.9.14
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: ruby-growl
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ segments:
44
+ - 3
45
+ - 0
46
+ version: "3.0"
47
+ type: :runtime
48
+ version_requirements: *id002
49
+ description:
50
+ email: takei.yuya@gmail.com
51
+ executables: []
52
+
53
+ extensions: []
54
+
55
+ extra_rdoc_files:
56
+ - ChangeLog
57
+ - README
58
+ files:
59
+ - AUTHORS
60
+ - Rakefile
61
+ - VERSION
62
+ - lib/fluent/plugin/out_growl.rb
63
+ - ChangeLog
64
+ - README
65
+ has_rdoc: true
66
+ homepage: https://github.com/takei-yuya/fluent-plugin-growl
67
+ licenses: []
68
+
69
+ post_install_message:
70
+ rdoc_options: []
71
+
72
+ require_paths:
73
+ - lib
74
+ required_ruby_version: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ segments:
80
+ - 0
81
+ version: "0"
82
+ required_rubygems_version: !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ segments:
88
+ - 0
89
+ version: "0"
90
+ requirements: []
91
+
92
+ rubyforge_project:
93
+ rubygems_version: 1.3.7
94
+ signing_key:
95
+ specification_version: 3
96
+ summary: Growl output plugin for Fluent Event Collector
97
+ test_files: []
98
+