talks 0.4.0 → 0.4.1
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.
- data/.travis.yml +1 -0
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +34 -0
- data/README.md +15 -6
- data/lib/talks.rb +1 -0
- data/lib/talks/configuration.rb +33 -18
- data/lib/talks/hooks.rb +19 -26
- data/lib/talks/hooks/after_message.rb +15 -0
- data/lib/talks/hooks/after_notify.rb +17 -0
- data/lib/talks/hooks/base.rb +21 -0
- data/lib/talks/hooks/before_message.rb +14 -0
- data/lib/talks/hooks/before_notify.rb +17 -0
- data/lib/talks/hooks/voice.rb +19 -0
- data/lib/talks/version.rb +1 -1
- data/talks.gemspec +1 -1
- metadata +11 -4
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
talks (0.4.0)
|
5
|
+
notifier
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: http://rubygems.org/
|
9
|
+
specs:
|
10
|
+
diff-lcs (1.2.3)
|
11
|
+
multi_json (1.7.2)
|
12
|
+
notifier (0.4.1)
|
13
|
+
rake (10.0.4)
|
14
|
+
rspec (2.13.0)
|
15
|
+
rspec-core (~> 2.13.0)
|
16
|
+
rspec-expectations (~> 2.13.0)
|
17
|
+
rspec-mocks (~> 2.13.0)
|
18
|
+
rspec-core (2.13.1)
|
19
|
+
rspec-expectations (2.13.0)
|
20
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
21
|
+
rspec-mocks (2.13.1)
|
22
|
+
simplecov (0.7.1)
|
23
|
+
multi_json (~> 1.0)
|
24
|
+
simplecov-html (~> 0.7.1)
|
25
|
+
simplecov-html (0.7.1)
|
26
|
+
|
27
|
+
PLATFORMS
|
28
|
+
ruby
|
29
|
+
|
30
|
+
DEPENDENCIES
|
31
|
+
rake
|
32
|
+
rspec
|
33
|
+
simplecov
|
34
|
+
talks!
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Talks gem — now your ruby and command-line tools can talk with you
|
2
2
|
|
3
|
-
### Build Status  
|
4
4
|
|
5
5
|
If you want to HEAR some response from your code or command-line tools, just use this gem.
|
6
6
|
|
@@ -13,11 +13,11 @@ find what notifier you want to use - there is support for every OS!
|
|
13
13
|
|
14
14
|
I added in all sections of this readme notes about usage notifier
|
15
15
|
functionality. And small
|
16
|
-
[readme](https://github.com/
|
16
|
+
[readme](https://github.com/gazay/talks#using-talks-with-growl) about usage with Growl notifier.
|
17
17
|
|
18
18
|
### Here is a small [screencast](http://www.youtube.com/watch?v=PaUpwQMBvOY) about talks
|
19
19
|
|
20
|
-
Soon we will finish the [wiki](https://github.com/
|
20
|
+
Soon we will finish the [wiki](https://github.com/gazay/talks/wiki) and it will be (I hope) delimited and clear for understand.
|
21
21
|
|
22
22
|
Sponsored by Evil Martians <http://evilmartians.com>
|
23
23
|
|
@@ -40,6 +40,10 @@ You can find some examples of `talks` usage in organization [ruby-talks](https:/
|
|
40
40
|
* [bundler-talks](https://github.com/ruby-talks/bundler-talks)
|
41
41
|
* [spec-talks](https://github.com/ruby-talks/spec-talks)
|
42
42
|
|
43
|
+
Examples from other people:
|
44
|
+
|
45
|
+
* [Autotesting tool on mocha, guard, rake and talks](https://gist.github.com/3150108) by @kossnocorp
|
46
|
+
|
43
47
|
## How?
|
44
48
|
|
45
49
|
On MacOS X this gem is just using the native MacOS X `say` command line tool.
|
@@ -47,7 +51,7 @@ On linix/unix this gem is using espeak speech synthesis.
|
|
47
51
|
|
48
52
|
For notifications this gem uses [notifier](https://github.com/fnando/notifier/blob/master/README.rdoc) gem.
|
49
53
|
|
50
|
-
### In all examples below I've used MacOS X voice types. For espeak you can read section [Using talks with espeak](https://github.com/
|
54
|
+
### In all examples below I've used MacOS X voice types. For espeak you can read section [Using talks with espeak](https://github.com/gazay/talks#using-talks-with-espeak)
|
51
55
|
|
52
56
|
### Configuration
|
53
57
|
|
@@ -57,7 +61,12 @@ You can configure default voices and messages for `talks` with `~/.talksrc` file
|
|
57
61
|
```yml
|
58
62
|
default_voice: 'whisper'
|
59
63
|
engine: 'say'
|
60
|
-
notifier: 'off'
|
64
|
+
notifier: 'off' # if this option passed - you will not receive notifications at all
|
65
|
+
notifier_options:
|
66
|
+
title: 'Not talks'
|
67
|
+
image: 'path/to/okay.png'
|
68
|
+
detach: true # added ' &' to command line command
|
69
|
+
notify_by_default: true # everytime when you call Talks#say - it will call Talks#notify
|
61
70
|
voices:
|
62
71
|
info: 'pipe'
|
63
72
|
messages:
|
@@ -218,7 +227,7 @@ I did it myself.
|
|
218
227
|
|
219
228
|
### A lot of thanks
|
220
229
|
|
221
|
-
* @kossnocorp - for idea with notifiers.
|
230
|
+
* @kossnocorp - for idea with notifiers and his pulls.
|
222
231
|
|
223
232
|
* @shime - for grammar fixes in readme and better explanation of my idea.
|
224
233
|
|
data/lib/talks.rb
CHANGED
data/lib/talks/configuration.rb
CHANGED
@@ -30,15 +30,8 @@ module Talks
|
|
30
30
|
|
31
31
|
def initialize(opts)
|
32
32
|
@options = symbolize_hash_keys(opts)
|
33
|
-
|
34
|
-
|
35
|
-
@detach = options[:detach]
|
36
|
-
@notify_by_default = options[:notify_by_default]
|
37
|
-
@default_voice = options[:default_voice] || default_voice_for(engine)
|
38
|
-
@voices = options[:voices] && DEFAULT_VOICES[engine.to_sym].merge(options[:voices]) ||
|
39
|
-
DEFAULT_VOICES[engine.to_sym]
|
40
|
-
@messages = options[:messages] && DEFAULT_MESSAGES.merge(options[:messages]) ||
|
41
|
-
DEFAULT_MESSAGES
|
33
|
+
|
34
|
+
set_default_options
|
42
35
|
end
|
43
36
|
|
44
37
|
def voice(type)
|
@@ -57,10 +50,16 @@ module Talks
|
|
57
50
|
"#{command_name} task #{position == :before ? 'started' : 'ended'}"
|
58
51
|
end
|
59
52
|
|
60
|
-
def message_for(command_name, position = :after)
|
53
|
+
def message_for(command_name, position = :after, kind = 'message')
|
61
54
|
command = command_name.to_sym
|
62
|
-
|
63
|
-
|
55
|
+
message = \
|
56
|
+
position == :before ? "before_#{kind}" : "after_#{kind}"
|
57
|
+
|
58
|
+
options[command][message.to_sym] if options[command]
|
59
|
+
end
|
60
|
+
|
61
|
+
def notify_message_for(command_name, position = :after)
|
62
|
+
message_for(command_name, position, 'notify')
|
64
63
|
end
|
65
64
|
|
66
65
|
def notifier_for(command_name)
|
@@ -73,12 +72,6 @@ module Talks
|
|
73
72
|
)
|
74
73
|
end
|
75
74
|
|
76
|
-
def notify_message_for(command_name, position = :after)
|
77
|
-
command = command_name.to_sym
|
78
|
-
options[command] &&
|
79
|
-
options[command][(position == :before ? :before_notify : :after_notify)]
|
80
|
-
end
|
81
|
-
|
82
75
|
def voice_for(command_name)
|
83
76
|
command = command_name.to_sym
|
84
77
|
options[command] &&
|
@@ -87,6 +80,28 @@ module Talks
|
|
87
80
|
|
88
81
|
private
|
89
82
|
|
83
|
+
def set_default_options
|
84
|
+
@engine = options[:engine] || default_engine_for_os
|
85
|
+
@notifier_options = options[:notifier_options] || {}
|
86
|
+
@detach = options[:detach]
|
87
|
+
@notify_by_default = options[:notify_by_default]
|
88
|
+
@default_voice = options[:default_voice] || default_voice_for(engine)
|
89
|
+
@voices = voice_options
|
90
|
+
@messages = messages_options
|
91
|
+
end
|
92
|
+
|
93
|
+
def voice_options
|
94
|
+
options[:voices] &&
|
95
|
+
DEFAULT_VOICES[engine.to_sym].merge(options[:voices]) ||
|
96
|
+
DEFAULT_VOICES[engine.to_sym]
|
97
|
+
end
|
98
|
+
|
99
|
+
def messages_options
|
100
|
+
options[:messages] &&
|
101
|
+
DEFAULT_MESSAGES.merge(options[:messages]) ||
|
102
|
+
DEFAULT_MESSAGES
|
103
|
+
end
|
104
|
+
|
90
105
|
def default_voice_for(talks_engine)
|
91
106
|
case talks_engine
|
92
107
|
when 'say'
|
data/lib/talks/hooks.rb
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
require File.expand_path('../hooks/base', __FILE__)
|
2
|
+
require File.expand_path('../hooks/voice', __FILE__)
|
3
|
+
require File.expand_path('../hooks/before_message', __FILE__)
|
4
|
+
require File.expand_path('../hooks/after_message', __FILE__)
|
5
|
+
require File.expand_path('../hooks/before_notify', __FILE__)
|
6
|
+
require File.expand_path('../hooks/after_notify', __FILE__)
|
7
|
+
|
1
8
|
module Talks
|
2
9
|
module Hooks
|
3
10
|
class << self
|
@@ -42,32 +49,18 @@ module Talks
|
|
42
49
|
end
|
43
50
|
end
|
44
51
|
|
45
|
-
def parse(
|
46
|
-
voice =
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
Talks.
|
57
|
-
|
58
|
-
before_notify = Talks.config.notifier_for(command_name) &&
|
59
|
-
(
|
60
|
-
options['-bn'] || options['--before-notify'] ||
|
61
|
-
Talks.config.notify_message_for(command_name, :before) ||
|
62
|
-
Talks.config.default_message_for(command_name, :before)
|
63
|
-
)
|
64
|
-
|
65
|
-
after_notify = Talks.config.notifier_for(command_name) &&
|
66
|
-
(
|
67
|
-
options['-an'] || options['--after-notify'] ||
|
68
|
-
Talks.config.notify_message_for(command_name, :after) ||
|
69
|
-
Talks.config.default_message_for(command_name, :after)
|
70
|
-
)
|
52
|
+
def parse(opts, cmd)
|
53
|
+
voice = Talks::Hooks::Voice.to_hook opts, cmd
|
54
|
+
|
55
|
+
before_message = Talks::Hooks::BeforeMessage.to_hook opts, cmd
|
56
|
+
|
57
|
+
after_message = Talks::Hooks::AfterMessage.to_hook opts, cmd
|
58
|
+
|
59
|
+
before_notify = Talks.config.notifier_for(cmd) &&
|
60
|
+
Talks::Hooks::BeforeNotify.to_hook(opts, cmd)
|
61
|
+
|
62
|
+
after_notify = Talks.config.notifier_for(cmd) &&
|
63
|
+
Talks::Hooks::AfterNotify.to_hook(opts, cmd)
|
71
64
|
|
72
65
|
[voice, before_message, after_message, before_notify, after_notify]
|
73
66
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Talks
|
2
|
+
module Hooks
|
3
|
+
class AfterNotify < Talks::Hooks::Base
|
4
|
+
|
5
|
+
class << self
|
6
|
+
|
7
|
+
def one_dash_argv; '-an'; end
|
8
|
+
def two_dashes_argv; '--after-notify'; end
|
9
|
+
def message_method; :notify_message_for; end
|
10
|
+
def default_message_method; :default_message_for; end
|
11
|
+
def message_name; :after; end
|
12
|
+
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Talks
|
2
|
+
module Hooks
|
3
|
+
class Base
|
4
|
+
class << self
|
5
|
+
|
6
|
+
def one_dash_argv; ''; end
|
7
|
+
def two_dashes_argv; ''; end
|
8
|
+
def message_method; :message_for; end
|
9
|
+
def default_message_method; "default_#{message_method}"; end
|
10
|
+
def message_name; :before; end
|
11
|
+
|
12
|
+
def to_hook(opts, cmd)
|
13
|
+
opts[one_dash_argv] || opts[two_dashes_argv] ||
|
14
|
+
Talks.config.send(message_method, cmd, message_name) ||
|
15
|
+
Talks.config.send(default_message_method, cmd, message_name)
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Talks
|
2
|
+
module Hooks
|
3
|
+
class BeforeNotify < Talks::Hooks::Base
|
4
|
+
|
5
|
+
class << self
|
6
|
+
|
7
|
+
def one_dash_argv; '-bn'; end
|
8
|
+
def two_dashes_argv; '--before-notify'; end
|
9
|
+
def message_method; :notify_message_for; end
|
10
|
+
def default_message_method; :default_message_for; end
|
11
|
+
def message_name; :before; end
|
12
|
+
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Talks
|
2
|
+
module Hooks
|
3
|
+
class Voice < Talks::Hooks::Base
|
4
|
+
|
5
|
+
class << self
|
6
|
+
|
7
|
+
def one_dash_argv; '-v'; end
|
8
|
+
def two_dashes_argv; '--voice'; end
|
9
|
+
|
10
|
+
def to_hook(opts, cmd)
|
11
|
+
opts[one_dash_argv] || opts[two_dashes_argv] ||
|
12
|
+
Talks.config.voice_for(cmd.to_sym) || Talks.config.default_voice
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/talks/version.rb
CHANGED
data/talks.gemspec
CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
|
|
8
8
|
s.platform = Gem::Platform::RUBY
|
9
9
|
s.authors = ['gazay']
|
10
10
|
s.email = ['alex.gaziev@gmail.com']
|
11
|
-
s.homepage = "https://github.com/
|
11
|
+
s.homepage = "https://github.com/gazay/talks"
|
12
12
|
s.summary = %q{Gem for talking ruby code and command-line tools}
|
13
13
|
s.description = %q{This gem can be used for wraping command-lines with `talks` command or for adding hooks in ruby code which would tell you something}
|
14
14
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: talks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-04-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: notifier
|
@@ -73,6 +73,7 @@ files:
|
|
73
73
|
- .travis.yml
|
74
74
|
- CHANGELOG.md
|
75
75
|
- Gemfile
|
76
|
+
- Gemfile.lock
|
76
77
|
- README.md
|
77
78
|
- Rakefile
|
78
79
|
- bin/talking
|
@@ -80,12 +81,18 @@ files:
|
|
80
81
|
- lib/talks.rb
|
81
82
|
- lib/talks/configuration.rb
|
82
83
|
- lib/talks/hooks.rb
|
84
|
+
- lib/talks/hooks/after_message.rb
|
85
|
+
- lib/talks/hooks/after_notify.rb
|
86
|
+
- lib/talks/hooks/base.rb
|
87
|
+
- lib/talks/hooks/before_message.rb
|
88
|
+
- lib/talks/hooks/before_notify.rb
|
89
|
+
- lib/talks/hooks/voice.rb
|
83
90
|
- lib/talks/runner.rb
|
84
91
|
- lib/talks/version.rb
|
85
92
|
- spec/talks/basic_spec.rb
|
86
93
|
- spec/test_data/talksrc
|
87
94
|
- talks.gemspec
|
88
|
-
homepage: https://github.com/
|
95
|
+
homepage: https://github.com/gazay/talks
|
89
96
|
licenses: []
|
90
97
|
post_install_message:
|
91
98
|
rdoc_options: []
|
@@ -105,7 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
105
112
|
version: '0'
|
106
113
|
requirements: []
|
107
114
|
rubyforge_project: talks
|
108
|
-
rubygems_version: 1.8.
|
115
|
+
rubygems_version: 1.8.23
|
109
116
|
signing_key:
|
110
117
|
specification_version: 3
|
111
118
|
summary: Gem for talking ruby code and command-line tools
|