Class: Beaker::Platform
- Inherits:
-
String
- Object
- String
- Beaker::Platform
- Defined in:
- lib/beaker/platform.rb
Overview
This class create a Platform object inheriting from String. It supports all String methods while adding several platform-specific use cases.
Constant Summary collapse
- PLATFORMS =
Supported platforms
/^(huaweios|cisco_nexus|cisco_ios_xr|(free|open)bsd|osx|centos|fedora|debian|oracle|redhat|scientific|sles|ubuntu|windows|solaris|aix|archlinux|el|eos|cumulus|f5|netscaler)\-.+\-.+$/
- PLATFORM_VERSION_CODES =
Platform version numbers vs. codenames conversion hash
{ :debian => { "stretch" => "9", "jessie" => "8", "wheezy" => "7", "squeeze" => "6", }, :ubuntu => { "artful" => "1710", "zesty" => "1704", "yakkety" => "1610", "xenial" => "1604", "wily" => "1510", "vivid" => "1504", "utopic" => "1410", "trusty" => "1404", "saucy" => "1310", "raring" => "1304", "quantal" => "1210", "precise" => "1204", "lucid" => "1004", }, :osx => { "highsierra" => "1013", "sierra" => "1012", "elcapitan" => "1011", "yosemite" => "1010", "mavericks" => "109", } }
Instance Attribute Summary collapse
-
#arch ⇒ Object
readonly
A string with the cpu architecture of the platform.
-
#codename ⇒ Object
readonly
A string with the codename of the platform+version, nil on platforms without codenames.
-
#variant ⇒ Object
readonly
A string with the name of the platform.
-
#version ⇒ Object
readonly
A string with the version number of the platform.
Instance Method Summary collapse
- #init_with(coder) ⇒ Object
-
#initialize(name) ⇒ Platform
constructor
Creates the Platform object.
-
#to_array ⇒ Object
Returns array of attributes to allow single line assignment to local variables in DSL and test case methods.
-
#with_version_codename ⇒ String
Returns the platform string with the platform version as a codename.
-
#with_version_number ⇒ String
Returns the platform string with the platform version as a number.
Constructor Details
#initialize(name) ⇒ Platform
Creates the Platform object. Checks to ensure that the platform String provided meets the platform formatting rules. Platforms name must be of the format /^OSFAMILY-VERSION-ARCH.*$/ where OSFAMILY is one of:
-
huaweios
-
cisco_nexus
-
cisco_ios_xr
-
freebsd
-
openbsd
-
osx
-
centos
-
fedora
-
debian
-
oracle
-
redhat
-
scientific
-
sles
-
ubuntu
-
windows
-
solaris
-
aix
-
el
-
cumulus
-
f5
-
netscaler
-
archlinux
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/beaker/platform.rb', line 74 def initialize(name) if name !~ PLATFORMS raise ArgumentError, "Unsupported platform name #{name}" end super @variant, version, @arch = self.split('-', 3) codename_version_hash = PLATFORM_VERSION_CODES[@variant.to_sym] @version = version @codename = nil if codename_version_hash if codename_version_hash[version] @codename = version @version = codename_version_hash[version] else version = version.delete('.') version_codename_hash = codename_version_hash.invert @codename = version_codename_hash[version] end end end |
Instance Attribute Details
#arch ⇒ Object (readonly)
A string with the cpu architecture of the platform.
47 48 49 |
# File 'lib/beaker/platform.rb', line 47 def arch @arch end |
#codename ⇒ Object (readonly)
A string with the codename of the platform+version, nil on platforms without codenames.
44 45 46 |
# File 'lib/beaker/platform.rb', line 44 def codename @codename end |
#variant ⇒ Object (readonly)
A string with the name of the platform.
37 38 39 |
# File 'lib/beaker/platform.rb', line 37 def variant @variant end |
#version ⇒ Object (readonly)
A string with the version number of the platform.
40 41 42 |
# File 'lib/beaker/platform.rb', line 40 def version @version end |
Instance Method Details
#init_with(coder) ⇒ Object
126 127 128 129 130 131 |
# File 'lib/beaker/platform.rb', line 126 def init_with(coder) coder.map.each do |ivar, value| instance_variable_set("@#{ivar}", value) end replace("#{@variant}-#{@version}-#{@arch}") end |
#to_array ⇒ Object
Returns array of attributes to allow single line assignment to local variables in DSL and test case methods.
101 102 103 |
# File 'lib/beaker/platform.rb', line 101 def to_array return @variant, @version, @arch, @codename end |
#with_version_codename ⇒ String
Returns the platform string with the platform version as a codename. If no conversion is necessary then the original, unchanged platform String is returned.
109 110 111 112 113 114 115 |
# File 'lib/beaker/platform.rb', line 109 def with_version_codename version_array = [@variant, @version, @arch] if @codename version_array = [@variant, @codename, @arch] end return version_array.join('-') end |
#with_version_number ⇒ String
Returns the platform string with the platform version as a number. If no conversion is necessary then the original, unchanged platform String is returned.
121 122 123 |
# File 'lib/beaker/platform.rb', line 121 def with_version_number [@variant, @version, @arch].join('-') end |