60 lines
1.6 KiB
Ruby
60 lines
1.6 KiB
Ruby
|
require 'curses'
|
||
|
|
||
|
def first_run_setup
|
||
|
color = ask_for_color
|
||
|
# TODO: Use the color for something
|
||
|
db_details = ask_for_db_details
|
||
|
while !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
|
||
|
uplink_speed = ask_for_uplink_speed
|
||
|
# TODO: Use the uplink speed for something
|
||
|
downlink_speed = ask_for_downlink_speed
|
||
|
# TODO: Use the downlink speed for something
|
||
|
total_bandwidth = calculate_total_bandwidth(uplink_speed, downlink_speed)
|
||
|
# TODO: Use the total bandwidth for something
|
||
|
services = ask_for_services
|
||
|
# TODO: Use the services for something
|
||
|
# ...
|
||
|
end
|
||
|
|
||
|
def ask_for_color
|
||
|
while true
|
||
|
Curses.clear
|
||
|
Curses.setpos(0, 0)
|
||
|
Curses.addstr("Please enter your preferred color (white, red, or black): ")
|
||
|
Curses.refresh
|
||
|
color = Curses.getstr.strip.downcase
|
||
|
if ['white', 'red', 'black'].include?(color)
|
||
|
return color
|
||
|
else
|
||
|
Curses.setpos(1, 0)
|
||
|
Curses.addstr("Whoops! That didn't appear to be a valid color. Please try again!")
|
||
|
Curses.refresh
|
||
|
end
|
||
|
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
|