81 lines
1.8 KiB
Ruby
81 lines
1.8 KiB
Ruby
module Jekyll
|
|
module Utils
|
|
module Platforms
|
|
extend self
|
|
|
|
# Provides jruby? and mri? which respectively detect these two types of
|
|
# tested Engines we support, in the future we might probably support the
|
|
# other one that everyone used to talk about.
|
|
|
|
{ :jruby? => "jruby", :mri? => "ruby" }.each do |k, v|
|
|
define_method k do
|
|
::RUBY_ENGINE == v
|
|
end
|
|
end
|
|
|
|
# --
|
|
# Allows you to detect "real" Windows, or what we would consider
|
|
# "real" Windows. That is, that we can pass the basic test and the
|
|
# /proc/version returns nothing to us.
|
|
# --
|
|
|
|
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?
|
|
vanilla_windows? || bash_on_windows?
|
|
end
|
|
|
|
#
|
|
|
|
def linux?
|
|
RbConfig::CONFIG["host_os"] =~ %r!linux! && \
|
|
proc_version !~ %r!microsoft!i
|
|
end
|
|
|
|
# Provides windows?, linux?, osx?, unix? so that we can detect
|
|
# platforms. This is mostly useful for `jekyll doctor` and for testing
|
|
# where we kick off certain tests based on the platform.
|
|
|
|
{ :osx? => %r!darwin|mac os!, :unix? => %r!solaris|bsd! }.each do |k, v|
|
|
define_method k do
|
|
!!(
|
|
RbConfig::CONFIG["host_os"] =~ v
|
|
)
|
|
end
|
|
end
|
|
|
|
#
|
|
|
|
private
|
|
def proc_version
|
|
@cached_proc_version ||= begin
|
|
Pathutil.new(
|
|
"/proc/version"
|
|
).read
|
|
rescue Errno::ENOENT
|
|
nil
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|