diff --git a/lib/jekyll/commands/build.rb b/lib/jekyll/commands/build.rb index 3e43f955..3cea607c 100644 --- a/lib/jekyll/commands/build.rb +++ b/lib/jekyll/commands/build.rb @@ -71,23 +71,27 @@ module Jekyll # # Returns nothing. def watch(site, options) - if Utils::Platforms.windows? - Jekyll.logger.warn "", "--watch arg is unsupported on Windows. " - Jekyll.logger.warn "", "If you are on Windows Bash, please see: " \ - "https://github.com/Microsoft/BashOnWindows/issues/216" + # Warn Windows users that they might need to upgrade. + if Utils::Platforms.bash_on_windows? + Jekyll.logger.warn "", + "Auto-regeneration may not work on some Windows versions." + Jekyll.logger.warn "", + "Please see: https://github.com/Microsoft/BashOnWindows/issues/216" + Jekyll.logger.warn "", + "If it does not work, please upgrade Bash on Windows or "\ + "run Jekyll with --no-watch." + end + External.require_with_graceful_fail "jekyll-watch" + watch_method = Jekyll::Watcher.method(:watch) + if watch_method.parameters.size == 1 + watch_method.call( + options + ) else - External.require_with_graceful_fail "jekyll-watch" - watch_method = Jekyll::Watcher.method(:watch) - if watch_method.parameters.size == 1 - watch_method.call( - options - ) - else - watch_method.call( - options, site - ) - end + watch_method.call( + options, site + ) end end end # end of class << self diff --git a/lib/jekyll/utils/platforms.rb b/lib/jekyll/utils/platforms.rb index a16c239b..f66ef795 100644 --- a/lib/jekyll/utils/platforms.rb +++ b/lib/jekyll/utils/platforms.rb @@ -19,16 +19,29 @@ module Jekyll # /proc/version returns nothing to us. # -- - def really_windows? + def vanilla_windows? RbConfig::CONFIG["host_os"] =~ %r!mswin|mingw|cygwin!i && \ !proc_version end + # -- + # XXX: Remove in 4.0 + # -- + + alias_method :really_windows?, \ + :vanilla_windows? + + # + + def bash_on_windows? + RbConfig::CONFIG["host_os"] =~ %r!linux! && \ + proc_version =~ %r!microsoft!i + end + # def windows? - RbConfig::CONFIG["host_os"] =~ %r!mswin|mingw|cygwin!i || \ - proc_version =~ %r!microsoft!i + vanilla_windows? || bash_on_windows? end #