when-files-change 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.
@@ -2,8 +2,9 @@
2
2
  require 'optparse'
3
3
  require File.dirname(__FILE__) + '/../lib/change_listener'
4
4
 
5
- # Options
5
+ # Default Options
6
6
  ignored_paths = nil
7
+ verbose = false
7
8
 
8
9
  opts = OptionParser.new do |opts|
9
10
  opts.banner = "Usage: #{File.basename($0)} [options] -- command [arguments]"
@@ -12,6 +13,11 @@ opts = OptionParser.new do |opts|
12
13
  opts.on("-i", "--ignore PATHS", Array, "Ignore changes made at these paths") do |paths|
13
14
  ignore_paths = paths
14
15
  end
16
+
17
+ opts.on("-v", "--verbose", "Enable verbose mode") do
18
+ verbose = true
19
+ end
20
+
15
21
  opts.parse! ARGV
16
22
  end
17
23
 
@@ -23,6 +29,7 @@ end
23
29
 
24
30
  listener = ChangeListener.new(command, *ARGV)
25
31
  listener.ignore_paths(ignored_paths) if ignored_paths
32
+ listener.verbose = verbose
26
33
  listener.start
27
34
 
28
35
  # Catch signals so we can exit gracefully
@@ -5,32 +5,56 @@ class ChangeListener
5
5
  attr_reader :listener
6
6
  attr_reader :command
7
7
  attr_reader :arguments
8
+ attr_accessor :verbose
9
+ attr_accessor :out
8
10
 
9
11
  def initialize(command, *arguments)
10
12
  @command = command
11
13
  @arguments = arguments
12
- @listener = Listen.to('./').ignore(/^\.\w+/)
14
+ @out = STDERR
13
15
 
16
+ @listener = Listen.to('./').ignore(/^\.\w+/)
14
17
  @listener.change{ execute }
15
18
  end
16
19
 
17
20
  def start
21
+ out.puts "Listening..." if verbose?
18
22
  listener.start(false)
19
23
  end
20
24
 
21
25
  def execute
22
26
  listener.pause
23
- Kernel.system(ENV, command, *arguments)
27
+ run_command
24
28
  listener.unpause
25
29
  end
26
30
 
27
31
  def ignore(*regexps)
28
- @listener.ignore(*regexps)
32
+ listener.ignore(*regexps)
29
33
  end
30
34
 
31
35
  def ignore_path(*paths)
32
36
  globs = paths.map{|p| FileGlob.new(p)}
33
37
 
34
- @listener.ignore(*globs)
38
+ listener.ignore(*globs)
39
+ end
40
+
41
+ def verbose?
42
+ verbose
43
+ end
44
+
45
+ private
46
+
47
+ def run_command
48
+ out.puts command_to_s if verbose?
49
+ success = Kernel.system(ENV, command, *arguments)
50
+ report_error unless success
51
+ end
52
+
53
+ def report_error
54
+ out.puts "* Exited with #{$?.exitstatus}"
55
+ end
56
+
57
+ def command_to_s
58
+ "#{command} #{arguments.join(' ')}"
35
59
  end
36
60
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 2
8
- - 1
9
- version: 0.2.1
8
+ - 2
9
+ version: 0.2.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Adam Sanderson
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2013-03-24 00:00:00 -07:00
17
+ date: 2013-05-09 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency