lib/stack/watcher.rb in stack-0.0.7 vs lib/stack/watcher.rb in stack-0.0.8
- old
+ new
@@ -1,18 +1,21 @@
module Stack
class Watcher
attr_accessor :source, :target
attr_accessor :generator
attr_accessor :directory_watcher
- attr_accessor :keep_alive
+ attr_accessor :keep_alive, :is_first_observe
+ attr_accessor :thread
def initialize(generator)
self.generator = generator
self.source = self.generator.source
self.target = self.generator.target
self.keep_alive = true
+
+ require 'directory_watcher'
end
def observe
dirs = ""
@@ -26,22 +29,35 @@
self.directory_watcher = DirectoryWatcher.new(self.source)
self.directory_watcher.interval = 1
self.directory_watcher.glob = dirs
self.directory_watcher.add_observer do |*args|
- time = Time.now.strftime("%Y-%m-%d %H:%M:%S")
- puts "[#{time}] #{args.size} files changed."
- self.generator.process!
- self.generator.transform!
+ if self.is_first_observe
+ self.is_first_observe = false
+ else
+ time = Time.now.strftime("%Y-%m-%d %H:%M:%S")
+ puts "[#{time}] #{args.size} files changed."
+ self.generator.process!
- time = Time.now.strftime("%Y-%m-%d %H:%M:%S")
- puts "[#{time}] #{args.size} files processed."
+ self.generator.transform!
+
+ time = Time.now.strftime("%Y-%m-%d %H:%M:%S")
+ puts "[#{time}] #{args.size} files processed."
+ end
end
- self.directory_watcher.start
+ #self.directory_watcher.start
- if self.keep_alive
- loop { sleep 1000 }
- end
+ self.thread = Thread.new {
+ self.directory_watcher.start
+ }
+
+ trap("INT") { self.directory_watcher.stop }
+
+ self.thread.join()
+
+ #if self.keep_alive
+ # loop { sleep 1000 }
+ #end
end
end
end
\ No newline at end of file