ak47 0.2.1 → 0.2.2
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/README.md +10 -1
- data/lib/ak47.rb +7 -2
- data/lib/ak47/runner.rb +10 -7
- data/lib/ak47/version.rb +1 -1
- metadata +4 -4
data/README.md
CHANGED
@@ -26,4 +26,13 @@ and enter your command, use `--` to seperate options from your command. For exam
|
|
26
26
|
|
27
27
|
ak47 -i2 test -- rake test
|
28
28
|
|
29
|
-
This will watch your `test` directory and wait two seconds between restarts.
|
29
|
+
This will watch your `test` directory and wait two seconds between restarts.
|
30
|
+
|
31
|
+
### Programmatic Usage
|
32
|
+
|
33
|
+
You can use Ak47 within a Ruby program in the following way.
|
34
|
+
|
35
|
+
require 'ak47'
|
36
|
+
Ak47 {
|
37
|
+
puts "Reloading!"
|
38
|
+
}
|
data/lib/ak47.rb
CHANGED
@@ -17,7 +17,7 @@ module Ak47
|
|
17
17
|
[[], argv]
|
18
18
|
end
|
19
19
|
|
20
|
-
interval, maximum, error_time =
|
20
|
+
interval, maximum, error_time = nil, nil, 5
|
21
21
|
optparse = OptionParser.new do |opts|
|
22
22
|
opts.banner = "Usage: ak47 [cmd] / ak47 [options] -- [cmd]"
|
23
23
|
opts.on( '-i', '--interval [FLOAT]', 'Interval before restarting' ) do |i|
|
@@ -48,9 +48,14 @@ module Ak47
|
|
48
48
|
puts
|
49
49
|
raise "No command supplied"
|
50
50
|
end
|
51
|
-
Runner.new(watch_dirs
|
51
|
+
Runner.new(:watch_dirs => watch_dirs, :maximum => maximum, :interval => interval, :error_time => error_time, :command => command) { exec(command) }.start
|
52
52
|
rescue
|
53
53
|
puts $!.message.red
|
54
|
+
exit 1
|
54
55
|
end
|
55
56
|
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def Ak47(opts = nil, &blk)
|
60
|
+
Ak47::Runner.new(opts, &blk).start
|
56
61
|
end
|
data/lib/ak47/runner.rb
CHANGED
@@ -1,9 +1,14 @@
|
|
1
1
|
module Ak47
|
2
2
|
class Runner
|
3
|
-
attr_reader :watch_dirs, :
|
3
|
+
attr_reader :watch_dirs, :maximum, :interval, :error_time, :command
|
4
4
|
|
5
|
-
def initialize(
|
6
|
-
@watch_dirs
|
5
|
+
def initialize(opts = nil, &blk)
|
6
|
+
@watch_dirs = Array(opts && opts[:watch_dirs] || Dir.pwd)
|
7
|
+
@maximum = opts && opts[:maximum]
|
8
|
+
@interval = opts && opts[:interval] || 0.01
|
9
|
+
@error_time = opts && opts[:error_time] || 5
|
10
|
+
@command = opts && opts[:command]
|
11
|
+
@blk = blk
|
7
12
|
end
|
8
13
|
|
9
14
|
def start
|
@@ -19,13 +24,11 @@ module Ak47
|
|
19
24
|
loop do
|
20
25
|
begin
|
21
26
|
puts "[Running... #{Time.new.to_s}]".yellow
|
22
|
-
puts "# #{command}"
|
27
|
+
puts "# #{command}" if command
|
23
28
|
if maximum
|
24
29
|
@thread = Thread.new { sleep maximum; Thread.main.raise Reload, "Cancelled due to maximum time" }
|
25
30
|
end
|
26
|
-
@pid = fork
|
27
|
-
exec(command)
|
28
|
-
}
|
31
|
+
@pid = fork(&@blk)
|
29
32
|
_, status = Process.waitpid2(@pid)
|
30
33
|
@thread.kill if @thread
|
31
34
|
if status.success?
|
data/lib/ak47/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ak47
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 2
|
10
|
+
version: 0.2.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Josh Hull
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-01-
|
18
|
+
date: 2012-01-08 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: guard
|