Merge pull request #179 from bhollis/master

Fix two bugs around "build --clean"
This commit is contained in:
Thomas Reynolds 2011-11-30 23:57:16 -08:00
commit f1074ed1e2
4 changed files with 25 additions and 7 deletions

View file

@ -7,3 +7,14 @@ Feature: Build Clean
Then "should_be_ignored.html" should not exist at "clean-app" Then "should_be_ignored.html" should not exist at "clean-app"
And "should_be_ignored2.html" should not exist at "clean-app" And "should_be_ignored2.html" should not exist at "clean-app"
And "should_be_ignored3.html" should not exist at "clean-app" And "should_be_ignored3.html" should not exist at "clean-app"
Scenario: Clean an app with directory indexes
Given a built app at "clean-dir-app"
Then "about/index.html" should exist at "clean-dir-app"
Given a built app at "clean-dir-app" with flags "--clean"
Then "about/index.html" should exist at "clean-dir-app"
Then cleanup built app at "clean-dir-app"
Scenario: Clean build an app that's never been built
Given a built app at "clean-dir-app" with flags "--clean"
Then "about/index.html" should exist at "clean-dir-app"

View file

@ -0,0 +1,2 @@
activate :directory_indexes

View file

@ -0,0 +1 @@
Fun times

View file

@ -30,6 +30,8 @@ module Middleman
# @private # @private
module ThorActions module ThorActions
# Render a template to a file.
# @return [String] the actual destination file path that was created
def tilt_template(source, *args, &block) def tilt_template(source, *args, &block)
config = args.last.is_a?(Hash) ? args.pop : {} config = args.last.is_a?(Hash) ? args.pop : {}
destination = args.first || source destination = args.first || source
@ -41,6 +43,8 @@ module Middleman
response = ::Middleman::Builder.shared_rack.get(request_path.gsub(/\s/, "%20")) response = ::Middleman::Builder.shared_rack.get(request_path.gsub(/\s/, "%20"))
create_file(destination, response.body, config) if response.status == 200 create_file(destination, response.body, config) if response.status == 200
destination
# rescue # rescue
# say_status :error, destination, :red # say_status :error, destination, :red
# end # end
@ -130,11 +134,11 @@ module Middleman
def queue_current_paths def queue_current_paths
@cleaning_queue = [] @cleaning_queue = []
Find.find(@destination) do |path| Find.find(@destination) do |path|
next if path.match(/\/\./) next if path.match(/\/\./) && !path.match(/\.htaccess/)
unless path == destination unless path == destination
@cleaning_queue << path.sub(@destination, destination[/([^\/]+?)$/]) @cleaning_queue << path.sub(@destination, destination[/([^\/]+?)$/])
end end
end end if File.exist?(@destination)
end end
def execute! def execute!
@ -163,13 +167,13 @@ module Middleman
next next
end end
@cleaning_queue.delete(file_destination) if cleaning?
if @config[:glob] if @config[:glob]
next unless File.fnmatch(@config[:glob], file_source) next unless File.fnmatch(@config[:glob], file_source)
end end
base.tilt_template(file_source, file_destination, { :force => true }) file_destination = base.tilt_template(file_source, file_destination, { :force => true })
@cleaning_queue.delete(file_destination) if cleaning?
end end
end end
end end