--- /dev/null
+{ "LSBRelease" => %r{^LSB Version:\t(.*)$},
+ "LSBDistId" => %r{^Distributor ID:\t(.*)$},
+ "LSBDistRelease" => %r{^Release:\t(.*)$},
+ "LSBDistDescription" => %r{^Description:\t(.*)$},
+ "LSBDistCodeName" => %r{^Codename:\t(.*)$}
+}.each do |fact, pattern|
+ Facter.add(fact) do
+ confine :kernel => 'GNU/kFreeBSD'
+ setcode do
+ unless defined?(@@lsbdata) and defined?(@@lsbtime) and (Time.now.to_i - @@lsbtime.to_i < 5)
+ type = nil
+ @@lsbtime = Time.now
+ @@lsbdata = Facter::Util::Resolution.exec('lsb_release -a 2>/dev/null')
+ end
+
+ if pattern.match(@@lsbdata)
+ $1
+ else
+ nil
+ end
+ end
+ end
+end
+