babascript 0.2.6 → 0.3.0
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.
- checksums.yaml +4 -4
- data/History.txt +4 -0
- data/README.md +32 -3
- data/bin/baba +15 -7
- data/bin/baba-vm +9 -3
- data/bin/ibb +12 -5
- data/lib/babascript/baba.rb +16 -10
- data/lib/babascript/options.rb +4 -7
- data/lib/babascript/version.rb +1 -1
- data/samples/sample.rb +1 -1
- data/test/test_babascript.rb +5 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a293bf20186ddf403fc4022f152840758f7f5b81
|
4
|
+
data.tar.gz: d5bbc70c8519861c00a77a7e723a8cae27ba8a1e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 63efbea184e3b2cf66ac5dbb0a068cc6db2099a260092bc4edd87f94d40bde0a5ec70e25d5b0612a52c8a8565e16fa0f4d8ac0eb2a1d64decc1ed8a8f235a3ca
|
7
|
+
data.tar.gz: a8b7f2692fbda07a7865b5e7fba70e180436b4cdc1dda2e76b6bb004e8afb567dfaaffb037529eac4e0159f3c85bfd6dab36cc83d7ef4a251da4e97fa45be533
|
data/History.txt
CHANGED
data/README.md
CHANGED
@@ -52,20 +52,49 @@ end
|
|
52
52
|
|
53
53
|
### switch BABA
|
54
54
|
BabaScriptはジョブ通知に[Linda](https://gihtub.com/shokai/linda-base)を使っています。
|
55
|
-
環境変数BABAのデフォルト値は"takumibaba"で、彼のジョブは http://linda.masuilab.org/takumibaba/notifications で確認できます。
|
56
55
|
|
57
|
-
|
56
|
+
クエリーを書き込むタプルスペースのデフォルト値は"takumibaba"で、彼のジョブは http://linda.masuilab.org/takumibaba/notifications で確認できます。
|
58
57
|
|
59
|
-
|
58
|
+
% baba --base http://example.com --space shokai
|
59
|
+
|
60
|
+
タプルスペース名を"shokai"に、Lindaサーバーをexample.comに切り替えると、以後のジョブの通知先が http://example.com/shokai/notifications になります。
|
61
|
+
|
62
|
+
|
63
|
+
ruby上での書き込み先の変更方法
|
64
|
+
```ruby
|
65
|
+
BabaScript.baba :base => "http://example.com", :space => "shokai" do
|
66
|
+
puts そろそろ起きたほうがいいのでは?
|
67
|
+
end
|
68
|
+
|
69
|
+
```
|
60
70
|
|
61
71
|
|
62
72
|
Test
|
63
73
|
----
|
64
74
|
|
75
|
+
### Install Dependencies
|
76
|
+
|
65
77
|
% gem install bundler
|
66
78
|
% bundle install
|
79
|
+
|
80
|
+
### Manual Test
|
81
|
+
|
82
|
+
Start VM
|
83
|
+
|
84
|
+
% bundle exec bin/baba-vm --space test
|
85
|
+
|
86
|
+
Run samples
|
87
|
+
|
88
|
+
% bundle exec ruby samples/sample.rb
|
89
|
+
|
90
|
+
### Unit Test
|
91
|
+
|
67
92
|
% bundle exec rake test
|
68
93
|
|
94
|
+
or
|
95
|
+
|
96
|
+
% LINDA_BASE=http://localhost:5000 LINDA_SPACE=test bundle exec rake test
|
97
|
+
|
69
98
|
|
70
99
|
Contributing
|
71
100
|
------------
|
data/bin/baba
CHANGED
@@ -6,9 +6,15 @@ $:.unshift File.expand_path '../lib', File.dirname(__FILE__)
|
|
6
6
|
require 'babascript'
|
7
7
|
|
8
8
|
args = ArgsParser.parse ARGV do
|
9
|
-
arg :
|
9
|
+
arg :eval, "evaluate one line script", :alias => :e
|
10
|
+
arg :base, "Linda-Base URL", :default => BabaScript::DEFAULTS[:base]
|
11
|
+
arg :space, "Linda-Space Name", :default => BabaScript::DEFAULTS[:space]
|
10
12
|
arg :version, "show version", :alias => :v
|
11
13
|
arg :help, "show help", :alias => :h
|
14
|
+
|
15
|
+
validate :base, "invalid URL" do |v|
|
16
|
+
v =~ /^https?:\/\/.+$/
|
17
|
+
end
|
12
18
|
end
|
13
19
|
|
14
20
|
binname = File.basename(__FILE__)
|
@@ -18,6 +24,7 @@ if args.has_option? :help
|
|
18
24
|
STDERR.puts "e.g:"
|
19
25
|
STDERR.puts " % #{binname} filename.bb"
|
20
26
|
STDERR.puts " % #{binname} -e 'アイス買ってきてよ'"
|
27
|
+
STDERR.puts " % #{binname} filename.bb -base http://linda-base.example.com -space test"
|
21
28
|
exit 1
|
22
29
|
end
|
23
30
|
|
@@ -26,15 +33,16 @@ if args.has_option? :version
|
|
26
33
|
exit 1
|
27
34
|
end
|
28
35
|
|
29
|
-
if args.has_param? :
|
30
|
-
puts args[:
|
31
|
-
BabaScript.baba do
|
32
|
-
puts instance_eval args[:
|
36
|
+
if args.has_param? :eval
|
37
|
+
puts args[:eval]
|
38
|
+
BabaScript.baba :base => args[:base], :space => args[:space] do
|
39
|
+
puts instance_eval args[:eval]
|
33
40
|
end
|
34
41
|
else
|
35
42
|
args.argv.each do |fname|
|
36
43
|
File.open(fname) do |f|
|
37
|
-
BabaScript::Baba.
|
44
|
+
baba = BabaScript::Baba.new(:base => args[:base], :space => args[:space])
|
45
|
+
baba.run f.read
|
38
46
|
end
|
39
47
|
end
|
40
|
-
end
|
48
|
+
end
|
data/bin/baba-vm
CHANGED
@@ -6,8 +6,14 @@ $:.unshift File.expand_path '../lib', File.dirname(__FILE__)
|
|
6
6
|
require 'babascript'
|
7
7
|
|
8
8
|
args = ArgsParser.parse ARGV do
|
9
|
+
arg :base, "Linda-Base URL", :default => BabaScript::DEFAULTS[:base]
|
10
|
+
arg :space, "Linda-Space Name", :default => BabaScript::DEFAULTS[:space]
|
9
11
|
arg :version, "show version", :alias => :v
|
10
12
|
arg :help, "show help", :alias => :h
|
13
|
+
|
14
|
+
validate :base, "invalid URL" do |v|
|
15
|
+
v =~ /^https?:\/\/.+$/
|
16
|
+
end
|
11
17
|
end
|
12
18
|
|
13
19
|
binname = File.basename(__FILE__)
|
@@ -22,11 +28,11 @@ if args.has_option? :version
|
|
22
28
|
exit 1
|
23
29
|
end
|
24
30
|
|
25
|
-
STDERR.puts "(connecting
|
31
|
+
STDERR.puts "(connecting to #{args[:base]}/#{args[:space]})"
|
26
32
|
|
27
33
|
EM::run do
|
28
|
-
linda = EM::RocketIO::Linda::Client.new
|
29
|
-
ts = linda.tuplespace[
|
34
|
+
linda = EM::RocketIO::Linda::Client.new args[:base]
|
35
|
+
ts = linda.tuplespace[ args[:space] ]
|
30
36
|
|
31
37
|
def take_task_and_run(ts)
|
32
38
|
ts.take [:babascript, :eval] do |tuple|
|
data/bin/ibb
CHANGED
@@ -6,10 +6,15 @@ require 'babascript'
|
|
6
6
|
load "#{ENV['HOME']}/.ibbrc" if File.exists? "#{ENV['HOME']}/.ibbrc"
|
7
7
|
|
8
8
|
args = ArgsParser.parse ARGV do
|
9
|
+
arg :base, "Linda-Base URL", :default => BabaScript::DEFAULTS[:base]
|
10
|
+
arg :space, "Linda-Space Name", :default => BabaScript::DEFAULTS[:space]
|
9
11
|
arg :version, "show version", :alias => :v
|
10
12
|
arg :help, "show help", :alias => :h
|
11
|
-
end
|
12
13
|
|
14
|
+
validate :base, "invalid URL" do |v|
|
15
|
+
v =~ /^https?:\/\/.+$/
|
16
|
+
end
|
17
|
+
end
|
13
18
|
|
14
19
|
binname = File.basename(__FILE__)
|
15
20
|
if args.has_option? :help
|
@@ -23,19 +28,21 @@ if args.has_option? :version
|
|
23
28
|
exit 1
|
24
29
|
end
|
25
30
|
|
26
|
-
STDERR.puts "(connecting
|
31
|
+
STDERR.puts "(connecting to #{args[:base]}/#{args[:space]})"
|
27
32
|
|
28
33
|
EM::run do
|
29
|
-
BabaScript::Baba.
|
34
|
+
baba = BabaScript::Baba.new :base => args[:base], :space => args[:space]
|
35
|
+
|
36
|
+
baba.linda.io.on :connect do
|
30
37
|
STDERR.puts "(#{type} connect!)"
|
31
38
|
end
|
32
39
|
|
33
|
-
|
40
|
+
baba.linda.io.on :disconnect do
|
34
41
|
STDERR.puts
|
35
42
|
STDERR.puts "(#{type} closed)"
|
36
43
|
end
|
37
44
|
|
38
|
-
|
45
|
+
baba.run do
|
39
46
|
print "[IBB] > "
|
40
47
|
while line = STDIN.gets do
|
41
48
|
line.strip!
|
data/lib/babascript/baba.rb
CHANGED
@@ -1,24 +1,30 @@
|
|
1
1
|
module BabaScript
|
2
|
-
def self.baba(&block)
|
3
|
-
self::Baba.run &block if block_given?
|
2
|
+
def self.baba(opts={}, &block)
|
3
|
+
self::Baba.new(opts).run &block if block_given?
|
4
4
|
end
|
5
5
|
|
6
6
|
class Baba
|
7
7
|
|
8
|
-
def
|
9
|
-
|
8
|
+
def initialize(opts)
|
9
|
+
@base = opts[:base] || "http://linda.masuilab.org"
|
10
|
+
@space = opts[:space] || "takumibaba"
|
10
11
|
end
|
11
12
|
|
12
|
-
def
|
13
|
+
def linda
|
14
|
+
@linda ||= EM::RocketIO::Linda::Client.new @base
|
15
|
+
end
|
16
|
+
|
17
|
+
def run(code=nil, &block)
|
13
18
|
raise ArgumentError "block or code require" unless block_given? or code.kind_of? String
|
14
19
|
already_eventmachine_running = EM::reactor_running?
|
20
|
+
this = self
|
15
21
|
EM::run do
|
16
22
|
linda.io.once :connect do
|
17
23
|
EM::defer do
|
18
24
|
if block_given?
|
19
|
-
|
25
|
+
this.instance_eval &block
|
20
26
|
else
|
21
|
-
|
27
|
+
this.instance_eval code
|
22
28
|
end
|
23
29
|
unless already_eventmachine_running
|
24
30
|
EM::add_timer 1 do
|
@@ -30,10 +36,10 @@ module BabaScript
|
|
30
36
|
end
|
31
37
|
end
|
32
38
|
|
33
|
-
def
|
39
|
+
def method_missing(name, *args, &block)
|
34
40
|
cid = __create_callback_id
|
35
41
|
tuple = [:babascript, :eval, name, args, {:callback => cid}]
|
36
|
-
ts = linda.tuplespace[
|
42
|
+
ts = linda.tuplespace[@space]
|
37
43
|
ts.write tuple
|
38
44
|
if block_given?
|
39
45
|
ts.take [:babascript, :return, cid] do |result|
|
@@ -47,7 +53,7 @@ module BabaScript
|
|
47
53
|
end
|
48
54
|
|
49
55
|
private
|
50
|
-
def
|
56
|
+
def __create_callback_id
|
51
57
|
Digest::MD5.hexdigest "#{Time.now.to_i}_#{Time.now.usec}_#{rand 100000}"
|
52
58
|
end
|
53
59
|
end
|
data/lib/babascript/options.rb
CHANGED
data/lib/babascript/version.rb
CHANGED
data/samples/sample.rb
CHANGED
data/test/test_babascript.rb
CHANGED
@@ -3,14 +3,14 @@ require File.expand_path 'test_helper', File.dirname(__FILE__)
|
|
3
3
|
|
4
4
|
class TestBabaScript < MiniTest::Test
|
5
5
|
|
6
|
-
ENV["BABA"] = "test"
|
7
|
-
|
8
6
|
def test_eval_write_tuple
|
7
|
+
base = ENV["LINDA_BASE"] || BabaScript::DEFAULTS[:base]
|
8
|
+
space = ENV["LINDA_SPACE"] || BabaScript::DEFAULTS[:space]
|
9
9
|
tuple_ = nil
|
10
10
|
res_ = nil
|
11
11
|
EM::run do
|
12
|
-
linda = EM::RocketIO::Linda::Client.new
|
13
|
-
ts = linda.tuplespace[
|
12
|
+
linda = EM::RocketIO::Linda::Client.new base
|
13
|
+
ts = linda.tuplespace[ space ]
|
14
14
|
linda.io.once :connect do
|
15
15
|
ts.take [:babascript, :eval] do |tuple|
|
16
16
|
tuple_ = tuple
|
@@ -21,7 +21,7 @@ class TestBabaScript < MiniTest::Test
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
BabaScript.baba do
|
24
|
+
BabaScript.baba :base => base, :space => space do
|
25
25
|
res_ = テスト 1, 2, "かずすけ"
|
26
26
|
end
|
27
27
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: babascript
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sho Hashimoto
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-09-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: em-rocketio-linda-client
|