filewatcher 0.1.5 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +43 -7
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/bin/filewatcher +33 -11
- data/test/test_filewatcher.rb +1 -2
- metadata +41 -59
data/README.rdoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
= Filewatcher
|
2
2
|
|
3
|
-
Simple file watcher. Monitors changes in files by polling
|
3
|
+
Simple file watcher. Monitors changes in files by polling.
|
4
4
|
|
5
5
|
= Command line utility
|
6
6
|
|
@@ -12,16 +12,47 @@ Where
|
|
12
12
|
filename: filename(s) to scan.
|
13
13
|
shell command: shell command to execute when file changes on disk.
|
14
14
|
|
15
|
-
Examples:
|
16
|
-
|
17
|
-
|
15
|
+
= Examples:
|
16
|
+
|
17
|
+
Run the echo command when the file myfile is changed:
|
18
|
+
|
19
|
+
$ filewatcher "myfile" "echo 'myfile has changed'"
|
20
|
+
|
21
|
+
Run the ruby script when it is changed:
|
22
|
+
|
23
|
+
$ filewatcher -e ruby-script.rb
|
24
|
+
|
25
|
+
Works with ruby, perl, python and awk by detecting file extensions.
|
26
|
+
|
27
|
+
At 2 seconds intervall check all files matching *.rb and ../src/*.rb, and run "ruby run_tests.rb".
|
28
|
+
|
29
|
+
$ filewatcher -i 2 "*.rb ../src/*.rb" "ruby run_tests.rb"
|
30
|
+
|
31
|
+
= Globbing
|
32
|
+
|
33
|
+
Print a list of all files matching *.css at start and the:
|
34
|
+
|
35
|
+
$ filewatcher -l *.css
|
36
|
+
|
37
|
+
= Available enviroment variables
|
38
|
+
|
39
|
+
The environment variable $FILENAME is available in the command. On unix like systems the command
|
40
|
+
has to be enclosed in single quotes. To run node whenever a javascript file is update:
|
41
|
+
|
42
|
+
$ filewatcher *.js 'node $FILENAME'
|
43
|
+
|
44
|
+
The environment variables $FILEPATH and $FILEDIR is also available.
|
18
45
|
|
19
46
|
Options:
|
20
|
-
--interval, -i <f>: Interval to scan filesystem. Defaults to 0.5 seconds.
|
47
|
+
--interval, -i <f>: Interval to scan filesystem. Defaults to 0.5 seconds. (Default: 0.5)
|
48
|
+
--exec, -e: Execute file as a script when file is updated.
|
49
|
+
--recurse, -r <s>: Recurse into the directory, watching everything matching 'expression'
|
50
|
+
--include, -n <s>: Include files (default: *)
|
51
|
+
--exclude, -x <s>: Exclude file(s) matching (default: "")
|
52
|
+
--list, -l: Print name of files being watched
|
21
53
|
--version, -v: Print version and exit
|
22
54
|
--help, -h: Show this message
|
23
55
|
|
24
|
-
|
25
56
|
= Install
|
26
57
|
|
27
58
|
sudo gem install filewatcher
|
@@ -54,6 +85,9 @@ To check for changes more often than once every second:
|
|
54
85
|
puts "Updated " + filename
|
55
86
|
end
|
56
87
|
|
88
|
+
= TODO
|
89
|
+
|
90
|
+
The Ruby API is fairly well tested but the command line program is buggy at the time beeing.
|
57
91
|
|
58
92
|
= Credits
|
59
93
|
|
@@ -61,6 +95,8 @@ Code inspired by Tom Lieber's blogg posting: http://alltom.com/pages/detecting-f
|
|
61
95
|
|
62
96
|
Find method by c00lrguy: http://snippets.dzone.com/posts/show/5457
|
63
97
|
|
98
|
+
Globbing by Kristoffer Roupé https://github.com/kitofr
|
99
|
+
|
64
100
|
== Note on Patches/Pull Requests
|
65
101
|
|
66
102
|
* Fork the project.
|
@@ -74,4 +110,4 @@ Find method by c00lrguy: http://snippets.dzone.com/posts/show/5457
|
|
74
110
|
|
75
111
|
== Copyright
|
76
112
|
|
77
|
-
Copyright (c) 2011 Thomas Flemming. See LICENSE for details.
|
113
|
+
Copyright (c) 2011 - 2013 Thomas Flemming. See LICENSE for details.
|
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.8
|
data/bin/filewatcher
CHANGED
@@ -2,9 +2,10 @@
|
|
2
2
|
require 'rubygems'
|
3
3
|
require 'filewatcher'
|
4
4
|
require 'trollop'
|
5
|
+
require 'pathname'
|
5
6
|
|
6
7
|
options = Trollop::options do
|
7
|
-
version "filewatcher, version 0.1.
|
8
|
+
version "filewatcher, version 0.1.8 by Thomas Flemming 2011"
|
8
9
|
banner <<-EOS
|
9
10
|
Filewatcher scans filesystem and execute shell commands when files changes.
|
10
11
|
|
@@ -16,33 +17,54 @@ Where
|
|
16
17
|
|
17
18
|
Examples:
|
18
19
|
filewatcher "myfile" "echo 'myfile has changed'"
|
19
|
-
|
20
|
+
filewatcher -i 2 "*.rb ../src/*.rb" "ruby run_tests.rb"
|
20
21
|
|
21
22
|
Options:
|
22
23
|
EOS
|
23
24
|
|
24
25
|
opt :interval, "Interval to scan filesystem. Defaults to 0.5 seconds.", :short => 'i', :type => :float, :default => 0.5
|
25
|
-
opt :
|
26
|
+
opt :exec, "Execute file as a script when file is updated.", :short => 'e', :type => :boolean, :default => false
|
27
|
+
opt :recurse, "Recurse into the directory, watching everything matching 'expression'", :short => 'r', :type => :string
|
28
|
+
opt :include, "Include files", :type => :string, :default => "*"
|
29
|
+
opt :exclude, "Exclude file(s) matching", :type => :string, :default => ""
|
30
|
+
opt :list, "Print name of files being watched"
|
26
31
|
end
|
27
32
|
|
28
|
-
Trollop::die "must have
|
33
|
+
Trollop::die "must have at least one argument" if(ARGV.size == 0)
|
29
34
|
|
30
35
|
files = []
|
31
|
-
ARGV[0].
|
32
|
-
|
33
|
-
|
34
|
-
|
36
|
+
ARGV[0...-1].each do |a|
|
37
|
+
files << a
|
38
|
+
end
|
39
|
+
|
40
|
+
if(ARGV.length == 1)
|
41
|
+
files << ARGV[0]
|
42
|
+
end
|
43
|
+
|
44
|
+
if(options[:recurse])
|
45
|
+
base = File.join(options[:recurse], "**")
|
46
|
+
inc = Dir.glob(File.join(base, options[:include]))
|
47
|
+
exc = Dir.glob(File.join(base, options[:exclude]))
|
48
|
+
files = inc - exc
|
49
|
+
end
|
50
|
+
|
51
|
+
if(options[:list])
|
52
|
+
puts "watching:", files.inspect
|
35
53
|
end
|
36
54
|
|
37
55
|
runners = {".py" => "python", ".rb" => "ruby", ".pl" => "perl", ".awk" => "awk"}
|
38
56
|
|
39
57
|
FileWatcher.new(files).watch(options[:interval]) do |filename|
|
40
|
-
if(options[:
|
58
|
+
if(options[:exec])
|
41
59
|
extension = filename[/(\.[^\.]*)/,0]
|
42
60
|
runner = runners[extension].to_s
|
43
61
|
system(runner + " " + filename)
|
44
|
-
elsif(ARGV[1])then
|
45
|
-
|
62
|
+
elsif(ARGV[-1])then
|
63
|
+
path = Pathname.new(filename)
|
64
|
+
ENV['FILENAME'] = path.to_s
|
65
|
+
ENV['FILEPATH'] = path.realpath.to_s
|
66
|
+
ENV['FILEDIR'] = path.parent.realpath.to_s
|
67
|
+
system(ARGV[-1])
|
46
68
|
else
|
47
69
|
puts "file updated: " + filename
|
48
70
|
end
|
data/test/test_filewatcher.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '.'))
|
1
2
|
require 'helper'
|
2
3
|
|
3
4
|
class TestFilewatcher < Test::Unit::TestCase
|
@@ -14,7 +15,6 @@ class TestFilewatcher < Test::Unit::TestCase
|
|
14
15
|
|
15
16
|
end
|
16
17
|
|
17
|
-
|
18
18
|
# should "should detect changes in files" do
|
19
19
|
|
20
20
|
# @pid = fork do
|
@@ -36,4 +36,3 @@ class TestFilewatcher < Test::Unit::TestCase
|
|
36
36
|
# end
|
37
37
|
|
38
38
|
end
|
39
|
-
|
metadata
CHANGED
@@ -1,58 +1,47 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: filewatcher
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 1
|
8
|
-
- 5
|
9
|
-
version: 0.1.5
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.8
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Thomas Flemming
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2013-01-10 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: thoughtbot-shoulda
|
22
|
-
|
23
|
-
|
24
|
-
requirements:
|
25
|
-
- -
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
|
28
|
-
- 0
|
29
|
-
version: "0"
|
16
|
+
requirement: &70212885464580 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
30
22
|
type: :development
|
31
|
-
version_requirements: *id001
|
32
|
-
- !ruby/object:Gem::Dependency
|
33
|
-
name: trollop
|
34
23
|
prerelease: false
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
24
|
+
version_requirements: *70212885464580
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: trollop
|
27
|
+
requirement: &70212885464060 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
43
32
|
version: 1.16.2
|
44
33
|
type: :runtime
|
45
|
-
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70212885464060
|
46
36
|
description: Detect changes in files.
|
47
37
|
email: thomas.flemming@gmail.com
|
48
|
-
executables:
|
38
|
+
executables:
|
49
39
|
- filewatcher
|
50
40
|
extensions: []
|
51
|
-
|
52
|
-
extra_rdoc_files:
|
41
|
+
extra_rdoc_files:
|
53
42
|
- LICENSE
|
54
43
|
- README.rdoc
|
55
|
-
files:
|
44
|
+
files:
|
56
45
|
- LICENSE
|
57
46
|
- README.rdoc
|
58
47
|
- Rakefile
|
@@ -61,35 +50,28 @@ files:
|
|
61
50
|
- lib/filewatcher.rb
|
62
51
|
- test/helper.rb
|
63
52
|
- test/test_filewatcher.rb
|
64
|
-
has_rdoc: true
|
65
53
|
homepage: http://github.com/thomasfl/filewatcher
|
66
54
|
licenses: []
|
67
|
-
|
68
55
|
post_install_message:
|
69
56
|
rdoc_options: []
|
70
|
-
|
71
|
-
require_paths:
|
57
|
+
require_paths:
|
72
58
|
- lib
|
73
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
requirements:
|
82
|
-
- -
|
83
|
-
- !ruby/object:Gem::Version
|
84
|
-
|
85
|
-
- 0
|
86
|
-
version: "0"
|
59
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
60
|
+
none: false
|
61
|
+
requirements:
|
62
|
+
- - ! '>='
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '0'
|
65
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
87
71
|
requirements: []
|
88
|
-
|
89
72
|
rubyforge_project:
|
90
|
-
rubygems_version: 1.
|
73
|
+
rubygems_version: 1.8.11
|
91
74
|
signing_key:
|
92
75
|
specification_version: 3
|
93
76
|
summary: Simple filewatcher.
|
94
77
|
test_files: []
|
95
|
-
|