if Facter::Core::Execution.which('efibootmgr') then Facter.add('efi') do setcode do out = {} data = Facter::Core::Execution.execute('efibootmgr') boots = {} data.split("\n").each do |item| if a = item.match(/BootOrder: (.*)/) then out['BootOrder'] = a[1].split(',') elsif a = item.match(/(\w*): (.*)/) then out[a[1]] = a[2] elsif a = item.match(/Boot(\d*)(\*?) (.*)/) # a[2] contains if it's active boots[a[1]] = a[3] end end out['boots'] = boots out end end end