module Autospec; end
class Autospec::ReloadCss

  MATCHERS = {}
  def self.watch(pattern, &blk)
    MATCHERS[pattern] = blk
  end

  watch(/tmp\/refresh_browser/)
  watch(/\.css$/)
  watch(/\.css\.erb$/)
  watch(/\.sass$/)
  watch(/\.scss$/)
  watch(/\.sass\.erb$/)
  watch(/\.handlebars$/)

  def self.message_bus
    MessageBus::Instance.new.tap do |bus|
      bus.site_id_lookup do
        # this is going to be dev the majority of the time, if you have multisite configured in dev stuff may be different
        "default"
      end
    end
  end

  def self.run_on_change(paths)
    paths.map! do |p|
      hash = nil
      fullpath = Rails.root.to_s + "/" + p
      hash = Digest::MD5.hexdigest(File.read(fullpath)) if File.exists? fullpath
      p = p.sub /\.sass\.erb/, ""
      p = p.sub /\.sass/, ""
      p = p.sub /\.scss/, ""
      p = p.sub /^app\/assets\/stylesheets/, "assets"
      {name: p, hash: hash}
    end
    message_bus.publish "/file-change", paths
  end

end