blastr 0.0.17 → 0.0.18
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +0 -1
- data/Manifest.txt +1 -1
- data/{README.rdoc → README.txt} +5 -2
- data/Rakefile +14 -25
- data/lib/blastr.rb +2 -3
- data/lib/tts/tts.rb +33 -2
- data/test/test_git_log_entry.rb +0 -1
- data/test/test_tts.rb +37 -9
- metadata +32 -13
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
data/{README.rdoc → README.txt}
RENAMED
@@ -1,7 +1,6 @@
|
|
1
1
|
= Blastr, the audible commit radiator
|
2
2
|
|
3
|
-
|
4
|
-
to file a bug report or submit a feature request.
|
3
|
+
* http://rubyforge.org/projects/blastr/
|
5
4
|
|
6
5
|
== DESCRIPTION:
|
7
6
|
|
@@ -10,6 +9,9 @@ announcements out of the commit messages. It currently supports Subversion,
|
|
10
9
|
Git, and Mercurial on Linux and OS X, possibly on other UNIX-like operating
|
11
10
|
systems as well.
|
12
11
|
|
12
|
+
See the project website at Rubyforge[http://rubyforge.org/projects/blastr/]
|
13
|
+
to file a bug report or submit a feature request.
|
14
|
+
|
13
15
|
=== FEATURES:
|
14
16
|
|
15
17
|
Blastr can observe a "branch" (identified by a URL) by polling the
|
@@ -122,3 +124,4 @@ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
122
124
|
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
123
125
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
124
126
|
POSSIBILITY OF SUCH DAMAGE.
|
127
|
+
|
data/Rakefile
CHANGED
@@ -1,30 +1,19 @@
|
|
1
|
-
|
1
|
+
require 'rubygems'
|
2
|
+
require 'hoe'
|
3
|
+
$:.unshift(File.dirname(__FILE__) + "/lib")
|
2
4
|
require File.dirname(__FILE__) + '/lib/blastr'
|
3
5
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
6
|
+
Hoe.spec 'blastr' do
|
7
|
+
name = "blastr"
|
8
|
+
developer('Lasse Koskela', 'lasse.koskela@gmail.com')
|
9
|
+
description = "Blastr observes a version control repository for commits and makes audible announcements out of the commit messages."
|
10
|
+
summary = "Blastr is an audible commit radiator"
|
11
|
+
url = "http://github.com/lkoskela/blastr"
|
12
|
+
clean_globs = ['test/output/*.png', '**/.DS_Store', 'tmp', '*.log']
|
13
|
+
changes = paragraphs_of('History.txt', 0..1).join("\n\n")
|
14
|
+
remote_rdoc_dir = '' # Release to root
|
15
|
+
rsync_args = '-av --delete --ignore-errors'
|
16
|
+
extra_deps = [
|
12
17
|
['git','>= 1.0.5'],
|
13
18
|
]
|
14
|
-
#p.extra_dev_deps = [
|
15
|
-
# ['newgem', ">= #{::Newgem::VERSION}"]
|
16
|
-
#]
|
17
|
-
p.clean_globs |= %w[**/.DS_Store tmp *.log]
|
18
|
-
path = (p.rubyforge_name == p.name) ? p.rubyforge_name : "\#{p.rubyforge_name}/\#{p.name}"
|
19
|
-
#p.remote_rdoc_dir = File.join(path.gsub(/^#{p.rubyforge_name}\/?/,''), 'rdoc')
|
20
|
-
p.remote_rdoc_dir = '' # Release to root
|
21
|
-
p.rsync_args = '-av --delete --ignore-errors'
|
22
|
-
p.bin_files = 'announce-svn-commits'
|
23
|
-
#puts "Methods on p:\n #{p.methods.sort.join(', ')}"
|
24
19
|
end
|
25
|
-
|
26
|
-
require 'newgem/tasks' # load /tasks/*.rake
|
27
|
-
Dir['tasks/**/*.rake'].each { |t| load t }
|
28
|
-
|
29
|
-
# TODO - want other tests/tasks run by default? Add them to the list
|
30
|
-
# task :default => [:spec, :features]
|
data/lib/blastr.rb
CHANGED
@@ -6,8 +6,8 @@ module Blastr
|
|
6
6
|
require 'tts/tts.rb'
|
7
7
|
require 'people/people.rb'
|
8
8
|
|
9
|
-
VERSION = '0.0.
|
10
|
-
COPYRIGHT =
|
9
|
+
VERSION = '0.0.18'
|
10
|
+
COPYRIGHT = "Copyright (c) 2009-#{Time.now.year}, Lasse Koskela. All Rights Reserved."
|
11
11
|
puts "Blastr #{VERSION}\n#{COPYRIGHT}\n"
|
12
12
|
|
13
13
|
def self.trap_and_exit(signal)
|
@@ -96,5 +96,4 @@ EOS
|
|
96
96
|
temp_file.unlink
|
97
97
|
temp_dir
|
98
98
|
end
|
99
|
-
|
100
99
|
end
|
data/lib/tts/tts.rb
CHANGED
@@ -9,7 +9,7 @@ module Blastr
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def binary
|
12
|
-
%x[
|
12
|
+
%x[#{locate_which_binary} #{@name}].strip
|
13
13
|
end
|
14
14
|
|
15
15
|
def available?
|
@@ -19,6 +19,14 @@ module Blastr
|
|
19
19
|
def speak(msg)
|
20
20
|
%x[#{binary} "#{msg}"]
|
21
21
|
end
|
22
|
+
|
23
|
+
private
|
24
|
+
def locate_which_binary
|
25
|
+
@path_to_which_command ||= ['/bin/which', '/usr/bin/which'].find do |path|
|
26
|
+
File.exists? path
|
27
|
+
end
|
28
|
+
@path_to_which_command ||= 'which'
|
29
|
+
end
|
22
30
|
end
|
23
31
|
|
24
32
|
class Say < TTSImplementation
|
@@ -45,8 +53,31 @@ module Blastr
|
|
45
53
|
end
|
46
54
|
|
47
55
|
def TTS::speak(msg)
|
48
|
-
|
56
|
+
msg.gsub!(/"/u, '\"')
|
57
|
+
msg.gsub!(/'/u, '\'')
|
58
|
+
resolve_tts_system.speak(normalize_for_speech(msg))
|
49
59
|
end
|
50
60
|
|
61
|
+
private
|
62
|
+
def TTS::normalize_for_speech(msg)
|
63
|
+
msg = omit_url_scheme("git", msg)
|
64
|
+
msg = omit_url_scheme("http", msg)
|
65
|
+
msg = omit_url_scheme("https", msg)
|
66
|
+
msg.gsub!(/(.*?)([^\w\(\)])(.?)/, '\1 \2 \3').squeeze!(" ")
|
67
|
+
words = msg.split(/\s/).collect do |word|
|
68
|
+
camel_case_word = /[A-Z][a-z0-9_]+/
|
69
|
+
if word =~ camel_case_word
|
70
|
+
word = word.scan(camel_case_word)
|
71
|
+
end
|
72
|
+
word
|
73
|
+
end
|
74
|
+
words.flatten.join(' ')
|
75
|
+
end
|
76
|
+
|
77
|
+
def TTS::omit_url_scheme(scheme, msg)
|
78
|
+
return nil if msg.nil?
|
79
|
+
msg.gsub!(/\b#{scheme}:\/\/([^\s]+)/, '(path omitted)')
|
80
|
+
msg
|
81
|
+
end
|
51
82
|
end
|
52
83
|
end
|
data/test/test_git_log_entry.rb
CHANGED
data/test/test_tts.rb
CHANGED
@@ -1,9 +1,37 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
def test_availability_depends_on_binary_existing_in_PATH
|
6
|
-
assert Blastr::TTS::TTSImplementation.new("nosuchbinaryexists").available? == false
|
7
|
-
assert Blastr::TTS::TTSImplementation.new("
|
8
|
-
end
|
9
|
-
end
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
require 'mocha'
|
3
|
+
|
4
|
+
class TestTTSImplementation < Test::Unit::TestCase
|
5
|
+
def test_availability_depends_on_binary_existing_in_PATH
|
6
|
+
assert Blastr::TTS::TTSImplementation.new("nosuchbinaryexists").available? == false
|
7
|
+
assert Blastr::TTS::TTSImplementation.new("ruby").available? == true
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
class TestCamelCaseSpelling < Test::Unit::TestCase
|
12
|
+
def setup
|
13
|
+
@tts = mock()
|
14
|
+
Blastr::TTS.stubs(:resolve_tts_system).returns(@tts)
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_spelling_out_camel_case_words
|
18
|
+
@tts.expects(:speak).with("this is Camel Case")
|
19
|
+
Blastr::TTS.speak("this is CamelCase")
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_camel_case_words_ending_with_special_character
|
23
|
+
@tts.expects(:speak).with("is this Camel Case ?")
|
24
|
+
Blastr::TTS.speak("is this CamelCase?")
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_git_urls_are_not_spoken_out
|
28
|
+
@tts.expects(:speak).with("Merge X from (path omitted) into Y")
|
29
|
+
Blastr::TTS.speak("Merge X from git://github.com/lassekoskela/blastr into Y")
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_http_urls_are_not_spoken_out
|
33
|
+
@tts.expects(:speak).with("Merge X from (path omitted) into Y").times(2)
|
34
|
+
Blastr::TTS.speak("Merge X from http://repo.com/svn/path into Y")
|
35
|
+
Blastr::TTS.speak("Merge X from https://repo.com/svn/file.txt into Y")
|
36
|
+
end
|
37
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blastr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lasse Koskela
|
@@ -9,18 +9,28 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-02-19 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
17
|
-
type: :
|
16
|
+
name: rubyforge
|
17
|
+
type: :development
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 2.0.3
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: gemcutter
|
27
|
+
type: :development
|
18
28
|
version_requirement:
|
19
29
|
version_requirements: !ruby/object:Gem::Requirement
|
20
30
|
requirements:
|
21
31
|
- - ">="
|
22
32
|
- !ruby/object:Gem::Version
|
23
|
-
version:
|
33
|
+
version: 0.3.0
|
24
34
|
version:
|
25
35
|
- !ruby/object:Gem::Dependency
|
26
36
|
name: hoe
|
@@ -30,9 +40,16 @@ dependencies:
|
|
30
40
|
requirements:
|
31
41
|
- - ">="
|
32
42
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
43
|
+
version: 2.5.0
|
34
44
|
version:
|
35
|
-
description:
|
45
|
+
description: |-
|
46
|
+
Blastr observes a version control repository for commits and makes audible
|
47
|
+
announcements out of the commit messages. It currently supports Subversion,
|
48
|
+
Git, and Mercurial on Linux and OS X, possibly on other UNIX-like operating
|
49
|
+
systems as well.
|
50
|
+
|
51
|
+
See the project website at Rubyforge[http://rubyforge.org/projects/blastr/]
|
52
|
+
to file a bug report or submit a feature request.
|
36
53
|
email:
|
37
54
|
- lasse.koskela@gmail.com
|
38
55
|
executables:
|
@@ -43,12 +60,12 @@ extra_rdoc_files:
|
|
43
60
|
- History.txt
|
44
61
|
- Manifest.txt
|
45
62
|
- PostInstall.txt
|
46
|
-
- README.
|
63
|
+
- README.txt
|
47
64
|
files:
|
48
65
|
- History.txt
|
49
66
|
- Manifest.txt
|
50
67
|
- PostInstall.txt
|
51
|
-
- README.
|
68
|
+
- README.txt
|
52
69
|
- Rakefile
|
53
70
|
- bin/blastr
|
54
71
|
- config/website.yml
|
@@ -75,11 +92,13 @@ files:
|
|
75
92
|
- test/test_tts.rb
|
76
93
|
- website/index.html
|
77
94
|
has_rdoc: true
|
78
|
-
homepage:
|
95
|
+
homepage: http://rubyforge.org/projects/blastr/
|
96
|
+
licenses: []
|
97
|
+
|
79
98
|
post_install_message:
|
80
99
|
rdoc_options:
|
81
100
|
- --main
|
82
|
-
- README.
|
101
|
+
- README.txt
|
83
102
|
require_paths:
|
84
103
|
- lib
|
85
104
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -97,9 +116,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
97
116
|
requirements: []
|
98
117
|
|
99
118
|
rubyforge_project: blastr
|
100
|
-
rubygems_version: 1.
|
119
|
+
rubygems_version: 1.3.5
|
101
120
|
signing_key:
|
102
|
-
specification_version:
|
121
|
+
specification_version: 3
|
103
122
|
summary: Blastr observes a version control repository for commits and makes audible announcements out of the commit messages
|
104
123
|
test_files:
|
105
124
|
- test/test_blastr.rb
|