f96cf9e20a
We included the project specific settings files so that fellow VS Code users can just clone down the repo, and install the needed extensions.
85 lines
2.3 KiB
Ruby
85 lines
2.3 KiB
Ruby
require 'curses'
|
|
require_relative 'database_manager.rb'
|
|
require_relative 'system_information_gather.rb'
|
|
require_relative 'utilities.rb'
|
|
|
|
class FirstRunInit
|
|
include Utilities
|
|
|
|
def initialize(db_manager)
|
|
@db_manager = db_manager
|
|
@info_gatherer = SystemInformationGather.new(@db_manager)
|
|
end
|
|
|
|
def run
|
|
first_run_setup
|
|
end
|
|
|
|
def first_run_setup
|
|
db_details = ask_for_db_details
|
|
while !@db_manager.test_db_connection(db_details)
|
|
Curses.setpos(4, 0)
|
|
Curses.addstr("Whoops! We couldn't connect to the database with the details you provided. Please try again!")
|
|
Curses.refresh
|
|
db_details = ask_for_db_details
|
|
end
|
|
@db_manager.create_system_info_table
|
|
uplink_speed = @info_gatherer.ask_for_uplink_speed
|
|
@db_manager.store_system_info(uplink_speed)
|
|
downlink_speed = @info_gatherer.ask_for_downlink_speed
|
|
@db_manager.store_system_info(downlink_speed)
|
|
total_bandwidth = calculate_total_bandwidth(uplink_speed, downlink_speed)
|
|
@db_manager.store_system_info(total_bandwidth)
|
|
services = @info_gatherer.ask_for_services
|
|
@db_manager.store_system_info(services)
|
|
end
|
|
|
|
def ask_for_db_details
|
|
Curses.clear
|
|
Curses.setpos(1, 0)
|
|
Curses.addstr("Please enter your database username: ")
|
|
Curses.refresh
|
|
username = Curses.getstr.strip
|
|
|
|
Curses.setpos(2, 0)
|
|
Curses.addstr("Please enter your database password: ")
|
|
Curses.refresh
|
|
Curses.noecho
|
|
password = Curses.getstr.strip
|
|
Curses.echo
|
|
|
|
Curses.setpos(3, 0)
|
|
Curses.addstr("Please enter your database name: ")
|
|
Curses.refresh
|
|
database = Curses.getstr.strip
|
|
|
|
{ username: username, password: password, database: database }
|
|
end
|
|
|
|
def write_db_details_to_config_file(db_details)
|
|
File.open("config.yml", "w") do |file|
|
|
file.write(db_details.to_yaml)
|
|
end
|
|
end
|
|
|
|
def ask_for_default_mode
|
|
while true
|
|
Curses.setpos(8, 0)
|
|
Curses.addstr("Please enter the default mode (TUI, GUI, or WebApp): ")
|
|
Curses.refresh
|
|
mode = Curses.getstr.strip.downcase
|
|
if valid_mode?(mode)
|
|
return mode
|
|
else
|
|
Curses.setpos(9, 0)
|
|
Curses.addstr("Whoops! That didn't appear to be a valid mode. Please try again!")
|
|
Curses.refresh
|
|
end
|
|
end
|
|
end
|
|
|
|
def valid_mode?(mode)
|
|
['tui', 'gui', 'webapp'].include?(mode)
|
|
end
|
|
end
|