Add URL checks to Doctor (#5760)

Merge pull request 5760
This commit is contained in:
Pat Hawks 2017-07-18 07:06:05 -05:00 committed by jekyllbot
parent 2b28f9fd57
commit da65e94728
1 changed files with 35 additions and 0 deletions

View File

@ -1,3 +1,5 @@
require "addressable/uri"
module Jekyll module Jekyll
module Commands module Commands
class Doctor < Command class Doctor < Command
@ -36,6 +38,7 @@ module Jekyll
!deprecated_relative_permalinks(site), !deprecated_relative_permalinks(site),
!conflicting_urls(site), !conflicting_urls(site),
!urls_only_differ_by_case(site), !urls_only_differ_by_case(site),
proper_site_url?(site),
].all? ].all?
end end
@ -91,6 +94,15 @@ module Jekyll
urls_only_differ_by_case urls_only_differ_by_case
end end
def proper_site_url?(site)
url = site.config["url"]
[
url_exists?(url),
url_valid?(url),
url_absolute(url),
].all?
end
private private
def collect_urls(urls, things, destination) def collect_urls(urls, things, destination)
things.each do |thing| things.each do |thing|
@ -110,6 +122,29 @@ module Jekyll
(memo[dest.downcase] ||= []) << dest (memo[dest.downcase] ||= []) << dest
end end
end end
def url_exists?(url)
return true unless url.nil? || url.empty?
Jekyll.logger.warn "Warning:", "You didn't set an URL in the config file, "\
"you may encounter problems with some plugins."
false
end
def url_valid?(url)
Addressable::URI.parse(url)
true
rescue
Jekyll.logger.warn "Warning:", "The site URL does not seem to be valid, "\
"check the value of `url` in your config file."
false
end
def url_absolute(url)
return true if Addressable::URI.parse(url).absolute?
Jekyll.logger.warn "Warning:", "Your site URL does not seem to be absolute, "\
"check the value of `url` in your config file."
false
end
end end
end end
end end