1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
# frozen_string_literal: true
# The Sys module is a namespace only.
module Sys
# The Platform class provides singleton methods to tell you what OS you're on.
class Platform
# The CPU architecture
ARCH = File::ALT_SEPARATOR ? Uname.architecture.to_sym : Uname.machine.to_sym
# Returns a basic OS family, either :windows or :unix
OS = File::ALT_SEPARATOR ? :windows : :unix
# Returns the OS type, :macosx, :linux, :mingw32, etc
IMPL = case Uname.sysname
when /darwin|mac/i
:macosx
when /mingw|windows/i
require 'rbconfig'
RbConfig::CONFIG['host_os'].split('_').first[/[a-z]+/i].downcase.to_sym
when /linux/i
:linux
when /bsd|dragonfly/i
:bsd
end
# Returns whether or not you're on a Windows OS
def self.windows?
Uname.sysname =~ /microsoft/i ? true : false
end
# Returns whether or not you're on a Unixy (non-Windows) OS
def self.unix?
Uname.sysname =~ /microsoft/i ? false : true
end
# Returns whether or not you're on a mac, i.e. OSX
def self.mac?
Uname.sysname =~ /darwin|mac/i ? true : false
end
# Returns whether or not you're on Linux
def self.linux?
Uname.sysname =~ /linux/i ? true : false
end
# Returns whether or not you're on any BSD platform
def self.bsd?
Uname.sysname =~ /bsd/i ? true : false
end
end
end
|