This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Jekyll
|
||||
module GitHubMetadata
|
||||
class Pages
|
||||
class << self
|
||||
DEFAULTS = {
|
||||
"PAGES_ENV" => "development",
|
||||
"PAGES_API_URL" => "https://api.github.com",
|
||||
"PAGES_HELP_URL" => "https://docs.github.com",
|
||||
"PAGES_GITHUB_HOSTNAME" => "github.com",
|
||||
"PAGES_PAGES_HOSTNAME" => "github.io",
|
||||
"SSL" => "false",
|
||||
"SUBDOMAIN_ISOLATION" => "false",
|
||||
"PAGES_PREVIEW_HTML_URL" => nil,
|
||||
"PAGE_BUILD_ID" => nil,
|
||||
}.freeze
|
||||
|
||||
# Whether the GitHub instance supports HTTPS
|
||||
# Note: this will be the same as how sites are served in Enterprise,
|
||||
# but may be different from how sites are served on GitHub.com.
|
||||
# See Repository#url_scheme
|
||||
def ssl?
|
||||
env_var("SSL") == "true" || test?
|
||||
end
|
||||
|
||||
def scheme
|
||||
ssl? ? "https" : "http"
|
||||
end
|
||||
|
||||
def subdomain_isolation?
|
||||
env_var("SUBDOMAIN_ISOLATION").eql? "true"
|
||||
end
|
||||
|
||||
def test?
|
||||
env == "test"
|
||||
end
|
||||
|
||||
def dotcom?
|
||||
env == "dotcom"
|
||||
end
|
||||
|
||||
def enterprise?
|
||||
env == "enterprise"
|
||||
end
|
||||
|
||||
def development?
|
||||
env == "development"
|
||||
end
|
||||
|
||||
def custom_domains_enabled?
|
||||
dotcom? || test?
|
||||
end
|
||||
|
||||
def env
|
||||
env_var "PAGES_ENV", ENV["JEKYLL_ENV"]
|
||||
end
|
||||
|
||||
def repo_pages_html_url_preview?
|
||||
env_var "PAGES_PREVIEW_HTML_URL"
|
||||
end
|
||||
|
||||
def github_url
|
||||
if dotcom? || github_hostname == "github.com"
|
||||
"https://github.com"
|
||||
else
|
||||
"#{scheme}://#{github_hostname}"
|
||||
end
|
||||
end
|
||||
|
||||
def api_url
|
||||
trim_last_slash env_var("PAGES_API_URL", ENV["API_URL"])
|
||||
end
|
||||
|
||||
def help_url
|
||||
trim_last_slash env_var("PAGES_HELP_URL", ENV["HELP_URL"])
|
||||
end
|
||||
|
||||
def github_hostname
|
||||
trim_last_slash env_var("PAGES_GITHUB_HOSTNAME", ENV["GITHUB_HOSTNAME"])
|
||||
end
|
||||
|
||||
def pages_hostname
|
||||
intermediate_default = ENV["PAGES_HOSTNAME"]
|
||||
intermediate_default ||= "localhost:4000" if development?
|
||||
trim_last_slash env_var("PAGES_PAGES_HOSTNAME", intermediate_default)
|
||||
end
|
||||
|
||||
def page_build?
|
||||
!env_var("PAGE_BUILD_ID").to_s.empty?
|
||||
end
|
||||
|
||||
def configuration
|
||||
(methods - Object.methods - [:configuration]).sort.each_with_object({}) do |meth, memo|
|
||||
memo[meth.to_s] = public_send(meth)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def env_var(key, intermediate_default = nil)
|
||||
!ENV[key].to_s.empty? ? ENV[key] : (intermediate_default || DEFAULTS[key])
|
||||
end
|
||||
|
||||
def trim_last_slash(url)
|
||||
if url[-1] == "/"
|
||||
url[0..-2]
|
||||
else
|
||||
url
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user