fswatch 0.0.2 → 0.0.3
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/lib/fswatch.rb +35 -25
- data/lib/fswatch/version.rb +1 -1
- metadata +7 -7
data/lib/fswatch.rb
CHANGED
@@ -9,48 +9,58 @@ include Term::ANSIColor
|
|
9
9
|
|
10
10
|
module FSWatch
|
11
11
|
|
12
|
-
|
13
|
-
version "fswatch - #{VERSION} (c) 2012 w.k.macura - Released under BSD license"
|
14
|
-
banner <<-EOS
|
15
|
-
A utility for triggering a command on file system change.
|
16
|
-
EOS
|
17
|
-
|
18
|
-
opt :dir, "the directory to watch", :default => '.'
|
19
|
-
opt :throttle, "only allow one fsevent in the given amount of seconds", :default => 1
|
20
|
-
opt :kill, "forcibly restart the command if it's still running during an fs trigger", :short => :x
|
21
|
-
opt :paths, "append the changed paths when calling the command"
|
22
|
-
end
|
23
|
-
|
24
|
-
if opts[:dir] == '.'
|
25
|
-
dir = Dir.pwd
|
26
|
-
else
|
27
|
-
dir = opts[:dir]
|
28
|
-
end
|
29
|
-
|
30
|
-
fsevent = FSEvent.new
|
31
|
-
fsevent.watch dir, { :latency => opts[:throttle], :no_defer => true } do |directories|
|
12
|
+
def FSWatch.run_command(directories)
|
32
13
|
print red, "\n\n--- Changed: ", bold, blue, directories.inspect, reset, "\n"
|
33
14
|
if @processPid
|
34
15
|
status = Process.wait(@processPid, Process::WNOHANG)
|
35
16
|
if status == nil
|
36
|
-
|
37
|
-
|
17
|
+
print red, "!!! Killing #{@processPid}", reset, "\n"
|
18
|
+
Process.kill("KILL", @processPid)
|
38
19
|
end
|
39
|
-
|
20
|
+
end
|
40
21
|
|
41
22
|
command = ARGV.join(' ')
|
42
23
|
command.sub!("@fspathscolon", directories.join(':'))
|
43
24
|
command.sub!("@fspathscomma", directories.join(','))
|
44
25
|
command.sub!("@fspaths", directories.join(' '))
|
45
26
|
|
46
|
-
if opts[:paths]
|
47
|
-
|
27
|
+
if @opts[:paths]
|
28
|
+
command << ' ' << directories.join(' ')
|
48
29
|
end
|
49
30
|
|
50
31
|
@processPid = fork {
|
51
32
|
system(command)
|
52
33
|
}
|
53
34
|
end
|
35
|
+
|
36
|
+
|
37
|
+
@opts = Trollop::options do
|
38
|
+
version "fswatch - #{VERSION} (c) 2012 w.k.macura - Released under BSD license"
|
39
|
+
banner <<-EOS
|
40
|
+
A utility for triggering a command on file system change.
|
41
|
+
EOS
|
42
|
+
|
43
|
+
opt :start, "whether the command should be executed immediately on start", :default => true
|
44
|
+
opt :dir, "the directory to watch", :default => '.'
|
45
|
+
opt :throttle, "only allow one fsevent in the given amount of seconds", :default => 1
|
46
|
+
opt :kill, "forcibly restart the command if it's still running during an fs trigger", :short => :x
|
47
|
+
opt :paths, "append the changed paths when calling the command"
|
48
|
+
end
|
49
|
+
|
50
|
+
if @opts[:dir] == '.'
|
51
|
+
dir = Dir.pwd
|
52
|
+
else
|
53
|
+
dir = @opts[:dir]
|
54
|
+
end
|
55
|
+
|
56
|
+
if @opts[:start]
|
57
|
+
run_command([])
|
58
|
+
end
|
59
|
+
|
60
|
+
fsevent = FSEvent.new
|
61
|
+
fsevent.watch dir, { :latency => @opts[:throttle], :no_defer => true } do |directories|
|
62
|
+
run_command(directories)
|
63
|
+
end
|
54
64
|
|
55
65
|
fsevent.run
|
56
66
|
end
|
data/lib/fswatch/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fswatch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-01-26 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rb-fsevent
|
16
|
-
requirement: &
|
16
|
+
requirement: &70152326580060 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70152326580060
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: trollop
|
27
|
-
requirement: &
|
27
|
+
requirement: &70152326579400 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70152326579400
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: term-ansicolor
|
38
|
-
requirement: &
|
38
|
+
requirement: &70152326578160 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70152326578160
|
47
47
|
description: ''
|
48
48
|
email:
|
49
49
|
- wiktor@tumblr.com
|