# File lib/puppet/provider/package/ports.rb, line 28
28:   def latest
29:     cmd = ["-v", @resource[:name]]
30: 
31:     begin
32:       output = portversion(*cmd)
33:     rescue Puppet::ExecutionFailure
34:       raise Puppet::Error.new(output)
35:     end
36:     line = output.split("\n").pop
37: 
38:     unless line =~ /^(\S+)\s+(\S)\s+(.+)$/
39:       # There's no "latest" version, so just return a placeholder
40:       return :latest
41:     end
42: 
43:     pkgstuff = $1
44:     match = $2
45:     info = $3
46: 
47:     unless pkgstuff =~ /^(\S+)-([^-\s]+)$/
48:       raise Puppet::Error,
49:         "Could not match package info '#{pkgstuff}'"
50:     end
51: 
52:     name, version = $1, $2
53: 
54:     if match == "=" or match == ">"
55:       # we're up to date or more recent
56:       return version
57:     end
58: 
59:     # Else, we need to be updated; we need to pull out the new version
60: 
61:     unless info =~ /\((\w+) has (.+)\)/
62:       raise Puppet::Error,
63:         "Could not match version info '#{info}'"
64:     end
65: 
66:     source, newversion = $1, $2
67: 
68:     debug "Newer version in #{source}"
69:     newversion
70:   end