Module: EC2::Platform

Defined in:
lib/ec2/platform/base/pipeline.rb,
lib/ec2/platform.rb,
lib/ec2/platform/base.rb,
lib/ec2/platform/linux.rb,
lib/ec2/platform/current.rb,
lib/ec2/platform/solaris.rb,
lib/ec2/platform/linux/tar.rb,
lib/ec2/platform/linux/mtab.rb,
lib/ec2/platform/linux/fstab.rb,
lib/ec2/platform/linux/image.rb,
lib/ec2/platform/linux/rsync.rb,
lib/ec2/platform/linux/uname.rb,
lib/ec2/platform/solaris/tar.rb,
lib/ec2/platform/solaris/mtab.rb,
lib/ec2/platform/solaris/fstab.rb,
lib/ec2/platform/solaris/image.rb,
lib/ec2/platform/solaris/rsync.rb,
lib/ec2/platform/solaris/uname.rb,
lib/ec2/platform/base/constants.rb,
lib/ec2/platform/linux/identity.rb,
lib/ec2/platform/linux/pipeline.rb,
lib/ec2/platform/linux/constants.rb,
lib/ec2/platform/solaris/identity.rb,
lib/ec2/platform/solaris/pipeline.rb,
lib/ec2/platform/base/architecture.rb,
lib/ec2/platform/solaris/constants.rb,
lib/ec2/platform/linux/architecture.rb,
lib/ec2/platform/solaris/architecture.rb

Overview


Defined Under Namespace

Modules: Base, Linux, Solaris Classes: PartitionType, Unknown, Unsupported

Constant Summary collapse

IMPLEMENTATIONS =
[
   [/darwin/i,  :unix,    :macosx ],
   [/linux/i,   :unix,    :linux  ],
   [/freebsd/i, :unix,    :freebsd],
   [/netbsd/i,  :unix,    :netbsd ],
   [/solaris/i, :unix,    :solaris],
   [/irix/i,    :unix,    :irix   ],
   [/cygwin/i,  :unix,    :cygwin ],
   [/mswin/i,   :win32,   :mswin  ],
   [/mingw/i,   :win32,   :mingw  ],
   [/bccwin/i,  :win32,   :bccwin ],
   [/wince/i,   :win32,   :wince  ],
   [/vms/i,     :vms,     :vms    ],
   [/os2/i,     :os2,     :os2    ],
   [nil,        :unknown, :unknown],
]
ARCHITECTURES =
[
  [/(i\d86)/i,  :i386             ],
  [/x86_64/i,   :x86_64           ],
  [/ia64/i,     :ia64             ],
  [/alpha/i,    :alpha            ],
  [/sparc/i,    :sparc            ],
  [/mips/i,     :mips             ],
  [/powerpc/i,  :powerpc          ],
  [nil,         :unknown          ],
]
Current =
initialize
PEER =
EC2::Platform::Solaris

Class Method Summary collapse

Class Method Details

.guessObject



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/ec2/platform.rb', line 42

def self.guess
  os = :unknown
  impl = :unknown
  arch = :unknown
  IMPLEMENTATIONS.each do |r, o, i|
    if r and RUBY_PLATFORM =~ r
      os, impl = [o, i]
      break
    end
  end
  ARCHITECTURES.each do |r, a|
    if r and RUBY_PLATFORM =~ r
      arch = a
      break
    end
  end
  return [os, impl, arch]
end

.initializeObject

Raises:



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/ec2/platform/current.rb', line 33

def self.initialize
  return EC2::Platform::PEER if defined? EC2::Platform::PEER
  impl = Platform::IMPL
  base = impl.to_s
  
  # must be a known architecture
  raise Unknown.new(base), caller if base.nil? or impl == :unknown      
  
  # base file must exist in same directory as this one
  file = Pathname.new(__FILE__).dirname + base
  raise Unsupported.new(base), caller unless File.exists? file
  
  # a require statement must succeed
  implemented = require "ec2/platform/#{base}" rescue false
  raise Unsupported.new(impl), caller unless implemented
  
  # cross fingers and hope the 'required' peer set the PEER constant
  raise Unsupported.new(impl), caller unless defined? EC2::Platform::PEER
  EC2::Platform::PEER
end