Sha256: 10afa0edeafa7895433ce749443318f2015262ea85804a9b463dfb1155068e37

Contents?: true

Size: 1.25 KB

Versions: 2

Compression:

Stored size: 1.25 KB

Contents

module ArchitectureJS
  class Watcher

    attr_accessor :project, :listener

    def initialize(project)
      @project = project
      @listener = Listen.to(@project.root)
      @listener.ignore(/#{@project.config[:build_dir]}/)
               .filter(/\.jst?$|\.blueprint$/)
               .change do |modified, added, removed|
                 update_files(modified, "modified") if modified.length > 0 
                 update_files(added, "added") if added.length > 0
                 update_files(removed, "deleted") if removed.length > 0
               end
    end

    def watch(message = false)
      @listener.start(false)
      puts ArchitectureJS::Notification.log message if message
      self
    end

    def stop
      @listener.stop
    end

    private

      def update_files(files, action)
        files.each do |f|
          f = File.basename f
          if action == "deleted"
            FileUtils.rm_rf("#{@project.root}/#{@project.config[:build_dir]}/#{f}") if File.exists? "#{@project.root}/#{@project.config[:build_dir]}/#{f}"
          end

          puts "\n" << ArchitectureJS::Notification.event("#{f} was #{action}")
        end

        @project.read_config
        @project.update
        print ArchitectureJS::Notification.prompt
      end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
architecture-js-0.6.0 lib/architecture-js/watcher.rb
architecture-js-0.5.8 lib/architecture-js/watcher.rb