theodi/philbot

View on GitHub
lib/philbot/monitors/share_monitor.rb

Summary

Maintainability
A
55 mins
Test Coverage
module Philbot
  module Monitors
    class ShareMonitor
      def self.run watchdir
        Philbot::Config.root = File.expand_path(watchdir)

        @@listener = Listen.to watchdir do |modified, added, removed|
          unless added.empty?
            Resque.enqueue Philbot::Workers::Uploader, mapit(added, watchdir)
          end

          unless modified.empty?
            Resque.enqueue Philbot::Workers::Uploader, mapit(modified, watchdir)
          end

          unless removed.empty?
            Resque.enqueue Philbot::Workers::Destroyer, mapit(removed, watchdir)
          end
        end
        @@listener.start
      end

      def self.mapit list, parentdir
        pd = parentdir.gsub(/\/$/, '')
        list.delete_if { |i| File.basename(i)[0] == '.' }
        list.map { |i| i.gsub('%s/' % pd, '') }
      end
    end
  end
end