self.package_list

in lib/puppet/provider/package/brew.rb [169:208]


  def self.package_list(options={})
    Puppet.debug "Listing installed packages"

    cmd_line = [command(:brew), :list, '--versions']
    if options[:justme]
      cmd_line += [ options[:justme] ]
    end

    begin
      cmd_output = execute(cmd_line)
    rescue Puppet::ExecutionFailure => detail
      raise Puppet::Error, "Could not list packages: #{detail}"
    end

    
    
    
    re_excludes = Regexp.union([
      /^==>.*/,
      /^Tapped \d+ formulae.*/,
      ])
    lines = cmd_output.lines.delete_if { |line| line.match(re_excludes) }

    if options[:justme]
      if lines.empty?
        Puppet.debug "Package #{options[:justme]} not installed"
        return nil
      else
        if lines.length > 1
          Puppet.warning "Multiple matches for package #{options[:justme]} - using first one found"
        end
        line = lines.shift
        Puppet.debug "Found package #{line}"
        return name_version_split(line)
      end
    else
      return lines.map{ |l| name_version_split(l) }
    end
  end