notifiers 1.2.0 → 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/.travis.yml +10 -0
- data/History.markdown +8 -0
- data/README.markdown +1 -1
- data/TODO.markdown +2 -1
- data/lib/notifiers.rb +7 -2
- data/lib/notifiers/base.rb +57 -0
- data/lib/notifiers/growl.rb +38 -46
- data/lib/notifiers/knotify.rb +12 -24
- data/lib/notifiers/notifier_not_found.rb +4 -0
- data/lib/notifiers/notify_send.rb +27 -46
- data/notifiers.gemspec +2 -2
- data/spec/notifiers/base_spec.rb +64 -0
- data/spec/notifiers/growl_spec.rb +82 -77
- data/spec/notifiers/knotify_spec.rb +29 -31
- data/spec/notifiers/notify_send_spec.rb +77 -89
- data/spec/notifiers_spec.rb +21 -5
- data/spec/spec_helper.rb +17 -1
- metadata +8 -5
- data/Gemfile.lock +0 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e3ab9d583cfca62be7ae6a684c9ad504c313c40c
|
4
|
+
data.tar.gz: b9c211cbeae8b427040d14d6c387f21cc3a37046
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d2f7b8fdaf4b9f7d30ad573451991800f9f043c0cfbfe902c5fef39bbbb199b857f91c1e4e9eafdd52258143e7e19a80aaa8e0c96b5d4f3180c1c053ef17e2f6
|
7
|
+
data.tar.gz: a2d9bfd767396565d3e57a7d54d2f6604ce68fec29ac03d72b2829ad46533defa54b07fe7cb51f05f87482624cc5916fb76d801035eff8f8b5690c5a10473a2e
|
data/.gitignore
CHANGED
data/.travis.yml
ADDED
data/History.markdown
CHANGED
data/README.markdown
CHANGED
data/TODO.markdown
CHANGED
@@ -1 +1,2 @@
|
|
1
|
-
|
1
|
+
|
2
|
+
* Auto Discover the OS and notify as expected.
|
data/lib/notifiers.rb
CHANGED
@@ -1,9 +1,8 @@
|
|
1
|
-
[ :growl, :knotify, :notify_send].each do |notifier|
|
1
|
+
[:base, :growl, :knotify, :notify_send, :notifier_not_found].each do |notifier|
|
2
2
|
require "notifiers/#{notifier}"
|
3
3
|
end
|
4
4
|
|
5
5
|
module Notifiers
|
6
|
-
|
7
6
|
def growl
|
8
7
|
Growl.new
|
9
8
|
end
|
@@ -16,4 +15,10 @@ module Notifiers
|
|
16
15
|
NotifySend.new
|
17
16
|
end
|
18
17
|
alias :lib_notify :notify_send
|
18
|
+
|
19
|
+
def auto_discover
|
20
|
+
notifier = Notifiers::Base.subclasses.find { |notifier| notifier.installed? } or raise NotifierNotFound
|
21
|
+
|
22
|
+
notifier.new
|
23
|
+
end
|
19
24
|
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
module Notifiers
|
2
|
+
class Base
|
3
|
+
def self.inherited(subclass)
|
4
|
+
@subclasses ||= []
|
5
|
+
@subclasses.push(subclass)
|
6
|
+
@subclasses
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.subclasses
|
10
|
+
@subclasses
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.installed?
|
14
|
+
false
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.darwin?
|
18
|
+
platform?(/darwin/)
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.platform?(name)
|
22
|
+
RbConfig::CONFIG['host_os'] =~ name or RUBY_PLATFORM =~ name
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.command?(command)
|
26
|
+
`which #{command}` and $?.zero?
|
27
|
+
end
|
28
|
+
|
29
|
+
def notify
|
30
|
+
notification = system(to_s)
|
31
|
+
|
32
|
+
puts install_instructions unless notification or install_instructions.empty?
|
33
|
+
|
34
|
+
notification
|
35
|
+
end
|
36
|
+
alias :notify! :notify
|
37
|
+
|
38
|
+
def message(text)
|
39
|
+
@message = text
|
40
|
+
self
|
41
|
+
end
|
42
|
+
|
43
|
+
def title(text)
|
44
|
+
@title = text
|
45
|
+
self
|
46
|
+
end
|
47
|
+
|
48
|
+
def image(icon)
|
49
|
+
@icon = icon
|
50
|
+
self
|
51
|
+
end
|
52
|
+
|
53
|
+
def install_instructions
|
54
|
+
''
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
data/lib/notifiers/growl.rb
CHANGED
@@ -1,55 +1,47 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
def image(icon)
|
7
|
-
@image = icon
|
8
|
-
self
|
9
|
-
end
|
10
|
-
|
11
|
-
def title(text)
|
12
|
-
@title = text
|
13
|
-
self
|
14
|
-
end
|
1
|
+
module Notifiers
|
2
|
+
class Growl < Notifiers::Base
|
3
|
+
def self.installed?
|
4
|
+
darwin? and command?('growlnotify')
|
5
|
+
end
|
15
6
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
7
|
+
def image(icon)
|
8
|
+
@image = icon
|
9
|
+
self
|
10
|
+
end
|
20
11
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
12
|
+
def priority(number)
|
13
|
+
@priority = number
|
14
|
+
self
|
15
|
+
end
|
25
16
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
17
|
+
def host(hostname)
|
18
|
+
@host = hostname
|
19
|
+
self
|
20
|
+
end
|
30
21
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
22
|
+
def password(secret)
|
23
|
+
@password = secret
|
24
|
+
self
|
25
|
+
end
|
35
26
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
27
|
+
def auth(authentication)
|
28
|
+
@auth = authentication
|
29
|
+
self
|
30
|
+
end
|
40
31
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
32
|
+
def to_s
|
33
|
+
command = 'growlnotify'
|
34
|
+
command << " --title '#{@title}'" if @title
|
35
|
+
command << " --message '#{@message}'"
|
36
|
+
[:image, :priority, :host, :password, :auth].each do |option|
|
37
|
+
variable = instance_variable_get("@#{option}")
|
38
|
+
command << " --#{option} #{variable}" if variable
|
39
|
+
end
|
40
|
+
command
|
41
|
+
end
|
51
42
|
|
52
|
-
|
53
|
-
|
43
|
+
def install_instructions
|
44
|
+
'The Growl is not installed. You can find more details here: http://growl.info/downloads'
|
45
|
+
end
|
54
46
|
end
|
55
47
|
end
|
data/lib/notifiers/knotify.rb
CHANGED
@@ -1,26 +1,14 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
def to_s
|
15
|
-
command = "#{COMMAND}"
|
16
|
-
command << " '#{@title}'" if @title
|
17
|
-
command << " '#{@message}'" if @message
|
18
|
-
command << " '' ''"
|
19
|
-
command << " 12 1"
|
20
|
-
command
|
21
|
-
end
|
22
|
-
|
23
|
-
def notify!
|
24
|
-
system(to_s)
|
1
|
+
module Notifiers
|
2
|
+
class Knotify < Notifiers::Base
|
3
|
+
COMMAND = "dcop knotify default notify eventname"
|
4
|
+
|
5
|
+
def to_s
|
6
|
+
command = "#{COMMAND}"
|
7
|
+
command << " '#{@title}'" if @title
|
8
|
+
command << " '#{@message}'" if @message
|
9
|
+
command << " '' ''"
|
10
|
+
command << " 12 1"
|
11
|
+
command
|
12
|
+
end
|
25
13
|
end
|
26
14
|
end
|
@@ -1,53 +1,34 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
module Notifiers
|
2
|
+
class NotifySend < Notifiers::Base
|
3
|
+
COMMAND = 'notify-send'
|
3
4
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
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
|
5
|
+
def urgency(level)
|
6
|
+
@urgency = level.to_s
|
7
|
+
self
|
8
|
+
end
|
33
9
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
variable = instance_variable_get("@#{option}")
|
38
|
-
command << " --#{option}=#{variable}" if variable
|
10
|
+
def expire_time(time)
|
11
|
+
@expire_time = time
|
12
|
+
self
|
39
13
|
end
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
14
|
+
|
15
|
+
def hint(values)
|
16
|
+
@hint = values.collect.each { |element| element.to_s}.join(':')
|
17
|
+
self
|
44
18
|
end
|
45
|
-
command
|
46
|
-
end
|
47
19
|
|
48
|
-
|
49
|
-
|
50
|
-
|
20
|
+
def to_s
|
21
|
+
command = COMMAND.clone
|
22
|
+
[:hint, :priority, :icon, :urgency].each do |option|
|
23
|
+
variable = instance_variable_get("@#{option}")
|
24
|
+
command << " --#{option}=#{variable}" if variable
|
25
|
+
end
|
26
|
+
command << " --expire-time=#{@expire_time}" if @expire_time
|
27
|
+
[:title, :message].each do |option|
|
28
|
+
variable = instance_variable_get("@#{option}")
|
29
|
+
command << " '#{variable}'" if variable
|
30
|
+
end
|
31
|
+
command
|
32
|
+
end
|
51
33
|
end
|
52
|
-
|
53
34
|
end
|
data/notifiers.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "notifiers"
|
5
|
-
s.version = '1.2.
|
5
|
+
s.version = '1.2.1'
|
6
6
|
s.platform = Gem::Platform::RUBY
|
7
7
|
s.authors = ["Tomás D'Stefano"]
|
8
8
|
s.email = ["tomasdestefi@gmail.com"]
|
@@ -13,7 +13,7 @@ Gem::Specification.new do |s|
|
|
13
13
|
s.required_rubygems_version = ">= 1.3.6"
|
14
14
|
s.rubyforge_project = "notifiers"
|
15
15
|
|
16
|
-
s.add_development_dependency('rspec', "~> 2.
|
16
|
+
s.add_development_dependency('rspec', "~> 2.14")
|
17
17
|
s.add_development_dependency('bundler', ">= 1.0.0")
|
18
18
|
|
19
19
|
s.files = `git ls-files`.split("\n")
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Notifiers
|
4
|
+
describe Base do
|
5
|
+
subject(:base) do
|
6
|
+
Base.new
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '.subclasses' do
|
10
|
+
it { expect(Base.subclasses).to include(Growl, Knotify, NotifySend) }
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '.installed?' do
|
14
|
+
it 'returns false as default' do
|
15
|
+
expect(Base).to_not be_installed
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe '.darwin?' do
|
20
|
+
context 'when the ruby platform is darwin' do
|
21
|
+
it 'returns true' do
|
22
|
+
expect(Base).to receive(:platform?).with(/darwin/).and_return(true)
|
23
|
+
expect(Base.darwin?).to be true
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'when the ruby platform is not darwin' do
|
28
|
+
it 'returns false' do
|
29
|
+
expect(Base).to receive(:platform?).with(/darwin/).and_return(false)
|
30
|
+
expect(Base.darwin?).to be false
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe '#notify' do
|
36
|
+
before do
|
37
|
+
expect(base).to receive(:to_s).and_return('example')
|
38
|
+
end
|
39
|
+
|
40
|
+
context 'when the notify command runs without error' do
|
41
|
+
it 'calls system on #to_s method' do
|
42
|
+
expect(base).to receive(:system).with('example').and_return(true)
|
43
|
+
expect(base.notify).to be true
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
context 'when the notify command runs with error' do
|
48
|
+
it 'puts a install instruction if the system command returns false' do
|
49
|
+
expect(base).to receive(:system).with('example').and_return(false)
|
50
|
+
expect(base).to receive(:install_instructions).at_least(:once).and_return('Install')
|
51
|
+
expect(base).to receive(:puts).with('Install')
|
52
|
+
expect(base.notify).to be false
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'do nothing when the instance does not have install instructions' do
|
56
|
+
expect(base).to receive(:system).with('example').and_return(false)
|
57
|
+
expect(base).to receive(:install_instructions).exactly(:once).and_return('')
|
58
|
+
expect(base).to_not receive(:puts)
|
59
|
+
expect(base.notify).to be false
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -1,108 +1,113 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
end
|
7
|
-
|
8
|
-
describe '#image' do
|
9
|
-
it "should keep the image" do
|
10
|
-
@growl.image('my_image.png')
|
11
|
-
@growl.instance_variable_get(:@image).should eql 'my_image.png'
|
12
|
-
end
|
3
|
+
module Notifiers
|
4
|
+
describe Growl do
|
5
|
+
it_should_behave_like 'a notifier'
|
13
6
|
|
14
|
-
|
15
|
-
@growl
|
16
|
-
@growl.instance_variable_get(:@image).should eql 'wario.png'
|
7
|
+
before do
|
8
|
+
@growl = growl
|
17
9
|
end
|
18
10
|
|
19
|
-
|
20
|
-
|
21
|
-
|
11
|
+
describe '#image' do
|
12
|
+
it "should keep the image" do
|
13
|
+
@growl.image('my_image.png')
|
14
|
+
expect(@growl.instance_variable_get(:@image)).to eql 'my_image.png'
|
15
|
+
end
|
22
16
|
|
23
|
-
|
24
|
-
|
25
|
-
|
17
|
+
it "should set the image" do
|
18
|
+
@growl.image('wario.png')
|
19
|
+
expect(@growl.instance_variable_get(:@image)).to eql 'wario.png'
|
20
|
+
end
|
26
21
|
end
|
27
22
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
23
|
+
describe '#message' do
|
24
|
+
it "should set the message option" do
|
25
|
+
@growl.message('Hello World!')
|
26
|
+
expect(@growl.instance_variable_get(:@message)).to eql 'Hello World!'
|
27
|
+
end
|
33
28
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
29
|
+
it "should set the message" do
|
30
|
+
@growl.message('May the Force be with you')
|
31
|
+
expect(@growl.instance_variable_get(:@message)).to eql 'May the Force be with you'
|
32
|
+
end
|
38
33
|
end
|
39
34
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
describe '#priority' do
|
35
|
+
describe '#title' do
|
36
|
+
it "should set the title" do
|
37
|
+
@growl.title('Nirvana')
|
38
|
+
expect(@growl.instance_variable_get(:@title)).to eql 'Nirvana'
|
39
|
+
end
|
47
40
|
|
48
|
-
|
49
|
-
|
50
|
-
|
41
|
+
it "should set the title option" do
|
42
|
+
@growl.title('Pearl Jam')
|
43
|
+
expect(@growl.instance_variable_get(:@title)).to eql 'Pearl Jam'
|
44
|
+
end
|
51
45
|
end
|
52
46
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
describe '#host' do
|
47
|
+
describe '#priority' do
|
48
|
+
it "should set the priority" do
|
49
|
+
@growl.priority(0)
|
50
|
+
expect(@growl.instance_variable_get(:@priority)).to be 0
|
51
|
+
end
|
60
52
|
|
61
|
-
|
62
|
-
|
63
|
-
|
53
|
+
it "should set the priority number" do
|
54
|
+
@growl.priority(1)
|
55
|
+
expect(@growl.instance_variable_get(:@priority)).to be 1
|
56
|
+
end
|
64
57
|
end
|
65
58
|
|
66
|
-
|
67
|
-
|
68
|
-
|
59
|
+
describe '#host' do
|
60
|
+
it "should set the hostname" do
|
61
|
+
@growl.host('localhost')
|
62
|
+
expect(@growl.instance_variable_get(:@host)).to eql 'localhost'
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should set the host" do
|
66
|
+
@growl.host('beer_duff.com')
|
67
|
+
expect(@growl.instance_variable_get(:@host)).to eql 'beer_duff.com'
|
68
|
+
end
|
69
69
|
end
|
70
|
-
end
|
71
70
|
|
72
|
-
|
71
|
+
describe '#password' do
|
72
|
+
it "should set the password" do
|
73
|
+
@growl.password('top_secret')
|
74
|
+
expect(@growl.instance_variable_get(:@password)).to eql 'top_secret'
|
75
|
+
end
|
73
76
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
+
it "should set the secret password" do
|
78
|
+
@growl.password('paradise_city')
|
79
|
+
expect(@growl.instance_variable_get(:@password)).to eql 'paradise_city'
|
80
|
+
end
|
77
81
|
end
|
78
82
|
|
79
|
-
|
80
|
-
|
81
|
-
|
83
|
+
describe '#auth' do
|
84
|
+
it "should set the auth option" do
|
85
|
+
@growl.auth('SHA256')
|
86
|
+
expect(@growl.instance_variable_get(:@auth)).to eql 'SHA256'
|
87
|
+
end
|
82
88
|
end
|
83
|
-
end
|
84
89
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
end
|
90
|
+
describe '#to_s' do
|
91
|
+
it "should construct the command" do
|
92
|
+
command = @growl.message('Hello World!').priority(1).image('mario.png').to_s
|
93
|
+
expect(command).to eql "growlnotify --message 'Hello World!' --image mario.png --priority 1"
|
94
|
+
end
|
91
95
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
end
|
96
|
+
it "should construct the command with host password and auth" do
|
97
|
+
command = @growl.message('Donuts').host('duff_bear').auth('SHA256').password('welcome_to_the_jungle').to_s
|
98
|
+
expect(command).to eql "growlnotify --message 'Donuts' --host duff_bear --password welcome_to_the_jungle --auth SHA256"
|
99
|
+
end
|
97
100
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
+
it "should construct the command with title and message" do
|
102
|
+
command = @growl.message('Last Kiss').title('Pearl Jam').to_s
|
103
|
+
expect(command).to eql "growlnotify --title 'Pearl Jam' --message 'Last Kiss'"
|
104
|
+
end
|
101
105
|
end
|
102
106
|
|
103
|
-
|
104
|
-
|
105
|
-
|
107
|
+
describe '#install_instructions' do
|
108
|
+
it 'returns an more concise message' do
|
109
|
+
expect(@growl.install_instructions).to eq 'The Growl is not installed. You can find more details here: http://growl.info/downloads'
|
110
|
+
end
|
106
111
|
end
|
107
112
|
end
|
108
113
|
end
|
@@ -1,44 +1,42 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
|
3
|
+
module Notifiers
|
4
|
+
describe Knotify do
|
5
|
+
it_should_behave_like 'a notifier'
|
4
6
|
|
5
|
-
|
6
|
-
|
7
|
-
end
|
8
|
-
|
9
|
-
describe '#message' do
|
10
|
-
it "should set the message instance variable" do
|
11
|
-
@knotify.message('Bulls on Parade')
|
12
|
-
@knotify.instance_variable_get(:@message).should == 'Bulls on Parade'
|
13
|
-
end
|
14
|
-
|
15
|
-
it "should be possible to set the message instance variable" do
|
16
|
-
@knotify.message('Wake Up')
|
17
|
-
@knotify.instance_variable_get(:@message).should == 'Wake Up'
|
7
|
+
before do
|
8
|
+
@knotify = Knotify.new
|
18
9
|
end
|
19
|
-
end
|
20
10
|
|
21
|
-
|
11
|
+
describe '#message' do
|
12
|
+
it "should set the message instance variable" do
|
13
|
+
@knotify.message('Bulls on Parade')
|
14
|
+
expect(@knotify.instance_variable_get(:@message)).to eql 'Bulls on Parade'
|
15
|
+
end
|
22
16
|
|
23
|
-
|
24
|
-
|
25
|
-
|
17
|
+
it "should be possible to set the message instance variable" do
|
18
|
+
@knotify.message('Wake Up')
|
19
|
+
expect(@knotify.instance_variable_get(:@message)).to eql 'Wake Up'
|
20
|
+
end
|
26
21
|
end
|
27
22
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
23
|
+
describe '#title' do
|
24
|
+
it "should set the title" do
|
25
|
+
@knotify.title('Rage Against the Machine')
|
26
|
+
expect(@knotify.instance_variable_get(:@title)).to eql 'Rage Against the Machine'
|
27
|
+
end
|
32
28
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
it "should return the entire command" do
|
38
|
-
command = @knotify.title('Ruby').message('For the Win').to_s
|
39
|
-
command.should == "dcop knotify default notify eventname 'Ruby' 'For the Win' '' '' 12 1"
|
29
|
+
it "should be possible to set the title" do
|
30
|
+
@knotify.title('AudioSlave')
|
31
|
+
expect(@knotify.instance_variable_get(:@title)).to eql 'AudioSlave'
|
32
|
+
end
|
40
33
|
end
|
41
34
|
|
35
|
+
describe '#to_s' do
|
36
|
+
it "should return the entire command" do
|
37
|
+
command = @knotify.title('Ruby').message('For the Win').to_s
|
38
|
+
expect(command).to eql "dcop knotify default notify eventname 'Ruby' 'For the Win' '' '' 12 1"
|
39
|
+
end
|
40
|
+
end
|
42
41
|
end
|
43
|
-
|
44
42
|
end
|
@@ -1,117 +1,105 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
|
3
|
+
module Notifiers
|
4
|
+
describe NotifySend do
|
5
|
+
it_should_behave_like 'a notifier'
|
4
6
|
|
5
|
-
|
6
|
-
|
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'
|
7
|
+
before do
|
8
|
+
@notify_send = notify_send
|
33
9
|
end
|
34
10
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
@notify_send.title('W00T!!')
|
41
|
-
@notify_send.instance_variable_get(:@title).should == 'W00T!!'
|
42
|
-
end
|
11
|
+
describe '#image' do
|
12
|
+
it "should set the image" do
|
13
|
+
@notify_send.image('my_image.png')
|
14
|
+
expect(@notify_send.instance_variable_get(:@icon)).to eql 'my_image.png'
|
15
|
+
end
|
43
16
|
|
44
|
-
|
45
|
-
|
46
|
-
|
17
|
+
it "should set the icon option" do
|
18
|
+
@notify_send.image('homer_simpson.png')
|
19
|
+
expect(@notify_send.instance_variable_get(:@icon)).to eql 'homer_simpson.png'
|
20
|
+
end
|
47
21
|
end
|
48
22
|
|
49
|
-
|
50
|
-
|
51
|
-
|
23
|
+
describe '#message' do
|
24
|
+
it "should set the message" do
|
25
|
+
@notify_send.message('Oh Donuts!')
|
26
|
+
expect(@notify_send.instance_variable_get(:@message)).to eql 'Oh Donuts!'
|
27
|
+
end
|
52
28
|
|
53
|
-
|
54
|
-
|
55
|
-
|
29
|
+
it "should set the message option" do
|
30
|
+
@notify_send.message('Duff Beer')
|
31
|
+
expect(@notify_send.instance_variable_get(:@message)).to eql 'Duff Beer'
|
32
|
+
end
|
56
33
|
end
|
57
34
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
35
|
+
describe '#title' do
|
36
|
+
it "should set the title" do
|
37
|
+
@notify_send.title('W00T!!')
|
38
|
+
expect(@notify_send.instance_variable_get(:@title)).to eql 'W00T!!'
|
39
|
+
end
|
62
40
|
|
63
|
-
|
64
|
-
|
65
|
-
|
41
|
+
it "should set a title as intance variable" do
|
42
|
+
@notify_send.title('Joker Owned Batman!')
|
43
|
+
expect(@notify_send.instance_variable_get(:@title)).to eql 'Joker Owned Batman!'
|
44
|
+
end
|
66
45
|
end
|
67
46
|
|
68
|
-
|
69
|
-
|
70
|
-
|
47
|
+
describe '#urgency' do
|
48
|
+
it "should set the urgency instance variable to low" do
|
49
|
+
@notify_send.urgency(:low)
|
50
|
+
expect(@notify_send.instance_variable_get(:@urgency)).to eql 'low'
|
51
|
+
end
|
71
52
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
53
|
+
it "should set he urgency instance variable to normal" do
|
54
|
+
@notify_send.urgency(:normal)
|
55
|
+
expect(@notify_send.instance_variable_get(:@urgency)).to eql 'normal'
|
56
|
+
end
|
76
57
|
|
77
|
-
|
78
|
-
|
79
|
-
|
58
|
+
it "should set the urgency to critical" do
|
59
|
+
@notify_send.urgency(:critical)
|
60
|
+
expect(@notify_send.instance_variable_get(:@urgency)).to eql 'critical'
|
61
|
+
end
|
80
62
|
end
|
81
63
|
|
82
|
-
|
83
|
-
|
84
|
-
|
64
|
+
describe '#expire_time' do
|
65
|
+
it "should set the expire time" do
|
66
|
+
@notify_send.expire_time(1000)
|
67
|
+
expect(@notify_send.instance_variable_get(:@expire_time)).to eql 1000
|
68
|
+
end
|
85
69
|
|
86
|
-
|
87
|
-
|
88
|
-
|
70
|
+
it "should set the expire time in miliseconds" do
|
71
|
+
@notify_send.expire_time(2000)
|
72
|
+
expect(@notify_send.instance_variable_get(:@expire_time)).to eql 2000
|
73
|
+
end
|
89
74
|
end
|
90
75
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
end
|
97
|
-
|
98
|
-
describe '#to_s' do
|
76
|
+
describe '#hint' do
|
77
|
+
it "should set the hint" do
|
78
|
+
@notify_send.hint([:string, :me, :yeah])
|
79
|
+
expect(@notify_send.instance_variable_get(:@hint)).to eql 'string:me:yeah'
|
80
|
+
end
|
99
81
|
|
100
|
-
|
101
|
-
|
102
|
-
|
82
|
+
it "should set the hint in int" do
|
83
|
+
@notify_send.hint([:int, :me, 1])
|
84
|
+
expect(@notify_send.instance_variable_get(:@hint)).to eql 'int:me:1'
|
85
|
+
end
|
103
86
|
end
|
104
87
|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
88
|
+
describe '#to_s' do
|
89
|
+
it "should transform in a command" do
|
90
|
+
command = @notify_send.title('Inception').message('3 levels').image('my_image.png').to_s
|
91
|
+
expect(command).to eql "notify-send --icon=my_image.png 'Inception' '3 levels'"
|
92
|
+
end
|
109
93
|
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
94
|
+
it "should transform in a command to execute" do
|
95
|
+
command = @notify_send.title('Joker').message('Haha ha!').expire_time(1000).hint([:string, :me, :woot]).to_s
|
96
|
+
expect(command).to eql "notify-send --hint=string:me:woot --expire-time=1000 'Joker' 'Haha ha!'"
|
97
|
+
end
|
114
98
|
|
99
|
+
it "should transform in a command to execute" do
|
100
|
+
command = @notify_send.title('Batman').urgency(:critical).to_s
|
101
|
+
expect(command).to eql "notify-send --urgency=critical 'Batman'"
|
102
|
+
end
|
103
|
+
end
|
115
104
|
end
|
116
|
-
|
117
105
|
end
|
data/spec/notifiers_spec.rb
CHANGED
@@ -1,13 +1,29 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe Notifiers do
|
4
|
+
it { expect(growl).to be_instance_of(Notifiers::Growl) }
|
4
5
|
|
5
|
-
it {
|
6
|
+
it { expect(knotify).to be_instance_of(Notifiers::Knotify) }
|
6
7
|
|
7
|
-
it {
|
8
|
+
it { expect(notify_send).to be_instance_of(Notifiers::NotifySend) }
|
8
9
|
|
9
|
-
it {
|
10
|
+
it { expect(lib_notify).to be_instance_of(Notifiers::NotifySend) }
|
10
11
|
|
11
|
-
|
12
|
+
describe '#auto_discover' do
|
13
|
+
context 'when have a notifier library installed' do
|
14
|
+
it 'returns the notifier' do
|
15
|
+
expect(Notifiers::Growl).to receive(:installed?).and_return(true)
|
16
|
+
expect(auto_discover).to be_instance_of(Notifiers::Growl)
|
17
|
+
end
|
18
|
+
end
|
12
19
|
|
20
|
+
context 'when do not have a notifier library installed' do
|
21
|
+
it 'raises Notifier not Found' do
|
22
|
+
expect(Notifiers::Base).to receive(:subclasses).and_return([])
|
23
|
+
expect {
|
24
|
+
auto_discover
|
25
|
+
}.to raise_error(Notifiers::NotifierNotFound)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
13
29
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,6 +1,22 @@
|
|
1
|
-
|
1
|
+
require 'bundler/setup'
|
2
2
|
require 'notifiers'
|
3
3
|
|
4
4
|
RSpec.configure do |config|
|
5
5
|
config.include Notifiers
|
6
|
+
config.filter_run focus: true
|
7
|
+
config.run_all_when_everything_filtered = true
|
8
|
+
|
9
|
+
config.expect_with :rspec do |c|
|
10
|
+
c.syntax = :expect
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
shared_examples_for 'a notifier' do
|
15
|
+
describe '#notify' do
|
16
|
+
it { expect(subject).to respond_to(:notify) }
|
17
|
+
end
|
18
|
+
|
19
|
+
describe '.installed?' do
|
20
|
+
it { expect(described_class).to respond_to(:installed?) }
|
21
|
+
end
|
6
22
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: notifiers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomás D'Stefano
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-02-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '2.
|
19
|
+
version: '2.14'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '2.
|
26
|
+
version: '2.14'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -48,17 +48,20 @@ files:
|
|
48
48
|
- .gitignore
|
49
49
|
- .infinity_test
|
50
50
|
- .rspec
|
51
|
+
- .travis.yml
|
51
52
|
- Gemfile
|
52
|
-
- Gemfile.lock
|
53
53
|
- History.markdown
|
54
54
|
- README.markdown
|
55
55
|
- Rakefile
|
56
56
|
- TODO.markdown
|
57
57
|
- lib/notifiers.rb
|
58
|
+
- lib/notifiers/base.rb
|
58
59
|
- lib/notifiers/growl.rb
|
59
60
|
- lib/notifiers/knotify.rb
|
61
|
+
- lib/notifiers/notifier_not_found.rb
|
60
62
|
- lib/notifiers/notify_send.rb
|
61
63
|
- notifiers.gemspec
|
64
|
+
- spec/notifiers/base_spec.rb
|
62
65
|
- spec/notifiers/growl_spec.rb
|
63
66
|
- spec/notifiers/knotify_spec.rb
|
64
67
|
- spec/notifiers/notify_send_spec.rb
|
data/Gemfile.lock
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
notifiers (1.1.0)
|
5
|
-
|
6
|
-
GEM
|
7
|
-
remote: https://rubygems.org/
|
8
|
-
specs:
|
9
|
-
diff-lcs (1.1.3)
|
10
|
-
rspec (2.11.0)
|
11
|
-
rspec-core (~> 2.11.0)
|
12
|
-
rspec-expectations (~> 2.11.0)
|
13
|
-
rspec-mocks (~> 2.11.0)
|
14
|
-
rspec-core (2.11.1)
|
15
|
-
rspec-expectations (2.11.3)
|
16
|
-
diff-lcs (~> 1.1.3)
|
17
|
-
rspec-mocks (2.11.3)
|
18
|
-
|
19
|
-
PLATFORMS
|
20
|
-
ruby
|
21
|
-
|
22
|
-
DEPENDENCIES
|
23
|
-
bundler (>= 1.0.0)
|
24
|
-
notifiers!
|
25
|
-
rspec (~> 2.11)
|