Sha256: 266185524403807f169f3d3df719f5cab28b575995f11bc2c2dc610ef56fd3f5

Contents?: true

Size: 1.67 KB

Versions: 3

Compression:

Stored size: 1.67 KB

Contents

module Beaker
  class Platform < String
    #supported platforms
    PLATFORMS = /^(centos|fedora|debian|oracle|redhat|scientific|sles|ubuntu|windows|solaris|aix|el)\-.+\-.+$/

    PLATFORM_VERSION_CODES = 
      { :debian => { "wheezy"  => "7",
                     "squeeze" => "6",
                   },
        :ubuntu => { "trusty"  => "1404", 
                     "saucy"   => "1310",
                     "raring"  => "1304",
                     "quantal" => "1210",
                     "precise" => "1204",
                   },
      }

    def initialize(name)
      if name !~ PLATFORMS
        raise ArgumentError, "Unsupported platform name #{name}"
      end
      super
    end

    def with_version_codename
      name, version, extra = self.split('-', 3)
      PLATFORM_VERSION_CODES.each_key do |platform|
        if name =~ /#{platform}/
          PLATFORM_VERSION_CODES[platform].each do |version_codename, version_number|
            #remove '.' from version number
            if version.delete('.') =~ /#{version_number}/
              version = version_codename
              break
            end
          end
          break
        end
      end
      [name, version, extra].join('-')
    end

    def with_version_number
      name, version, extra = self.split('-', 3)
      PLATFORM_VERSION_CODES.each_key do |platform|
        if name =~ /#{platform}/
          PLATFORM_VERSION_CODES[platform].each do |version_codename, version_number|
            if version =~ /#{version_codename}/
              version = version_number
              break
            end
          end
          break
        end
      end
      [name, version, extra].join('-')
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
beaker-1.8.2 lib/beaker/platform.rb
beaker-1.8.1 lib/beaker/platform.rb
beaker-1.8.0 lib/beaker/platform.rb