notifiers 1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +3 -0
- data/.infinity_test +4 -0
- data/README.markdown +26 -0
- data/Tasks +4 -0
- data/lib/notifiers/growl.rb +54 -0
- data/lib/notifiers/knotify.rb +7 -0
- data/lib/notifiers/notify_send.rb +53 -0
- data/lib/notifiers.rb +19 -0
- data/notifiers.gemspec +22 -0
- data/spec/notifiers/growl_spec.rb +113 -0
- data/spec/notifiers/notify_send_spec.rb +117 -0
- data/spec/notifiers_spec.rb +11 -0
- data/spec/spec_helper.rb +6 -0
- metadata +107 -0
data/.gitignore
ADDED
data/.infinity_test
ADDED
data/README.markdown
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# Notifier
|
2
|
+
|
3
|
+
Use notifications in a simple and elegant way. :)
|
4
|
+
|
5
|
+
## Install
|
6
|
+
|
7
|
+
gem install notifiers
|
8
|
+
|
9
|
+
# Usage
|
10
|
+
|
11
|
+
require 'notifiers'
|
12
|
+
include Notifiers
|
13
|
+
|
14
|
+
## Growl
|
15
|
+
|
16
|
+
growl.message('Hi Growl!').image('my_image.png').priority(2).name('my_app').notify!
|
17
|
+
|
18
|
+
## Lib_Notify
|
19
|
+
|
20
|
+
notify_send.image('my_image.png').message('Hi Growl').notify!
|
21
|
+
|
22
|
+
# Why I created this gem?
|
23
|
+
|
24
|
+
## Only one explanation:
|
25
|
+
|
26
|
+
### <b>Because is fun! =)</b>
|
data/Tasks
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
class Growl
|
2
|
+
COMMAND = "growlnotify"
|
3
|
+
|
4
|
+
def image(icon)
|
5
|
+
@image = icon
|
6
|
+
self
|
7
|
+
end
|
8
|
+
|
9
|
+
def title(text)
|
10
|
+
@title = text
|
11
|
+
self
|
12
|
+
end
|
13
|
+
|
14
|
+
def message(text)
|
15
|
+
@message = text
|
16
|
+
self
|
17
|
+
end
|
18
|
+
|
19
|
+
def priority(number)
|
20
|
+
@priority = number
|
21
|
+
self
|
22
|
+
end
|
23
|
+
|
24
|
+
def host(hostname)
|
25
|
+
@host = hostname
|
26
|
+
self
|
27
|
+
end
|
28
|
+
|
29
|
+
def password(secret)
|
30
|
+
@password = secret
|
31
|
+
self
|
32
|
+
end
|
33
|
+
|
34
|
+
def auth(authentication)
|
35
|
+
@auth = authentication
|
36
|
+
self
|
37
|
+
end
|
38
|
+
|
39
|
+
def to_s
|
40
|
+
command = COMMAND.clone
|
41
|
+
command << " --title '#{@title}'" if @title
|
42
|
+
command << " --message '#{@message}'"
|
43
|
+
[:image, :priority, :host, :password, :auth].each do |option|
|
44
|
+
variable = instance_variable_get("@#{option}")
|
45
|
+
command << " --#{option} #{variable}" if variable
|
46
|
+
end
|
47
|
+
command
|
48
|
+
end
|
49
|
+
|
50
|
+
def notify!
|
51
|
+
system(to_s)
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
class NotifySend
|
2
|
+
COMMAND = 'notify-send'
|
3
|
+
|
4
|
+
def message(text)
|
5
|
+
@message = text
|
6
|
+
self
|
7
|
+
end
|
8
|
+
|
9
|
+
def title(text)
|
10
|
+
@title = text
|
11
|
+
self
|
12
|
+
end
|
13
|
+
|
14
|
+
def image(icon)
|
15
|
+
@icon = icon
|
16
|
+
self
|
17
|
+
end
|
18
|
+
|
19
|
+
def urgency(level)
|
20
|
+
@urgency = level.to_s
|
21
|
+
self
|
22
|
+
end
|
23
|
+
|
24
|
+
def expire_time(time)
|
25
|
+
@expire_time = time
|
26
|
+
self
|
27
|
+
end
|
28
|
+
|
29
|
+
def hint(values)
|
30
|
+
@hint = values.collect.each { |element| element.to_s}.join(':')
|
31
|
+
self
|
32
|
+
end
|
33
|
+
|
34
|
+
def to_s
|
35
|
+
command = COMMAND.clone
|
36
|
+
[:hint, :priority, :icon, :urgency].each do |option|
|
37
|
+
variable = instance_variable_get("@#{option}")
|
38
|
+
command << " --#{option}=#{variable}" if variable
|
39
|
+
end
|
40
|
+
command << " --expire-time=#{@expire_time}" if @expire_time
|
41
|
+
[:title, :message].each do |option|
|
42
|
+
variable = instance_variable_get("@#{option}")
|
43
|
+
command << " '#{variable}'" if variable
|
44
|
+
end
|
45
|
+
command
|
46
|
+
end
|
47
|
+
|
48
|
+
# Extract this to a module or something
|
49
|
+
def notify!
|
50
|
+
system(to_s)
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
data/lib/notifiers.rb
ADDED
data/notifiers.gemspec
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = "notifiers"
|
5
|
+
s.version = '1.0'
|
6
|
+
s.platform = Gem::Platform::RUBY
|
7
|
+
s.authors = ["Tomás D'Stefano"]
|
8
|
+
s.email = ["tomasdestefi@gmail.com"]
|
9
|
+
s.homepage = "http://rubygems.org/gems/notifiers"
|
10
|
+
s.summary = "Use notifications in a simple and elegant way."
|
11
|
+
s.description = "Use Growl and Lib-Notify in a simple and clean way."
|
12
|
+
|
13
|
+
s.required_rubygems_version = ">= 1.3.6"
|
14
|
+
s.rubyforge_project = "notifiers"
|
15
|
+
|
16
|
+
s.add_development_dependency('rspec', ">= 2.0.1")
|
17
|
+
s.add_development_dependency('bundler', ">= 1.0.0")
|
18
|
+
|
19
|
+
s.files = `git ls-files`.split("\n")
|
20
|
+
s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
|
21
|
+
s.require_path = 'lib'
|
22
|
+
end
|
@@ -0,0 +1,113 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Growl do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@growl = growl
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '#image' do
|
10
|
+
|
11
|
+
it "should keep the image" do
|
12
|
+
@growl.image('my_image.png')
|
13
|
+
@growl.instance_variable_get(:@image).should eql 'my_image.png'
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should set the image" do
|
17
|
+
@growl.image('wario.png')
|
18
|
+
@growl.instance_variable_get(:@image).should eql 'wario.png'
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '#message' do
|
24
|
+
|
25
|
+
it "should set the message option" do
|
26
|
+
@growl.message('Hello World!')
|
27
|
+
@growl.instance_variable_get(:@message).should eql 'Hello World!'
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should set the message" do
|
31
|
+
@growl.message('May the Force be with you')
|
32
|
+
@growl.instance_variable_get(:@message).should eql 'May the Force be with you'
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe '#title' do
|
37
|
+
it "should set the title" do
|
38
|
+
@growl.title('Nirvana')
|
39
|
+
@growl.instance_variable_get(:@title).should eql 'Nirvana'
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should set the title option" do
|
43
|
+
@growl.title('Pearl Jam')
|
44
|
+
@growl.instance_variable_get(:@title).should eql 'Pearl Jam'
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe '#priority' do
|
49
|
+
|
50
|
+
it "should set the priority" do
|
51
|
+
@growl.priority(0)
|
52
|
+
@growl.instance_variable_get(:@priority).should be 0
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should set the priority number" do
|
56
|
+
@growl.priority(1)
|
57
|
+
@growl.instance_variable_get(:@priority).should be 1
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe '#host' do
|
62
|
+
|
63
|
+
it "should set the hostname" do
|
64
|
+
@growl.host('localhost')
|
65
|
+
@growl.instance_variable_get(:@host).should eql 'localhost'
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should set the host" do
|
69
|
+
@growl.host('beer_duff.com')
|
70
|
+
@growl.instance_variable_get(:@host).should eql 'beer_duff.com'
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe '#password' do
|
75
|
+
|
76
|
+
it "should set the password" do
|
77
|
+
@growl.password('top_secret')
|
78
|
+
@growl.instance_variable_get(:@password).should eql 'top_secret'
|
79
|
+
end
|
80
|
+
|
81
|
+
it "should set the secret password" do
|
82
|
+
@growl.password('paradise_city')
|
83
|
+
@growl.instance_variable_get(:@password).should eql 'paradise_city'
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
describe '#auth' do
|
88
|
+
it "should set the auth option" do
|
89
|
+
@growl.auth('SHA256')
|
90
|
+
@growl.instance_variable_get(:@auth).should eql 'SHA256'
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
describe '#to_s' do
|
95
|
+
|
96
|
+
it "should construct the command" do
|
97
|
+
command = @growl.message('Hello World!').priority(1).image('mario.png').to_s # What Mario?
|
98
|
+
command.should eql "growlnotify --message 'Hello World!' --image mario.png --priority 1"
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should construct the command with host password and auth" do
|
102
|
+
command = @growl.message('Donuts').host('duff_bear').auth('SHA256').password('welcome_to_the_jungle').to_s
|
103
|
+
command.should eql "growlnotify --message 'Donuts' --host duff_bear --password welcome_to_the_jungle --auth SHA256"
|
104
|
+
end
|
105
|
+
|
106
|
+
it "should construct the command with title and message" do
|
107
|
+
command = @growl.message('Last Kiss').title('Pearl Jam').to_s
|
108
|
+
command.should eql "growlnotify --title 'Pearl Jam' --message 'Last Kiss'"
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
112
|
+
|
113
|
+
end
|
@@ -0,0 +1,117 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe NotifySend do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@notify_send = notify_send
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '#image' do
|
10
|
+
|
11
|
+
it "should set the image" do
|
12
|
+
@notify_send.image('my_image.png')
|
13
|
+
@notify_send.instance_variable_get(:@icon).should eql 'my_image.png'
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should set the icon option" do
|
17
|
+
@notify_send.image('homer_simpson.png')
|
18
|
+
@notify_send.instance_variable_get(:@icon).should eql 'homer_simpson.png'
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '#message' do
|
24
|
+
|
25
|
+
it "should set the message" do
|
26
|
+
@notify_send.message('Oh Donuts!')
|
27
|
+
@notify_send.instance_variable_get(:@message).should eql 'Oh Donuts!'
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should set the message option" do
|
31
|
+
@notify_send.message('Duff Beer')
|
32
|
+
@notify_send.instance_variable_get(:@message).should eql 'Duff Beer'
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
describe '#title' do
|
38
|
+
|
39
|
+
it "should set the title" do
|
40
|
+
@notify_send.title('W00T!!')
|
41
|
+
@notify_send.instance_variable_get(:@title).should == 'W00T!!'
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should set a title as intance variable" do
|
45
|
+
@notify_send.title('Joker Owned Batman!')
|
46
|
+
@notify_send.instance_variable_get(:@title).should == 'Joker Owned Batman!'
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
describe '#urgency' do
|
52
|
+
|
53
|
+
it "should set the urgency instance variable to low" do
|
54
|
+
@notify_send.urgency(:low)
|
55
|
+
@notify_send.instance_variable_get(:@urgency).should == 'low'
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should set he urgency instance variable to normal" do
|
59
|
+
@notify_send.urgency(:normal)
|
60
|
+
@notify_send.instance_variable_get(:@urgency).should == 'normal'
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should set the urgency to critical" do
|
64
|
+
@notify_send.urgency(:critical)
|
65
|
+
@notify_send.instance_variable_get(:@urgency).should == 'critical'
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
describe '#expire_time' do
|
71
|
+
|
72
|
+
it "should set the expire time" do
|
73
|
+
@notify_send.expire_time(1000)
|
74
|
+
@notify_send.instance_variable_get(:@expire_time).should == 1000
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should set the expire time in miliseconds" do
|
78
|
+
@notify_send.expire_time(2000)
|
79
|
+
@notify_send.instance_variable_get(:@expire_time).should == 2000
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
83
|
+
|
84
|
+
describe '#hint' do
|
85
|
+
|
86
|
+
it "should set the hint" do
|
87
|
+
@notify_send.hint([:string, :me, :yeah])
|
88
|
+
@notify_send.instance_variable_get(:@hint).should == 'string:me:yeah'
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should set the hint in int" do
|
92
|
+
@notify_send.hint([:int, :me, 1])
|
93
|
+
@notify_send.instance_variable_get(:@hint).should == 'int:me:1'
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
97
|
+
|
98
|
+
describe '#to_s' do
|
99
|
+
|
100
|
+
it "should transform in a command" do
|
101
|
+
command = @notify_send.title('Inception').message('3 levels').image('my_image.png').to_s
|
102
|
+
command.should == "notify-send --icon=my_image.png 'Inception' '3 levels'"
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should transform in a command to execute" do
|
106
|
+
command = @notify_send.title('Joker').message('Haha ha!').expire_time(1000).hint([:string, :me, :woot]).to_s
|
107
|
+
command.should == "notify-send --hint=string:me:woot --expire-time=1000 'Joker' 'Haha ha!'"
|
108
|
+
end
|
109
|
+
|
110
|
+
it "should transform in a command to execute" do
|
111
|
+
command = @notify_send.title('Batman').urgency(:critical).to_s
|
112
|
+
command.should == "notify-send --urgency=critical 'Batman'"
|
113
|
+
end
|
114
|
+
|
115
|
+
end
|
116
|
+
|
117
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,107 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: notifiers
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 1
|
7
|
+
- 0
|
8
|
+
version: "1.0"
|
9
|
+
platform: ruby
|
10
|
+
authors:
|
11
|
+
- "Tom\xC3\xA1s D'Stefano"
|
12
|
+
autorequire:
|
13
|
+
bindir: bin
|
14
|
+
cert_chain: []
|
15
|
+
|
16
|
+
date: 2010-10-28 00:00:00 -02:00
|
17
|
+
default_executable:
|
18
|
+
dependencies:
|
19
|
+
- !ruby/object:Gem::Dependency
|
20
|
+
name: rspec
|
21
|
+
prerelease: false
|
22
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
23
|
+
none: false
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 2
|
29
|
+
- 0
|
30
|
+
- 1
|
31
|
+
version: 2.0.1
|
32
|
+
type: :development
|
33
|
+
version_requirements: *id001
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: bundler
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
segments:
|
43
|
+
- 1
|
44
|
+
- 0
|
45
|
+
- 0
|
46
|
+
version: 1.0.0
|
47
|
+
type: :development
|
48
|
+
version_requirements: *id002
|
49
|
+
description: Use Growl and Lib-Notify in a simple and clean way.
|
50
|
+
email:
|
51
|
+
- tomasdestefi@gmail.com
|
52
|
+
executables: []
|
53
|
+
|
54
|
+
extensions: []
|
55
|
+
|
56
|
+
extra_rdoc_files: []
|
57
|
+
|
58
|
+
files:
|
59
|
+
- .gitignore
|
60
|
+
- .infinity_test
|
61
|
+
- README.markdown
|
62
|
+
- Tasks
|
63
|
+
- lib/notifiers.rb
|
64
|
+
- lib/notifiers/growl.rb
|
65
|
+
- lib/notifiers/knotify.rb
|
66
|
+
- lib/notifiers/notify_send.rb
|
67
|
+
- notifiers.gemspec
|
68
|
+
- spec/notifiers/growl_spec.rb
|
69
|
+
- spec/notifiers/notify_send_spec.rb
|
70
|
+
- spec/notifiers_spec.rb
|
71
|
+
- spec/spec_helper.rb
|
72
|
+
has_rdoc: true
|
73
|
+
homepage: http://rubygems.org/gems/notifiers
|
74
|
+
licenses: []
|
75
|
+
|
76
|
+
post_install_message:
|
77
|
+
rdoc_options: []
|
78
|
+
|
79
|
+
require_paths:
|
80
|
+
- lib
|
81
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
segments:
|
87
|
+
- 0
|
88
|
+
version: "0"
|
89
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
segments:
|
95
|
+
- 1
|
96
|
+
- 3
|
97
|
+
- 6
|
98
|
+
version: 1.3.6
|
99
|
+
requirements: []
|
100
|
+
|
101
|
+
rubyforge_project: notifiers
|
102
|
+
rubygems_version: 1.3.7
|
103
|
+
signing_key:
|
104
|
+
specification_version: 3
|
105
|
+
summary: Use notifications in a simple and elegant way.
|
106
|
+
test_files: []
|
107
|
+
|