1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-11 16:44:05 +02:00
Files
tomahawk/thirdparty/liblastfm2/admin/platform.rb
2011-03-24 19:27:01 -04:00

102 lines
2.4 KiB
Ruby

#
# platform.rb: naive platform detection for Ruby
# author: Matt Mower <self@mattmower.com>
#
# == Platform
#
# Platform is a simple module which parses the Ruby constant
# RUBY_PLATFORM and works out the OS, it's implementation,
# and the architecture it's running on.
#
# The motivation for writing this was coming across a case where
#
# +if RUBY_PLATFORM =~ /win/+
#
# didn't behave as expected (i.e. on powerpc-darwin-8.1.0)
#
# It is hoped that providing a library for parsing the platform
# means that we can cover all the cases and have something which
# works reliably 99% of the time.
#
# Please report any anomalies or new combinations to the author(s).
#
# == Use
#
# require "platform"
#
# defines
#
# Platform::OS (:unix,:win32,:vms,:os2)
# Platform::IMPL (:macosx,:linux,:mswin)
# Platform::ARCH (:powerpc,:x86,:alpha)
#
# if an unknown configuration is encountered any (or all) of
# these constant may have the value :unknown.
#
# To display the combination for your setup run
#
# ruby platform.rb
#
module Platform
if RUBY_PLATFORM =~ /darwin/i
OS = :unix
IMPL = :macosx
elsif RUBY_PLATFORM =~ /linux/i
OS = :unix
IMPL = :linux
elsif RUBY_PLATFORM =~ /freebsd/i
OS = :unix
IMPL = :freebsd
elsif RUBY_PLATFORM =~ /netbsd/i
OS = :unix
IMPL = :netbsd
elsif RUBY_PLATFORM =~ /mswin/i
OS = :win32
IMPL = :mswin
elsif RUBY_PLATFORM =~ /cygwin/i
OS = :win32
IMPL = :mswin
elsif RUBY_PLATFORM =~ /mingw/i
OS = :win32
IMPL = :mingw
elsif RUBY_PLATFORM =~ /bccwin/i
OS = :win32
IMPL = :bccwin
elsif RUBY_PLATFORM =~ /wince/i
OS = :win32
IMPL = :wince
elsif RUBY_PLATFORM =~ /vms/i
OS = :vms
IMPL = :vms
elsif RUBY_PLATFORM =~ /os2/i
OS = :os2
IMPL = :os2 # maybe there is some better choice here?
else
OS = :unknown
IMPL = :unknown
end
# whither AIX, SOLARIS, and the other unixen?
if RUBY_PLATFORM =~ /(i\d86)/i
ARCH = :x86
elsif RUBY_PLATFORM =~ /ia64/i
ARCH = :ia64
elsif RUBY_PLATFORM =~ /powerpc/i
ARCH = :powerpc
elsif RUBY_PLATFORM =~ /alpha/i
ARCH = :alpha
else
ARCH = :unknown
end
# What about AMD, Turion, Motorola, etc..?
end
if __FILE__ == $0
puts "Platform OS=#{Platform::OS}, IMPL=#{Platform::IMPL}, ARCH=#{Platform::ARCH}"
end