64 lines
1.8 KiB
Ruby
64 lines
1.8 KiB
Ruby
module VagrantPlugins
|
|
module GuestALT
|
|
module Cap
|
|
class Flavor
|
|
def self.flavor(machine)
|
|
comm = machine.communicate
|
|
|
|
# Read the version file
|
|
if comm.test("test -f /etc/os-release")
|
|
name = nil
|
|
comm.sudo("grep NAME /etc/os-release") do |type, data|
|
|
if type == :stdout
|
|
name = data.split("=")[1].gsub!(/\A"|"\Z/, '')
|
|
end
|
|
end
|
|
|
|
if !name.nil? and name == "Sisyphus"
|
|
return :alt
|
|
end
|
|
|
|
version = nil
|
|
comm.sudo("grep VERSION_ID /etc/os-release") do |type, data|
|
|
if type == :stdout
|
|
verstr = data.split("=")[1]
|
|
if verstr == "p8"
|
|
version = 8
|
|
elsif verstr =~ /^[[\d]]/
|
|
version = verstr.chomp.to_i
|
|
subversion = verstr.chomp.split(".")[1].to_i
|
|
if subversion > 90
|
|
version += 1
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
if version.nil? or version == 0
|
|
return :alt
|
|
else
|
|
return :"alt_#{version}"
|
|
end
|
|
else
|
|
output = ""
|
|
comm.sudo("cat /etc/altlinux-release") do |_, data|
|
|
output = data
|
|
end
|
|
|
|
# Detect various flavors we care about
|
|
if output =~ /(ALT SP|ALT Education|ALT Workstation|ALT Workstation K|ALT Linux starter kit)\s*8(\.[1-9])?( .+)?/i
|
|
return :alt_8
|
|
elsif output =~ /ALT\s+8(\.[1-9])?( .+)?\s.+/i
|
|
return :alt_8
|
|
elsif output =~ /ALT Linux p8( .+)?/i
|
|
return :alt_8
|
|
else
|
|
return :alt
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|