systeminfo/lib/display_handler.rb
2023-09-22 14:10:28 -06:00

65 lines
1.6 KiB
Ruby
Executable File

# frozen_string_literal: true
require 'tty-prompt'
require 'json'
class DisplayHandler
def self.display(system_info)
# Log the entire system_info to a log file
File.open('system_info.log', 'w') do |f|
f.puts(JSON.pretty_generate(system_info))
end
prompt = TTY::Prompt.new
choices = [
{ name: 'OS Info', value: :os },
{ name: 'Hardware Info', value: :hardware },
{ name: 'Network Info', value: :network },
{ name: 'Exit', value: :exit }
]
loop do
user_choice = prompt.select('Choose an option:', choices)
case user_choice
when :os
display_os_info(system_info.slice(:kernel, :os, :uptime))
when :hardware
display_hardware_info(system_info.slice(:cpu, :ram, :disk, :gpu))
when :network
display_network_info(system_info.slice(:network, :nic))
when :exit
break
end
end
end
def self.display_os_info(os_info)
# Display OS information
puts "\nOS Information:"
puts '---------------'
os_info.each do |key, value|
puts "#{key.capitalize}: #{value}"
end
end
def self.display_hardware_info(hardware_info)
# Display Hardware information (CPU, RAM, etc.)
puts "\nHardware Information:"
puts '---------------------'
hardware_info.each do |key, value|
puts "#{key.capitalize}: #{value}"
end
end
def self.display_network_info(network_info)
# Display Network information
puts "\nNetwork Information:"
puts '--------------------'
network_info.each do |key, value|
puts "#{key.capitalize}: #{value}"
end
end
end