diff --git a/.rubocop.yml b/.rubocop.yml index c92b709f..dbd74993 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -67,5 +67,3 @@ Style/MultilineBlockChain: Enabled: false Style/SpecialGlobalVars: Enabled: false -Style/FrozenStringLiteralComment: - Enabled: false diff --git a/CHANGELOG.md b/CHANGELOG.md index 148aa2e2..a6494a17 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,18 +1,6 @@ master === -# 4.1.13 - -* Change how config options are passed to Thor. Removes new Thor warnings from #2017 - -# 4.1.12 - -* Fix broken `ignore { |p| true }` form. - -# 4.1.11 - -* Upgrade to Rack 2. - # 4.1.10 * Fix unicode issues in URL deeplinks. diff --git a/Gemfile b/Gemfile index db4043a0..a4415ab8 100644 --- a/Gemfile +++ b/Gemfile @@ -9,12 +9,6 @@ gem 'byebug' gem 'aruba', '~> 0.7.4', require: false gem 'rspec', '~> 3.0', require: false gem 'cucumber', '~> 2.0', require: false -gem 'addressable', '~> 2.4.0', require: false - -# Pry tools -gem 'pry' -gem 'pry-stack_explorer' -gem 'pry-rescue' # Optional middleman dependencies, included for tests gem 'haml', '>= 4.0.5', require: false @@ -32,7 +26,7 @@ gem 'rubydns', '~> 1.0.1', require: false # To test javascript gem 'poltergeist', '~> 1.8', require: false -gem 'phantomjs', '~> 2.1.1.0', require: false +gem 'phantomjs', '~> 1.9.8.0', require: false # For less, note there is no compatible JS runtime for windows gem 'therubyrhino', '>= 2.0', platforms: :jruby diff --git a/middleman-cli/bin/middleman b/middleman-cli/bin/middleman index 8b381a08..46fa5889 100755 --- a/middleman-cli/bin/middleman +++ b/middleman-cli/bin/middleman @@ -25,10 +25,12 @@ module Middleman::Cli if setting.default.is_a?(String) || setting.default.is_a?(NilClass) base.class_option setting.key, type: :string, + default: :undefined, desc: setting.description elsif setting.default.is_a?(TrueClass) || setting.default.is_a?(FalseClass) base.class_option setting.key, type: :boolean, + default: :undefined, desc: setting.description end end diff --git a/middleman-cli/lib/middleman-cli/build.rb b/middleman-cli/lib/middleman-cli/build.rb index 9e521dde..df871ce2 100644 --- a/middleman-cli/lib/middleman-cli/build.rb +++ b/middleman-cli/lib/middleman-cli/build.rb @@ -29,7 +29,7 @@ module Middleman::Cli default: false, desc: 'Print debug messages' class_option :instrument, - type: :boolean, + type: :string, default: false, desc: 'Print instrument messages' class_option :profile, @@ -64,7 +64,7 @@ module Middleman::Cli config[:mode] = :build config[:show_exceptions] = false config[:cli_options] = cli_options.each_with_object({}) do |(k, v), sum| - sum[k] = v + sum[k] = v unless v == :undefined end end diff --git a/middleman-cli/lib/middleman-cli/server.rb b/middleman-cli/lib/middleman-cli/server.rb index 85e75a9f..479f53bd 100644 --- a/middleman-cli/lib/middleman-cli/server.rb +++ b/middleman-cli/lib/middleman-cli/server.rb @@ -17,7 +17,7 @@ module Middleman::Cli default: false, desc: 'Print debug messages' class_option :instrument, - type: :boolean, + type: :string, default: false, desc: 'Print instrument messages' class_option :profile, diff --git a/middleman-core/features/page-id.feature b/middleman-core/features/page-id.feature index 74d08cb5..63dd6fad 100644 --- a/middleman-core/features/page-id.feature +++ b/middleman-core/features/page-id.feature @@ -3,60 +3,14 @@ Feature: Page IDs Scenario: link_to works with blocks (erb) Given the Server is running at "page-id-app" When I go to "/index.html" - Then I should see "I am: index" + Then I should see "I am: index.html" And I should see "URL1: /fm.html" And I should see "URL2: /2.html" And I should see 'URL3: Hi' And I should see 'URL4: Sym' - And I should see 'URL5: Imp' - And I should see 'URL6: Foldern' - And I should see 'URL7: Feed' When I go to "/fm.html" Then I should see "I am: frontmatter" - When I go to "/implicit.html" - Then I should see "I am: implicit" - When I go to "/feed.xml" - Then I should see "I am: feed.xml" - When I go to "/folder/foldern.html" - Then I should see "I am: folder/foldern" - - When I go to "/1.html" - Then I should see "I am: page1" - When I go to "/2.html" - Then I should see "I am: page2" - When I go to "/3.html" - Then I should see "I am: page3" - - When I go to "/overwrites/from-default.html" - Then I should see "I am: something-else" - - When I go to "/overwrites/from-frontmatter.html" - Then I should see "I am: from_frontmatter" - - Scenario: Override page ID derivation with a proc - Given a fixture app "page-id-app" - And app "page-id-app" is using config "proc" - And the Server is running at "page-id-app" - - When I go to "/index.html" - Then I should see "I am: index.html-foo" - And I should see "URL1: /fm.html" - And I should see "URL2: /2.html" - And I should see 'URL3: Hi' - And I should see 'URL4: Sym' - And I should see 'URL8: Imp' - And I should see 'URL9: Foldern' - And I should see 'URL10: Feed' - - When I go to "/fm.html" - Then I should see "I am: frontmatter" - When I go to "/implicit.html" - Then I should see "I am: implicit.html-foo" - When I go to "/feed.xml" - Then I should see "I am: feed.xml-foo" - When I go to "/folder/foldern.html" - Then I should see "I am: folder/foldern.html-foo" When I go to "/1.html" Then I should see "I am: page1" diff --git a/middleman-core/fixtures/page-id-app/config-proc.rb b/middleman-core/fixtures/page-id-app/config-proc.rb deleted file mode 100644 index 03070f0e..00000000 --- a/middleman-core/fixtures/page-id-app/config-proc.rb +++ /dev/null @@ -1,7 +0,0 @@ -%w(1 2 3).each do |n| - proxy "/#{n}.html", "/index.html", id: "page#{n}" -end - -page "/overwrites/*", id: :"something-else" - -config[:page_id_generator] = ->(path){ path + "-foo" } diff --git a/middleman-core/fixtures/page-id-app/source/feed.xml.erb b/middleman-core/fixtures/page-id-app/source/feed.xml.erb deleted file mode 100644 index a27800bd..00000000 --- a/middleman-core/fixtures/page-id-app/source/feed.xml.erb +++ /dev/null @@ -1 +0,0 @@ -I am: <%= current_resource.page_id %> diff --git a/middleman-core/fixtures/page-id-app/source/folder/foldern.html.erb b/middleman-core/fixtures/page-id-app/source/folder/foldern.html.erb deleted file mode 100644 index a27800bd..00000000 --- a/middleman-core/fixtures/page-id-app/source/folder/foldern.html.erb +++ /dev/null @@ -1 +0,0 @@ -I am: <%= current_resource.page_id %> diff --git a/middleman-core/fixtures/page-id-app/source/implicit.html.erb b/middleman-core/fixtures/page-id-app/source/implicit.html.erb deleted file mode 100644 index a27800bd..00000000 --- a/middleman-core/fixtures/page-id-app/source/implicit.html.erb +++ /dev/null @@ -1 +0,0 @@ -I am: <%= current_resource.page_id %> diff --git a/middleman-core/fixtures/page-id-app/source/index.html.erb b/middleman-core/fixtures/page-id-app/source/index.html.erb index 6060bc3f..8f2997b6 100644 --- a/middleman-core/fixtures/page-id-app/source/index.html.erb +++ b/middleman-core/fixtures/page-id-app/source/index.html.erb @@ -4,11 +4,3 @@ URL1: <%= url_for "frontmatter" %> URL2: <%= url_for "page2" %> URL3: <%= link_to "Hi", "page3" %> URL4: <%= link_to "Sym", :"something-else" %> -URL5: <%= link_to "Imp", :implicit %> -URL6: <%= link_to "Foldern", "folder/foldern" %> -URL7: <%= link_to "Feed", "feed.xml" %> - -<%# If custom proc %> -URL8: <%= link_to "Imp", "implicit.html-foo" %> -URL9: <%= link_to "Foldern", "folder/foldern.html-foo" %> -URL10: <%= link_to "Feed", "feed.xml-foo" %> diff --git a/middleman-core/lib/middleman-core/preview_server.rb b/middleman-core/lib/middleman-core/preview_server.rb index 1a3d220e..b70e9c99 100644 --- a/middleman-core/lib/middleman-core/preview_server.rb +++ b/middleman-core/lib/middleman-core/preview_server.rb @@ -143,7 +143,7 @@ module Middleman app = ::Middleman::Application.new do config[:cli_options] = cli_options.each_with_object({}) do |(k, v), sum| - sum[k] = v + sum[k] = v unless v == :undefined end ready do @@ -160,9 +160,6 @@ module Middleman path: root, only: match_against - # Hack around bower_components in root. - watcher.listener.ignore(/^bower_components/) - # Hack around node_modules in root. watcher.listener.ignore(/^node_modules/) @@ -207,7 +204,7 @@ module Middleman end def possible_from_cli(key, config) - if @cli_options[key] + if @cli_options[key] && @cli_options[key] != :undefined @cli_options[key] else config[key] diff --git a/middleman-core/lib/middleman-core/sitemap/extensions/ignores.rb b/middleman-core/lib/middleman-core/sitemap/extensions/ignores.rb index 0367c64a..ad2d95c0 100644 --- a/middleman-core/lib/middleman-core/sitemap/extensions/ignores.rb +++ b/middleman-core/lib/middleman-core/sitemap/extensions/ignores.rb @@ -74,7 +74,7 @@ module Middleman end end - class BlockIgnoreDescriptor < IgnoreDescriptor + class BlockIgnoreDescriptor def ignored?(match_path) block.call(match_path) end diff --git a/middleman-core/lib/middleman-core/sitemap/resource.rb b/middleman-core/lib/middleman-core/sitemap/resource.rb index f3619873..9ff97478 100644 --- a/middleman-core/lib/middleman-core/sitemap/resource.rb +++ b/middleman-core/lib/middleman-core/sitemap/resource.rb @@ -87,7 +87,7 @@ module Middleman Contract Or[Symbol, String, Fixnum] def page_id - metadata[:page][:id] || make_implicit_page_id(destination_path) + metadata[:page][:id] || destination_path end # Merge in new metadata specific to this resource. @@ -208,30 +208,6 @@ module Middleman "#<#{self.class} path=#{@path}>" end alias inspect to_s # Ruby 2.0 calls inspect for NoMethodError instead of to_s - - protected - - # Makes a page id based on path (when not otherwise given) - # - # Removes .html extension and potential leading slashes or dots - # eg. "foo/bar/baz.foo.html" => "foo/bar/baz.foo" - Contract String => String - def make_implicit_page_id(path) - @id ||= begin - if prok = @app.config[:page_id_generator] - return prok.call(path) - end - - basename = if ext == ".html" - File.basename(path, ext) - else - File.basename(path) - end - - # Remove leading dot or slash if present - File.join(File.dirname(path), basename).gsub(/^\.?\//, '') - end - end end class StringResource < Resource diff --git a/middleman-core/lib/middleman-core/util/paths.rb b/middleman-core/lib/middleman-core/util/paths.rb index 2e229392..2814cfc9 100644 --- a/middleman-core/lib/middleman-core/util/paths.rb +++ b/middleman-core/lib/middleman-core/util/paths.rb @@ -1,7 +1,7 @@ # Core Pathname library used for traversal require 'pathname' require 'uri' -require 'addressable/uri' +require 'addressable' require 'memoist' require 'tilt' @@ -152,8 +152,7 @@ module Middleman def url_for(app, path_or_resource, options={}) if path_or_resource.is_a?(String) || path_or_resource.is_a?(Symbol) r = app.sitemap.find_resource_by_page_id(path_or_resource) - - path_or_resource = r ? r : path_or_resource.to_s + path_or_resource = r if r end # Handle Resources and other things which define their own url method diff --git a/middleman-core/lib/middleman-core/version.rb b/middleman-core/lib/middleman-core/version.rb index 7b1bf403..6f3f1228 100644 --- a/middleman-core/lib/middleman-core/version.rb +++ b/middleman-core/lib/middleman-core/version.rb @@ -1,5 +1,5 @@ module Middleman # Current Version # @return [String] - VERSION = '4.1.14'.freeze unless const_defined?(:VERSION) + VERSION = '4.1.10'.freeze unless const_defined?(:VERSION) end diff --git a/middleman-core/spec/middleman-core/util_spec.rb b/middleman-core/spec/middleman-core/util_spec.rb index 9c429145..a852521d 100644 --- a/middleman-core/spec/middleman-core/util_spec.rb +++ b/middleman-core/spec/middleman-core/util_spec.rb @@ -220,7 +220,7 @@ describe Middleman::Util do it "does not loop infinitely when file name is a possible templating engine" do expect do - Timeout::timeout(3.0) do + Timeout::timeout(0.5) do result = Middleman::Util.step_through_extensions("markdown.scss") expect(result).to eq "markdown" end