1 apt_package_updates = nil
2 Facter.add("apt_has_updates") do
3 confine :osfamily => 'Debian'
4 if File.executable?("/usr/bin/apt-get")
5 apt_get_result = Facter::Util::Resolution.exec('/usr/bin/apt-get -s upgrade 2>&1')
6 if not apt_get_result.nil?
7 apt_package_updates = [[], []]
8 apt_get_result.each_line do |line|
10 package = line.gsub(/^Inst\s([^\s]+)\s.*/, '\1').strip
11 apt_package_updates[0].push(package)
13 / Debian[^\s]+-updates /,
15 / Ubuntu[^\s]+-security /,
16 / gNewSense[^\s]+-security /
18 re = Regexp.union(security_matches)
20 apt_package_updates[1].push(package)
28 if not apt_package_updates.nil? and apt_package_updates.length == 2
29 apt_package_updates != [[], []]
34 Facter.add("apt_package_updates") do
35 confine :apt_has_updates => true
37 if Facter.version < '2.0.0'
38 apt_package_updates[0].join(',')
40 apt_package_updates[0]
45 Facter.add("apt_updates") do
46 confine :apt_has_updates => true
48 Integer(apt_package_updates[0].length)
52 Facter.add("apt_security_updates") do
53 confine :apt_has_updates => true
55 Integer(apt_package_updates[1].length)