65 lines
1.6 KiB
Ruby
Executable File
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
|