snarl-snp 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +86 -4
- data/Rakefile +4 -3
- data/VERSION +1 -1
- data/YAML.rdoc +197 -0
- data/bin/snarl_snp +112 -0
- data/{GUIDE.rdoc.ja → doc-ja/GUIDE.rdoc.ja} +0 -0
- data/{README.rdoc.ja → doc-ja/README.rdoc.ja} +94 -29
- data/doc-ja/YAML.rdoc.ja +200 -0
- data/exsample/yahoo_weather.rb +18 -4
- data/lib/snarl/autotest.rb +7 -77
- data/lib/snarl/snp.rb +4 -4
- data/lib/snarl/snp/action.rb +15 -11
- data/lib/snarl/snp/autosnp.rb +69 -0
- data/lib/snarl/snp/config.rb +109 -17
- data/lib/snarl/snp/error.rb +7 -6
- data/lib/snarl/snp/request.rb +31 -21
- data/lib/snarl/snp/response.rb +1 -0
- data/lib/snarl/snp/snp.rb +56 -41
- data/lib/snarl/snp/snp_procedure.rb +105 -0
- data/snarl-snp.gemspec +21 -15
- data/spec/bin/snarl_snp_spec.rb +91 -0
- data/spec/snp/action_spec.rb +149 -86
- data/spec/snp/config_spec.rb +181 -37
- data/spec/snp/real_connection_spec.rb +295 -0
- data/spec/snp/request_spec.rb +40 -10
- data/spec/snp/snp_procedure_spec.rb +226 -0
- data/spec/snp/snp_spec.rb +216 -193
- data/spec/spec_helper.rb +6 -4
- metadata +22 -27
- data/spec/exsample/data/weather_yahoo_co_jp.html +0 -608
- data/spec/exsample/yahoo_weather_spec.rb +0 -22
data/README.rdoc
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
= snarl-snp
|
2
2
|
|
3
|
-
Snarl Network Protocol(SNP) Client for Snarl. You can send messages to Snarl
|
3
|
+
Snarl Network Protocol(SNP) Client for Snarl. You can send messages to Snarl on LAN.
|
4
4
|
|
5
5
|
Snarl is a popup-message application on Windows. Alike Growl.
|
6
6
|
http://www.fullphat.net/
|
7
7
|
SNP 1.0 documentation is here.
|
8
8
|
http://www.fullphat.net/dev/snp/index.htm
|
9
9
|
|
10
|
-
If you are able to read Japanese, please read README.rdoc.ja.
|
10
|
+
If you are able to read Japanese, please read doc-ja/README.rdoc.ja.
|
11
11
|
|
12
12
|
== Requirements
|
13
13
|
|
@@ -17,7 +17,7 @@ If you are able to read Japanese, please read README.rdoc.ja.
|
|
17
17
|
|
18
18
|
gem install snarl-snp
|
19
19
|
|
20
|
-
No other gems are required
|
20
|
+
No other gems are required.
|
21
21
|
|
22
22
|
== Contact
|
23
23
|
|
@@ -33,6 +33,65 @@ Set the value in advance, then copy and paste codes on irb.
|
|
33
33
|
|
34
34
|
When nil/undef, Snarl::SNP uses '127.0.0.1'. Default port is 9887.
|
35
35
|
|
36
|
+
=== SNP with YAML
|
37
|
+
|
38
|
+
0.2.0 feature. It maybe seems to be easy.
|
39
|
+
|
40
|
+
require 'rubygems'
|
41
|
+
require 'snarl/snp'
|
42
|
+
Snarl::SNP.load(<<YAML)
|
43
|
+
host : #{@host}
|
44
|
+
app : Ruby-Snarl
|
45
|
+
title : popup title
|
46
|
+
text : hello!
|
47
|
+
timeout : 5
|
48
|
+
unregister : false
|
49
|
+
YAML
|
50
|
+
|
51
|
+
require 'rubygems'
|
52
|
+
require 'snarl/snp'
|
53
|
+
yaml = <<YAML
|
54
|
+
host : #{@host}
|
55
|
+
app : Ruby-Snarl
|
56
|
+
class :
|
57
|
+
- [class1, name1]
|
58
|
+
- [class2, name2]
|
59
|
+
YAML
|
60
|
+
Snarl::SNP.load(yaml) do |snp|
|
61
|
+
snp.notification(:title => 'title', :text => 'text', :class => 'class1')
|
62
|
+
end
|
63
|
+
|
64
|
+
require 'rubygems'
|
65
|
+
require 'snarl/snp'
|
66
|
+
Snarl::SNP.load(<<YAML)
|
67
|
+
host : #{@host}
|
68
|
+
app : Ruby-Snarl
|
69
|
+
class :
|
70
|
+
- [class1, name1]
|
71
|
+
- [class2, name2]
|
72
|
+
notification :
|
73
|
+
title : title
|
74
|
+
text : text
|
75
|
+
class : class1
|
76
|
+
logfile : $stdout
|
77
|
+
YAML
|
78
|
+
|
79
|
+
require 'rubygems'
|
80
|
+
require 'snarl/snp'
|
81
|
+
Snarl::SNP.load(<<YAML)
|
82
|
+
host : #{@host}
|
83
|
+
app : Ruby-Snarl
|
84
|
+
notification :
|
85
|
+
-
|
86
|
+
title : 1st post!
|
87
|
+
text : message1
|
88
|
+
-
|
89
|
+
title : 2nd post!
|
90
|
+
text : message2
|
91
|
+
YAML
|
92
|
+
|
93
|
+
For YAML details, see YAML.rdoc.
|
94
|
+
|
36
95
|
=== Simple Popup (anonymous application)
|
37
96
|
|
38
97
|
require 'rubygems'
|
@@ -120,7 +179,30 @@ Don't use "\r\n" or "\r" in message body. Use "\n" instead.
|
|
120
179
|
require 'kconv'
|
121
180
|
Snarl::SNP.open(@host){|snp| snp.notification('タイトル'.tosjis, '日本語'.tosjis)}
|
122
181
|
|
123
|
-
Windows encoding is required.
|
182
|
+
Windows encoding is required. Windows 2000 is Shift_JIS (CP932), XP is UTF-8, maybe.
|
183
|
+
|
184
|
+
== SNP on command line
|
185
|
+
|
186
|
+
bin/snarl_snp is available.
|
187
|
+
|
188
|
+
snarl_snp -H host -a app -t title -m message
|
189
|
+
|
190
|
+
snarl_snp --yaml=./snp.yml
|
191
|
+
|
192
|
+
and so on.
|
193
|
+
|
194
|
+
[-H host, --host=host] the hostname/address which Snarl is running (default, 127.0.0.1). -h shows help. "H"ost. Sorry.
|
195
|
+
[-p port, --port=port] the port number which Snarl uses (default, 9887)
|
196
|
+
[-a app, --app=app] the application name you use on Snarl (default, nothing). It's read in SNP#register(app)
|
197
|
+
[-c class, --class=class] the classname you use on Snarl (default, nothing). It's read in SNP#add_class and notification
|
198
|
+
[-t title, --title=title] the title string of popup (default 'Ruby-Snarl').
|
199
|
+
[-m msg, --text=msg] the popup message body.
|
200
|
+
[-s sec, --timeout=sec] popups automatically close in sec (default 10 sec.). -t is not for timeout but title.
|
201
|
+
[--icon=icon_path] popup message icon path (default, default style's icon). URL or filepath on Snarl machine. JPG/PNG/GIF
|
202
|
+
[--sticky] makes popup "sticky" (default, closes in timeout sec). this is equal to "--timeout=0".
|
203
|
+
[-u, --unregister] removes app from Snarl setting window (default, false). note: users cannot change app's setting.
|
204
|
+
[--verbose] shows SNP logs to stdout (default, false)
|
205
|
+
[-y yamlpath, --yaml=yamlpath] the YAML file path for "automatic SNP" (default, nothing)
|
124
206
|
|
125
207
|
== FAQ
|
126
208
|
|
data/Rakefile
CHANGED
@@ -5,13 +5,12 @@ begin
|
|
5
5
|
require 'jeweler'
|
6
6
|
Jeweler::Tasks.new do |gem|
|
7
7
|
gem.name = "snarl-snp"
|
8
|
-
gem.summary = %Q{Snarl Network Protocol Client. You can notify to Snarl
|
9
|
-
gem.description = %Q{Snarl Network Protocol Client. Snarl is the notification program for Windows. You can send notification messages to Snarl with SNP
|
8
|
+
gem.summary = %Q{Snarl Network Protocol Client. You can notify to Snarl on LAN.}
|
9
|
+
gem.description = %Q{Snarl Network Protocol Client. Snarl is the notification program for Windows. You can send notification messages to Snarl with SNP on LAN.}
|
10
10
|
gem.email = "ezookojo@gmail.com"
|
11
11
|
gem.homepage = "http://github.com/kitamomonga/snarl-snp"
|
12
12
|
gem.authors = ["kitamomonga"]
|
13
13
|
gem.add_development_dependency "rspec", ">= 1.2.9"
|
14
|
-
gem.add_development_dependency "webmock"
|
15
14
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
16
15
|
end
|
17
16
|
Jeweler::GemcutterTasks.new
|
@@ -43,5 +42,7 @@ Rake::RDocTask.new do |rdoc|
|
|
43
42
|
rdoc.title = "snarl-snp #{version}"
|
44
43
|
rdoc.rdoc_files.include('README.rdoc*')
|
45
44
|
rdoc.rdoc_files.include('GUIDE.rdoc*')
|
45
|
+
rdoc.rdoc_files.include('YAML.rdoc*')
|
46
46
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
47
|
+
rdoc.rdoc_files.include('doc-ja/**/*rdoc.ja')
|
47
48
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/YAML.rdoc
ADDED
@@ -0,0 +1,197 @@
|
|
1
|
+
= YAML for Snarl::SNP.load(yaml)
|
2
|
+
|
3
|
+
NOTE: YAML is linehead-space-sensitive. When you run samples, remove 4 white spaces from each line head.
|
4
|
+
|
5
|
+
- Values from YAML are always overwriten by Snarl::SNP methods' arguments.
|
6
|
+
|
7
|
+
snp = Snarl::SNP.load(<<YAML)
|
8
|
+
title : yaml title!
|
9
|
+
YAML
|
10
|
+
snp.notification(:title => 'new title') #=> "new title"
|
11
|
+
|
12
|
+
- nil value / empty value / undef key are considerd as 'it is not set on yaml'.
|
13
|
+
|
14
|
+
- class : nil
|
15
|
+
- class : []
|
16
|
+
(there is no 'class')
|
17
|
+
|
18
|
+
== text and title
|
19
|
+
|
20
|
+
If
|
21
|
+
- there is "text : ..." field or "title : ..." field
|
22
|
+
and
|
23
|
+
- there is no "notification : ..." field,
|
24
|
+
Snarl::SNP.load(yaml) makes notification massage with "text :", "title :", "timeout :", "icon :" and "class :".
|
25
|
+
|
26
|
+
=== host
|
27
|
+
|
28
|
+
host : 192.168.0.2
|
29
|
+
|
30
|
+
The hostname/address of Snarl Machine. (This is used as TCPSocket.open(host)).
|
31
|
+
If nothing is set on yaml and methods arguments, last 'host' value is 127.0.0.1.
|
32
|
+
|
33
|
+
=== port
|
34
|
+
|
35
|
+
port : 9887
|
36
|
+
|
37
|
+
The port number which Snarl uses. 9887. (This is used as TCPSocket.open(host, port)).
|
38
|
+
If nothing is set on yaml and methods arguments, last 'port' value is 9887.
|
39
|
+
|
40
|
+
=== app, name, register
|
41
|
+
|
42
|
+
app : Ruby-Snarl
|
43
|
+
|
44
|
+
The application name. This is shown on Snarl setting window. (This is used as Snarl::SNP#register(app))
|
45
|
+
If nothing is set on yaml and methods arguments, last 'app' value is nil. "anonymous application message".
|
46
|
+
|
47
|
+
=== class, add_class
|
48
|
+
|
49
|
+
class :
|
50
|
+
- [classname1, classtitle1]
|
51
|
+
- [classname2, classtitle2]
|
52
|
+
|
53
|
+
The classname and classtitle alias.
|
54
|
+
The classname is used for classifing your message.
|
55
|
+
The classtitle is shown on Snarl setting window(it is optional. if nil, classname is shown).
|
56
|
+
(This is used as SNP#add_class(classname1, classtitle1) and SNP#notification(:text => text, :class => classname1))
|
57
|
+
If nothing is set on yaml and methods arguments, last 'class' value is nil. "anonymous class message".
|
58
|
+
|
59
|
+
class : classname1
|
60
|
+
|
61
|
+
class : [classname1, classname2, classname3]
|
62
|
+
|
63
|
+
class :
|
64
|
+
- [classname1, classtitle1]
|
65
|
+
or
|
66
|
+
class : [[classname1, classtitle1]]
|
67
|
+
|
68
|
+
=== title
|
69
|
+
|
70
|
+
title : message title
|
71
|
+
|
72
|
+
The title of popup messages.
|
73
|
+
If there is no "notification : ..." field, SNP#notification makes message with this value as title.
|
74
|
+
When "notification : ..." has no 'title' key, SNP#notification uses this value as notification title.
|
75
|
+
If nothing is set on yaml and methods arguments, last 'title' value is Ruby-Snarl.
|
76
|
+
|
77
|
+
=== text, message
|
78
|
+
|
79
|
+
text : hello, Ruby!
|
80
|
+
|
81
|
+
The body of popup messages.
|
82
|
+
If there is no "notification : ..." field, SNP#notification makes message with this value as body text.
|
83
|
+
When "notification : ..." has no 'text' key, SNP#notification uses this value as notification body.
|
84
|
+
If nothing is set on yaml and methods arguments, last 'body' value is nil. empty body message.
|
85
|
+
|
86
|
+
=== timeout, sec
|
87
|
+
|
88
|
+
timeout : 30
|
89
|
+
|
90
|
+
The "timeout" seconds of popups. After this seconds, popups are automatically closed.
|
91
|
+
If SNP#notification makes message for lack of "notification : ..." field, SNP#notification uses this value as timeout.
|
92
|
+
When "notification : ..." has no 'timeout' key, SNP#notification uses this value as notification timeout.
|
93
|
+
"timeout : 0" makes popups "sticky". popups never close by time.
|
94
|
+
If nothing is set on yaml and methods arguments, last 'timeout' value is 10.
|
95
|
+
|
96
|
+
=== sticky
|
97
|
+
|
98
|
+
sticky : true
|
99
|
+
|
100
|
+
makes popups "sticky". It is same to "timeout : 0". It is mainly for snarl_snp command. Do not use.
|
101
|
+
If nothing is set on yaml, sticky is false.
|
102
|
+
|
103
|
+
=== icon
|
104
|
+
|
105
|
+
icon : http://exsample.com/good.png
|
106
|
+
|
107
|
+
The icon path of popups. The popup has this images as icon.
|
108
|
+
If SNP#notification makes message for lack of "notification : ..." field, SNP#notification uses this value as icon.
|
109
|
+
When "notification : ..." has no 'icon' key, SNP#notification uses this value as notification icon.
|
110
|
+
|
111
|
+
The value is URL or filepath. The filepath should be accessable an absolute/relative path on Snarl machine.
|
112
|
+
Image types are Jpeg, PNG, GIF, and so on.
|
113
|
+
If nothing is set on yaml and methods arguments, last 'icon' value is nil. The icon will be a style's default icon.
|
114
|
+
|
115
|
+
=== notification
|
116
|
+
|
117
|
+
notifitation : [title, text, icon.jpg, 9, classname]
|
118
|
+
or
|
119
|
+
notifitation :
|
120
|
+
title : title
|
121
|
+
text : text
|
122
|
+
icon : icon.jpg
|
123
|
+
timeout : 9
|
124
|
+
class : classname
|
125
|
+
or
|
126
|
+
notifitation :
|
127
|
+
-
|
128
|
+
title : 1st message
|
129
|
+
text : one
|
130
|
+
-
|
131
|
+
title : 2nd message
|
132
|
+
text : two
|
133
|
+
- { title : 3rd message, title : three }
|
134
|
+
|
135
|
+
The popup messages. This is for Snarl::SNP#notification(params). params is Array or Hash above.
|
136
|
+
|
137
|
+
If notification field has no key of 'title', 'text', 'icon', 'timeout', and top fields has same name one, SNP#notification uses top fields' value as its arguments.
|
138
|
+
|
139
|
+
# actually same message
|
140
|
+
notifitation :
|
141
|
+
title : title
|
142
|
+
text : text
|
143
|
+
timeout : 9
|
144
|
+
|
145
|
+
title : title
|
146
|
+
timeout : 9
|
147
|
+
notifitation :
|
148
|
+
text : text
|
149
|
+
|
150
|
+
If there is no "notifitation : " field (and no "title : " and "text :" field), Snarl::SNP.load(yaml) sends no notifitation message.
|
151
|
+
|
152
|
+
=== unregister
|
153
|
+
|
154
|
+
unregister : true
|
155
|
+
|
156
|
+
removes application from Snarl setting window.
|
157
|
+
If true, application is removed from Snarl settings after closing Snarl::SNP.load(yaml){...} block,
|
158
|
+
and users are not able to change application settings.
|
159
|
+
|
160
|
+
=== logfile
|
161
|
+
|
162
|
+
logfile : $stdout
|
163
|
+
|
164
|
+
SNP logs are put to this path's file. Logger.new(logfile).
|
165
|
+
YAML value is always String, but '$stdout' and '$stderr' are treated as Ruby's $stdout IO and $stderr IO.
|
166
|
+
If you set "logfile : $stdout", SNP logs are printed to standard output.
|
167
|
+
If you set "logfile : $stderr", SNP logs are printed to standard error.
|
168
|
+
|
169
|
+
If nothing is set on yaml and methods arguments, last 'logfile' value is nil. No log messages are printed.
|
170
|
+
|
171
|
+
=== loglevel
|
172
|
+
|
173
|
+
loglevel : INFO
|
174
|
+
|
175
|
+
The loglevel for logger output. "logfile : " field is required. (or, SNP.load(yaml, logger) is also ok)
|
176
|
+
The values are DEBUG, INFO, WARN, ERROR, FATAL (they are not case-sensitive) or 0, 1, 2, 3, 4.
|
177
|
+
|
178
|
+
ERROR (or 3) :: Snarl error, TCPSocket connection fail
|
179
|
+
INFO (or 1) :: ERROR, and SNP response code
|
180
|
+
DEBUG (or 0) :: INFO, and sent string to Snarl
|
181
|
+
|
182
|
+
If loglevel is nil/unset (and there is any logger), loglevel is DEBUG. All logs are printed.
|
183
|
+
|
184
|
+
=== iconset
|
185
|
+
|
186
|
+
iconset :
|
187
|
+
ok : ./green.jpg
|
188
|
+
fail : ./red.jpg
|
189
|
+
notification :
|
190
|
+
title : Good!
|
191
|
+
text : no errors.
|
192
|
+
icon : ok
|
193
|
+
|
194
|
+
The icons for notification.
|
195
|
+
It works as "icon : ./green.jpg", and
|
196
|
+
snp.notification(:title => title, :text => text, :icon => iconset['ok'])
|
197
|
+
.
|
data/bin/snarl_snp
ADDED
@@ -0,0 +1,112 @@
|
|
1
|
+
#!/usr/local/bin/ruby
|
2
|
+
require 'optparse'
|
3
|
+
require 'yaml'
|
4
|
+
$LOAD_PATH.unshift(File.join(File.dirname(File.expand_path(__FILE__)), '/../lib/'))
|
5
|
+
require 'snarl/snp'
|
6
|
+
|
7
|
+
class SNPBin
|
8
|
+
|
9
|
+
BINCMD_OPTION = {
|
10
|
+
"host" => {
|
11
|
+
:opt => ['-H host', '--host=host'],
|
12
|
+
:help => "the host address to send notification message. if you run on Snarl machine, set 'localhost' or '127.0.0.1'. Default: localhost"
|
13
|
+
},
|
14
|
+
"port" => {
|
15
|
+
:opt => ['-p port', '--port=port'],
|
16
|
+
:help => "the port to send notification message. SNP default is 9887. Default: 9887"
|
17
|
+
},
|
18
|
+
"app" => {
|
19
|
+
:opt => ['-a app', '--app=app'],
|
20
|
+
:help => "the name of your messaging program. this is shown on Snarl Setting window until unregister. Default: (nothing, anonymous application)"
|
21
|
+
},
|
22
|
+
"class" => {
|
23
|
+
:opt => ['-c class', '--class=class',],
|
24
|
+
:help => "the class type of message. same classed message is treated as a 'same class' message. Default:(nothing, anonymous class)"
|
25
|
+
},
|
26
|
+
"title" => {
|
27
|
+
:opt => ['-t title', '--title=title'],
|
28
|
+
:help => "the notification message title. Default: Ruby-Snarl" # default maybe
|
29
|
+
},
|
30
|
+
"timeout" => {
|
31
|
+
:opt => ['-s sec', '-d sec', '--span=sec', '--timeout=sec', '--duration=sec'],
|
32
|
+
:help => "the popup duration time(seccond). when sec=0, popup is sticky (never automatically closed). Default: 10"
|
33
|
+
},
|
34
|
+
"sticky" => {
|
35
|
+
:opt => ['--sticky'],
|
36
|
+
:help => "make notification message 'sticky'. the message popup never closes automatically. -s sec option are ignored."
|
37
|
+
},
|
38
|
+
"icon" => {
|
39
|
+
:opt => ['--icon=url_or_path'],
|
40
|
+
:help => "the icon path for notification message. http URL or absolute path or relative path (relative to Snarl work dir). image type are JPEG, GIF, PNG. Default: (nothing, default icon of Snarl style)"
|
41
|
+
},
|
42
|
+
"text" => {
|
43
|
+
:opt => ['-m message_text', '--message=message_text', '--text=message_text'],
|
44
|
+
:help => "the notification message text."
|
45
|
+
},
|
46
|
+
# "notification" => ['-n notification_subcmd_set'] # TODO:
|
47
|
+
"unregister" => {
|
48
|
+
:opt => ['-u', '--unregister'],
|
49
|
+
:help => "unregister application on Snarl setting after notification. Default (unset)"
|
50
|
+
},
|
51
|
+
"verbose" => {
|
52
|
+
:opt => ['--verbose'],
|
53
|
+
:help => "print SNP log to stdout"
|
54
|
+
},
|
55
|
+
"yaml" => {
|
56
|
+
:opt => ['-y yaml_or_path', '--yaml=yaml_or_path', '--config=yaml_or_path'],
|
57
|
+
:help => "read and set paramater from YAML file or YAML string. for yaml details, see YAML.rdoc"
|
58
|
+
},
|
59
|
+
}
|
60
|
+
# --yaml #=> YAML String / --config #=> YAML path
|
61
|
+
# --silent / --quiet / --verbose
|
62
|
+
|
63
|
+
def initialize
|
64
|
+
@argv_option = {}
|
65
|
+
@config = {}
|
66
|
+
end
|
67
|
+
|
68
|
+
attr_reader :argv_option, :config
|
69
|
+
|
70
|
+
def parse_argv
|
71
|
+
OptionParser.new do |opt|
|
72
|
+
BINCMD_OPTION.each do |name, data|
|
73
|
+
instance_eval "opt.on(*(#{data[:opt].inspect} << \"#{data[:help]}\")){|v| @argv_option[\"#{name}\"] = v}"
|
74
|
+
end
|
75
|
+
opt.parse!(ARGV)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def merge_yaml_from_argvopt
|
80
|
+
if @argv_option['yaml'] then
|
81
|
+
@config.update(YAML.load(File.open(@argv_option['yaml']){|f| f.read}))
|
82
|
+
@argv_option.delete('yaml')
|
83
|
+
end
|
84
|
+
end
|
85
|
+
def merge_all_argvopt_to_config
|
86
|
+
@config.update(@argv_option)
|
87
|
+
end
|
88
|
+
def pick_logger
|
89
|
+
if @argv_option['verbose'] then
|
90
|
+
require 'logger'
|
91
|
+
@logger = Logger.new($stdout)
|
92
|
+
@argv_option.delete('verbose')
|
93
|
+
else
|
94
|
+
@logger = nil
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def exec_snplib
|
99
|
+
# oh reconvert to yaml
|
100
|
+
Snarl::SNP.load(@config.to_yaml, @logger)
|
101
|
+
end
|
102
|
+
|
103
|
+
def run
|
104
|
+
parse_argv
|
105
|
+
merge_yaml_from_argvopt
|
106
|
+
pick_logger
|
107
|
+
merge_all_argvopt_to_config
|
108
|
+
exec_snplib
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
SNPBin.new.run unless defined?(TEST_SNARL_SNP_BIN_SPEC)
|