filewatcher 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -1,32 +1,64 @@
1
1
  = Filewatcher
2
2
 
3
- Simple file watcher. Detect detect changes in files.
3
+ Simple file watcher. Monitors changes in files by polling files.
4
+
5
+ = Command line utility
6
+
7
+
8
+ Filewatcher scans filesystem and execute shell commands when files changes.
9
+
10
+ Usage:
11
+ filewatcher [-i interval] "<filename>" "<shell command>"
12
+ Where
13
+ filename: filename(s) to scan.
14
+ shell command: shell command to execute when file changes on disk.
15
+
16
+ Examples:
17
+ filewatcher "myfile" "echo 'myfile has changed'"
18
+ filewathcer -i 2 "*.rb ../src/*.rb" "ruby run_tests.rb"
19
+
20
+ Options:
21
+ --interval, -i <f>: Interval to scan filesystem. Defaults to 0.5 seconds.
22
+ --version, -v: Print version and exit
23
+ --help, -h: Show this message
24
+
25
+
26
+ = Install
27
+
28
+ sudo gem install filewatcher
29
+
30
+ = API
4
31
 
5
32
  Examples:
6
33
 
34
+ Watch a list of files and directories:
35
+
7
36
  require 'filewatcher'
8
37
 
9
- FileWatcher.new(["file1.txt", "file2.txt"]).watch do |filename|
38
+ FileWatcher.new(["lib/", "Rakefile"]).watch do |filename|
10
39
  puts "Updated " + filename
11
40
  end
12
41
 
13
- Watch directories and files:
42
+ Print the names of files beeing watched before we begin:
14
43
 
15
- FileWatcher.new(["./lib/", "Rakefile", "test"]).watch do |filename|
44
+ FileWatcher.new(["lib/"],"Watching files:").watch do |filename|
16
45
  puts "Updated " + filename
17
46
  end
47
+ => Watching files:
48
+ lib/filewatcher.rb
18
49
 
19
- Print a list of watched files to stdout out before watching files:
50
+ To check for changes more often than once every second:
20
51
 
21
- FileWatcher.new(["./lib/"],"Watching files.").watch do |filename|
52
+ FileWatcher.new(["README.rdoc"]).watch(0.5) do |filename|
22
53
  puts "Updated " + filename
23
54
  end
24
55
 
25
- To check for changes more often than once every second second:
26
56
 
27
- FileWatcher.new(["./lib/"],"Watching files.").watch(0.5) do |filename|
28
- puts "Updated " + filename
29
- end
57
+ = Credits
58
+
59
+ Code inspired by Tom Lieber's blogg posting: http://alltom.com/pages/detecting-file-changes-with-ruby
60
+
61
+ Find method by c00lrguy: http://snippets.dzone.com/posts/show/5457
30
62
 
31
63
  == Note on Patches/Pull Requests
32
64
 
data/Rakefile CHANGED
@@ -6,9 +6,10 @@ begin
6
6
  Jeweler::Tasks.new do |gem|
7
7
  gem.name = "filewatcher"
8
8
  gem.summary = %Q{Simple filewatcher.}
9
- gem.description = %Q{Detect detect changes in files.}
9
+ gem.description = %Q{Detect changes in files.}
10
10
  gem.email = "thomas.flemming@gmail.com"
11
11
  gem.homepage = "http://github.com/thomasfl/filewatcher"
12
+ gem.executables = ["filewatcher"]
12
13
  gem.authors = ["Thomas Flemming"]
13
14
  gem.add_development_dependency "thoughtbot-shoulda", ">= 0"
14
15
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
data/bin/filewatcher ADDED
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'filewatcher'
4
+ require 'trollop'
5
+
6
+ options = Trollop::options do
7
+ version "filewatcher, version 0.1.1 by Thomas Flemming 2011"
8
+ banner <<-EOS
9
+ Filewatcher scans filesystem and execute shell commands when files changes.
10
+
11
+ Usage:
12
+ filewatcher [-i interval] "<filename>" "<shell command>"
13
+ Where
14
+ filename: filename(s) to scan.
15
+ shell command: shell command to execute when file changes on disk.
16
+
17
+ Examples:
18
+ filewatcher "myfile" "echo 'myfile has changed'"
19
+ filewathcer -i 2 "*.rb ../src/*.rb" "ruby run_tests.rb"
20
+
21
+ Options:
22
+ EOS
23
+ opt :interval, "Interval to scan filesystem. Defaults to 0.5 seconds.", :short => 'i', :type => :float
24
+ end
25
+
26
+ Trollop::die "must have one or two arguments" if(ARGV.size == 0 or ARGV.size > 2)
27
+
28
+ interval = 0.5
29
+ if(options[:interval] > 0.0)then
30
+ interval = options[:interval]
31
+ end
32
+
33
+ files = []
34
+ ARGV[0].split(/\s+/).each do |arg|
35
+ Dir.glob(arg).each do |file|
36
+ files << file
37
+ end
38
+ end
39
+
40
+ FileWatcher.new(files).watch(interval) do |filename|
41
+ if(ARGV[1])then
42
+ system(ARGV[1])
43
+ else
44
+ puts "file updated: " + filename
45
+ end
46
+ end
data/lib/filewatcher.rb CHANGED
@@ -1,3 +1,6 @@
1
+ # Simple file watcher. Detect changes in files and directories.
2
+ #
3
+ # Issues: Currently doesn't monitor changes in directorynames
1
4
  class FileWatcher
2
5
 
3
6
  def initialize(filenames,print_filelist=false)
@@ -4,7 +4,7 @@ class TestFilewatcher < Test::Unit::TestCase
4
4
 
5
5
  should "should detect directories and extract filenames" do
6
6
 
7
- FileWatcher.new(["./test/"],"Watching files. Ctrl-C to abort.").watch(0.1) do |filename|
7
+ FileWatcher.new(["test/"],"Watching files. Ctrl-C to abort.").watch(0.1) do |filename|
8
8
  puts "updated: " + filename
9
9
  end
10
10
 
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: filewatcher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ hash: 25
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 1
10
+ version: 0.1.1
5
11
  platform: ruby
6
12
  authors:
7
13
  - Thomas Flemming
@@ -9,35 +15,38 @@ autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
17
 
12
- date: 2010-01-25 00:00:00 +01:00
13
- default_executable:
18
+ date: 2011-01-19 00:00:00 +01:00
19
+ default_executable: filewatcher
14
20
  dependencies:
15
21
  - !ruby/object:Gem::Dependency
16
22
  name: thoughtbot-shoulda
17
- type: :development
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
20
26
  requirements:
21
27
  - - ">="
22
28
  - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
23
32
  version: "0"
24
- version:
25
- description: Detect detect changes in files.
33
+ type: :development
34
+ version_requirements: *id001
35
+ description: Detect changes in files.
26
36
  email: thomas.flemming@gmail.com
27
- executables: []
28
-
37
+ executables:
38
+ - filewatcher
29
39
  extensions: []
30
40
 
31
41
  extra_rdoc_files:
32
42
  - LICENSE
33
43
  - README.rdoc
34
44
  files:
35
- - .document
36
- - .gitignore
37
45
  - LICENSE
38
46
  - README.rdoc
39
47
  - Rakefile
40
48
  - VERSION
49
+ - bin/filewatcher
41
50
  - lib/filewatcher.rb
42
51
  - test/helper.rb
43
52
  - test/test_filewatcher.rb
@@ -46,26 +55,32 @@ homepage: http://github.com/thomasfl/filewatcher
46
55
  licenses: []
47
56
 
48
57
  post_install_message:
49
- rdoc_options:
50
- - --charset=UTF-8
58
+ rdoc_options: []
59
+
51
60
  require_paths:
52
61
  - lib
53
62
  required_ruby_version: !ruby/object:Gem::Requirement
63
+ none: false
54
64
  requirements:
55
65
  - - ">="
56
66
  - !ruby/object:Gem::Version
67
+ hash: 3
68
+ segments:
69
+ - 0
57
70
  version: "0"
58
- version:
59
71
  required_rubygems_version: !ruby/object:Gem::Requirement
72
+ none: false
60
73
  requirements:
61
74
  - - ">="
62
75
  - !ruby/object:Gem::Version
76
+ hash: 3
77
+ segments:
78
+ - 0
63
79
  version: "0"
64
- version:
65
80
  requirements: []
66
81
 
67
82
  rubyforge_project:
68
- rubygems_version: 1.3.5
83
+ rubygems_version: 1.3.7
69
84
  signing_key:
70
85
  specification_version: 3
71
86
  summary: Simple filewatcher.
data/.document DELETED
@@ -1,5 +0,0 @@
1
- README.rdoc
2
- lib/**/*.rb
3
- bin/*
4
- features/**/*.feature
5
- LICENSE
data/.gitignore DELETED
@@ -1,21 +0,0 @@
1
- ## MAC OS
2
- .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
7
-
8
- ## EMACS
9
- *~
10
- \#*
11
- .\#*
12
-
13
- ## VIM
14
- *.swp
15
-
16
- ## PROJECT::GENERAL
17
- coverage
18
- rdoc
19
- pkg
20
-
21
- ## PROJECT::SPECIFIC