class Middleman::DirectoryAction

def execute!

def execute!
  handle_directory(source) do |path|
    file_name = path.gsub(SHARED_SERVER.views + "/", "")
    if file_name == "layouts"
      false
    elsif file_name.include?("layout.") && file_name.split(".").length == 2
      false
    else
      true
    end
  end
end

def handle_directory(lookup, &block)

def handle_directory(lookup, &block)
  lookup = File.join(lookup, '*')
  
  results = Dir[lookup].sort do |a, b|
    simple_a = a.gsub(SHARED_SERVER.root + "/", '').gsub(SHARED_SERVER.views + "/", '') 
    simple_b = b.gsub(SHARED_SERVER.root + "/", '').gsub(SHARED_SERVER.views + "/", '')
    
    a_dir = simple_a.split("/").first
    b_dir = simple_b.split("/").first
    
    if a_dir == SHARED_SERVER.images_dir
      -1
    elsif b_dir == SHARED_SERVER.images_dir
      1
    else
      0
    end
  end
  
  results = results.select(&block) if block_given?
  
  results.each do |file_source|
    if File.directory?(file_source)
      handle_directory(file_source)
      next
    end
    
    handle_path(file_source)
  end
end

def invoke!

def invoke!
  base.empty_directory given_destination, config
  super
end