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