diff --git a/CHANGELOG b/CHANGELOG index 0fa72041..98a83d98 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,7 @@ +2.0.13 +==== +middleman build --clean keeps the build directory clean of leftover files + 2.0.12 ==== Sinatra 1.3.1 and Padrino 0.10.4 diff --git a/features/clean_build.feature b/features/clean_build.feature new file mode 100644 index 00000000..9298c4bd --- /dev/null +++ b/features/clean_build.feature @@ -0,0 +1,10 @@ +Feature: Build Clean + Scenario: Build and Clean an app + Given app "clean-app" is using config "empty" + And a built app at "clean-app" + And app "clean-app" is using config "complications" + And a built app at "clean-app" with flags "--clean" + 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_ignored3.html" should not exist at "clean-app" + And cleanup built app at "clean-app" \ No newline at end of file diff --git a/features/step_definitions/builder_steps.rb b/features/step_definitions/builder_steps.rb index 2050627b..69bc3d8e 100644 --- a/features/step_definitions/builder_steps.rb +++ b/features/step_definitions/builder_steps.rb @@ -1,5 +1,13 @@ require 'fileutils' +Given /^app "([^"]*)" is using config "([^"]*)"$/ do |path, config_name| + root = File.dirname(File.dirname(File.dirname(__FILE__))) + target = File.join(root, "fixtures", path) + config_path = File.join(target, "config-#{config_name}.rb") + config_dest = File.join(target, "config.rb") + FileUtils.cp(config_path, config_dest) +end + Given /^a built app at "([^"]*)"$/ do |path| root = File.dirname(File.dirname(File.dirname(__FILE__))) target = File.join(root, "fixtures", path) diff --git a/fixtures/clean-app/config-complications.rb b/fixtures/clean-app/config-complications.rb new file mode 100644 index 00000000..828aa09f --- /dev/null +++ b/fixtures/clean-app/config-complications.rb @@ -0,0 +1,11 @@ +page "/fake.html", :proxy => "/real.html", :layout => false + +ignore "/should_be_ignored.html" +page "/should_be_ignored2.html", :ignore => true +page "/target_ignore.html", :proxy => "/should_be_ignored3.html", :ignore => true + +%w(one two).each do |num| + page "/fake/#{num}.html", :proxy => "/real/index.html" do + @num = num + end +end \ No newline at end of file diff --git a/fixtures/clean-app/config-empty.rb b/fixtures/clean-app/config-empty.rb new file mode 100644 index 00000000..e69de29b diff --git a/fixtures/clean-app/config.rb b/fixtures/clean-app/config.rb new file mode 100644 index 00000000..828aa09f --- /dev/null +++ b/fixtures/clean-app/config.rb @@ -0,0 +1,11 @@ +page "/fake.html", :proxy => "/real.html", :layout => false + +ignore "/should_be_ignored.html" +page "/should_be_ignored2.html", :ignore => true +page "/target_ignore.html", :proxy => "/should_be_ignored3.html", :ignore => true + +%w(one two).each do |num| + page "/fake/#{num}.html", :proxy => "/real/index.html" do + @num = num + end +end \ No newline at end of file diff --git a/fixtures/clean-app/source/index.html.haml b/fixtures/clean-app/source/index.html.haml new file mode 100755 index 00000000..6ef080c6 --- /dev/null +++ b/fixtures/clean-app/source/index.html.haml @@ -0,0 +1,6 @@ +%h1 Welcome + +:markdown + ## H2 + + Paragraph \ No newline at end of file diff --git a/fixtures/clean-app/source/layout.haml b/fixtures/clean-app/source/layout.haml new file mode 100644 index 00000000..e5a7a094 --- /dev/null +++ b/fixtures/clean-app/source/layout.haml @@ -0,0 +1,6 @@ +%html + %head + %title My Sample Site + / Comment in layout + %body + = yield \ No newline at end of file diff --git a/fixtures/clean-app/source/layouts/custom.haml b/fixtures/clean-app/source/layouts/custom.haml new file mode 100755 index 00000000..87de0ed3 --- /dev/null +++ b/fixtures/clean-app/source/layouts/custom.haml @@ -0,0 +1,5 @@ +%html + %head + %title Custom Layout + %body + = yield \ No newline at end of file diff --git a/fixtures/clean-app/source/real.html b/fixtures/clean-app/source/real.html new file mode 100644 index 00000000..cb312952 --- /dev/null +++ b/fixtures/clean-app/source/real.html @@ -0,0 +1 @@ +I am real \ No newline at end of file diff --git a/fixtures/clean-app/source/real/index.html.erb b/fixtures/clean-app/source/real/index.html.erb new file mode 100644 index 00000000..190d84ec --- /dev/null +++ b/fixtures/clean-app/source/real/index.html.erb @@ -0,0 +1,5 @@ +--- +layout: false +--- + +I am real: <%= @num %> \ No newline at end of file diff --git a/fixtures/clean-app/source/should_be_ignored.html b/fixtures/clean-app/source/should_be_ignored.html new file mode 100644 index 00000000..fb81d5c0 --- /dev/null +++ b/fixtures/clean-app/source/should_be_ignored.html @@ -0,0 +1 @@ +

Ignore me!

\ No newline at end of file diff --git a/fixtures/clean-app/source/should_be_ignored2.html b/fixtures/clean-app/source/should_be_ignored2.html new file mode 100644 index 00000000..0940fd7c --- /dev/null +++ b/fixtures/clean-app/source/should_be_ignored2.html @@ -0,0 +1 @@ +

Ignore me! 2

\ No newline at end of file diff --git a/fixtures/clean-app/source/should_be_ignored3.html b/fixtures/clean-app/source/should_be_ignored3.html new file mode 100644 index 00000000..98007c81 --- /dev/null +++ b/fixtures/clean-app/source/should_be_ignored3.html @@ -0,0 +1 @@ +

Ignore me! 3

\ No newline at end of file diff --git a/fixtures/clean-app/source/static.html b/fixtures/clean-app/source/static.html new file mode 100755 index 00000000..7e50df4e --- /dev/null +++ b/fixtures/clean-app/source/static.html @@ -0,0 +1 @@ +Static, no code! \ No newline at end of file diff --git a/lib/middleman/builder.rb b/lib/middleman/builder.rb index ea79d53e..d6f6e4d8 100644 --- a/lib/middleman/builder.rb +++ b/lib/middleman/builder.rb @@ -211,7 +211,7 @@ module Middleman files.each { |f| base.remove_file f, config } - directories.sort_by! {|d| d.length }.reverse! + directories = directories.sort_by {|d| d.length }.reverse! directories.each do |d| base.remove_file(d, config) if directory_empty? d diff --git a/lib/middleman/version.rb b/lib/middleman/version.rb index 81ca3880..8522387a 100644 --- a/lib/middleman/version.rb +++ b/lib/middleman/version.rb @@ -1,3 +1,3 @@ module Middleman - VERSION = "2.0.12" + VERSION = "2.0.13" end