module Middleman::ThorActions
def add_clean_up_callback
def add_clean_up_callback clean_up_callback = lambda do files = @cleaning_queue.select { |q| File.file? q } directories = @cleaning_queue.select { |q| File.directory? q } files.each { |f| remove_file f, :force => true } directories = directories.sort_by {|d| d.length }.reverse! directories.each do |d| remove_file d, :force => true if directory_empty? d end end self.class.after_run :clean_up_callback do clean_up_callback.call end end
def clean!(destination)
def clean!(destination) return unless cleaning? queue_current_paths_from destination add_clean_up_callback end
def cleaning?
def cleaning? options.has_key?("clean") && options["clean"] end
def dequeue_file_from(destination)
def dequeue_file_from(destination) @cleaning_queue.delete_if {|q| q == destination } end
def directory_empty?(directory)
def directory_empty?(directory) Dir["#{directory}/*"].empty? end
def queue_current_paths_from(destination)
def queue_current_paths_from(destination) @cleaning_queue = [] Find.find(destination) do |path| next if path.match(/\/\./) unless path == destination @cleaning_queue << path.sub(destination, destination[/([^\/]+?)$/]) end end end
def tilt_template(source, *args, &block)
def tilt_template(source, *args, &block) config = args.last.is_a?(Hash) ? args.pop : {} destination = args.first || source # source = File.expand_path(find_in_source_paths(source.to_s)) # context = instance_eval('binding') request_path = destination.sub(/^#{SHARED_SERVER.build_dir}/, "") begin destination, request_path = SHARED_SERVER.reroute_builder(destination, request_path) request_path.gsub!(/\s/, "%20") response = Middleman::Builder.shared_rack.get(request_path) dequeue_file_from destination if cleaning? create_file destination, nil, config do response.body end if response.status == 200 rescue end end