class ProviderMetadata

Attributes

base[R]

Public Class Methods

new(path, box_basename) click to toggle source
# File lib/bento/providermetadata.rb, line 7
def initialize(path, box_basename)
  @base = File.join(path, box_basename)
end

Public Instance Methods

read() click to toggle source
# File lib/bento/providermetadata.rb, line 11
def read
  Dir.glob("#{base}.*.box").map do |file|
    {
      name: provider_from_file(file),
      version: version(provider_from_file(file)),
      file: "#{File.basename(file)}",
      checksum_type: "sha256",
      checksum: shasum(file),
      size: "#{size_in_mb(file)} MB",
    }
  end
end

Private Instance Methods

provider_from_file(file) click to toggle source
# File lib/bento/providermetadata.rb, line 28
def provider_from_file(file)
  provider = file.sub(/^.*\.([^.]+)\.box$/, '\1')
  if provider == "vmware"
    "vmware_desktop"
  else
    provider
  end
end
shasum(file) click to toggle source
# File lib/bento/providermetadata.rb, line 37
def shasum(file)
  Digest::SHA256.file(file).hexdigest
end
size_in_mb(file) click to toggle source
# File lib/bento/providermetadata.rb, line 41
def size_in_mb(file)
  size = File.size(file)
  size_mb = size / MEGABYTE
  size_mb.ceil.to_s
end
ver_parallels() click to toggle source
# File lib/bento/providermetadata.rb, line 72
def ver_parallels
  raise "Platform is not macOS / OS X, exiting..." unless os_x?
  cmd = Mixlib::ShellOut.new("prlctl --version")
  cmd.run_command
  cmd.stdout.split(" ")[2]
end
ver_vbox() click to toggle source
# File lib/bento/providermetadata.rb, line 79
def ver_vbox
  cmd = Mixlib::ShellOut.new("VBoxManage --version")
  cmd.run_command
  cmd.stdout.split("r")[0]
end
ver_vmware() click to toggle source
# File lib/bento/providermetadata.rb, line 58
def ver_vmware
  if os_x?
    path = File.join('/Applications/VMware\ Fusion.app/Contents/Library')
    fusion_cmd = File.join(path, "vmware-vmx -v")
    cmd = Mixlib::ShellOut.new(fusion_cmd)
    cmd.run_command
    cmd.stderr.split(" ")[5]
  else
    cmd = Mixlib::ShellOut.new("vmware --version")
    cmd.run_command
    cmd.stdout.split(" ")[2]
  end
end
version(provider) click to toggle source
# File lib/bento/providermetadata.rb, line 47
def version(provider)
  case provider
  when /vmware/
    ver_vmware
  when /virtualbox/
    ver_vbox
  when /parallels/
    ver_parallels
  end
end