class Inspec::Resources::SolarisPkg

Solaris

def info(package_name)

def info(package_name)
  if inspec.os[:release].to_i <= 10
    solaris10_info(package_name)
  else
    solaris11_info(package_name)
  end
end

def solaris10_info(package_name)

solaris 10
def solaris10_info(package_name)
  cmd = inspec.command("pkginfo -l #{package_name}")
  return {} if cmd.exit_status.to_i != 0
  params = SimpleConfig.new(
    cmd.stdout.chomp,
    assignment_regex: /^\s*([^:]*?)\s*:\s*(.*?)\s*$/,
    multiple_values: false,
  ).params
  # parse 11.10.0,REV=2006.05.18.01.46
  v = params['VERSION'].split(',')
  {
    name: params['PKGINST'],
    installed: true,
    version: v[0] + '-' + v[1].split('=')[1],
    type: 'pkg',
  }
end

def solaris11_info(package_name)

solaris 11
def solaris11_info(package_name)
  cmd = inspec.command("pkg info #{package_name}")
  return {} if cmd.exit_status.to_i != 0
  params = SimpleConfig.new(
    cmd.stdout.chomp,
    assignment_regex: /^\s*([^:]*?)\s*:\s*(.*?)\s*$/,
    multiple_values: false,
  ).params
  {
    name: params['Name'],
    installed: true,
    # 0.5.11-0.175.3.1.0.5.0
    version: "#{params['Version']}-#{params['Branch']}",
    type: 'pkg',
  }
end