116 lines
2.9 KiB
Ruby
116 lines
2.9 KiB
Ruby
# 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
|