class SBCP::Config
Public Class Methods
new()
click to toggle source
# File lib/sbcp/config.rb, line 22 def initialize @cli = HighLine.new end
Public Instance Methods
config_menu(menu)
click to toggle source
# File lib/sbcp/config.rb, line 26 def config_menu(menu) config_file = File.expand_path('../../../config.yml', __FILE__) config = YAML.load_file(config_file) case menu when :main answer = @cli.choose do |menu| menu.prompt = "Please select a menu option\n> " @cli.say("=== SBCP Configuration Menu ===") menu.choice(:General) { config_menu(:general) } menu.choice(:Backups) { config_menu(:backups) } menu.choice(:Logs) { config_menu(:logs) } menu.choice(:Restarts) { config_menu(:restarts) } menu.choice(:Exit) { puts 'Thank you for using SBCP.' } end when :general answer = @cli.choose do |menu| menu.prompt = "Please select a menu option\n> " @cli.say("=== SBCP General Settings ===") menu.choice('Starbound Directory') do @cli.choose do |sub_menu| sub_menu.prompt = "Please select a menu option\n> " @cli.say("=== SBCP Starbound Directory Setting ===") @cli.say('Your current starbound directory is:') @cli.say("\"#{config['starbound_directory']}\"") sub_menu.choice('Keep this directory') { @cli.say('Directory kept.'); config_menu(:general) } sub_menu.choice('Change this directory') do response = '' until Dir.exist?(response) && Dir.exist?(response + '/giraffe_storage') && File.writable?(response) response = @cli.ask("Please enter a new directory.\n> ") if not Dir.exist?(response) && Dir.exist?(response + '/giraffe_storage') @cli.say('Error - This dirctory does not exist or is not a valid starbound installation. Try again.') elsif not File.writable?(response) @cli.say('Error - This dirctory cannot be written to. Check permissions and try again.') end end config['starbound_directory'] = response File.write(config_file, config.to_yaml) @cli.say('Changes saved successfully.') config_menu(:general) end end end menu.choice('Back to Main Menu') { config_menu(:main) } end when :backups @cli.choose do |menu| menu.prompt = "Please select a menu option\n> " @cli.say("=== SBCP Backup Settings ===") menu.choice('Backup Directory') do @cli.choose do |sub_menu| sub_menu.prompt = "Please select a menu option\n> " @cli.say("=== SBCP Backup Directory Setting ===") @cli.say('Your current backup directory is:') @cli.say("\"#{config['backup_directory']}\"") sub_menu.choice('Keep this directory') { @cli.say('Directory kept.'); config_menu(:backups) } sub_menu.choice('Change this directory') do response = '' until Dir.exist?(response) && File.writable?(response) response = @cli.ask("Please enter a new directory.\n> ") if not Dir.exist?(response) @cli.say('Error - This dirctory does not exist. Try again.') elsif not File.writable?(response) @cli.say('Error - This dirctory cannot be written to. Check permissions and try again.') end end config['backup_directory'] = response File.write(config_file, config.to_yaml) @cli.say('Changes saved successfully.') config_menu(:backups) end end end menu.choice('Backup History') do @cli.choose do |sub_menu| sub_menu.prompt = "Please select a menu option\n> " @cli.say("=== SBCP Backup History Setting ===") @cli.say('Backups are currently set to remain archived for:') @cli.say(config['backup_history'].to_s + ' days') sub_menu.choice('Keep this setting') { @cli.say('Setting kept.'); config_menu(:backups) } sub_menu.choice('Change this setting') do until response > 0 response = @cli.ask("Enter a new value in days (enter 0 to disable backups)\n> ", Integer) @cli.say('Value must be greater than zero.') if not response > 0 end config['backup_history'] = response File.write(config_file, config.to_yaml) @cli.say('Changes saved successfully.') config_menu(:backups) end end end menu.choice('Backup Schedule') do @cli.choose do |sub_menu| sub_menu.prompt = "Please select a menu option\n> " @cli.say("=== SBCP Backup Schedule Setting ===") @cli.say('The backup schedule is currently set to:') config['backup_schedule'].is_a?(Integer) ? @cli.say('Every ' + config['backup_schedule'].to_s + ' hours') : @cli.say(config['backup_schedule'].to_s) sub_menu.choice('Keep this setting') { @cli.say('Setting kept.'); config_menu(:backups) } sub_menu.choice('Change this setting') do response = @cli.ask("Enter a new value in hours (enter 0 for on restart)\n> ", Integer) { |q| q.in = [0, 1, 2, 3, 4, 6, 8, 12, 24] } response = 'restart' if response == 0 response = 'hourly' if response == 1 response = 'daily' if response == 24 config['backup_schedule'] = response File.write(config_file, config.to_yaml) @cli.say('Changes saved successfully.') config_menu(:backups) end end end menu.choice('Back to Main Menu') { config_menu(:main) } end when :logs @cli.choose do |menu| menu.prompt = "Please select a menu option\n> " @cli.say("=== SBCP Log Settings ===") menu.choice('Log Directory') do @cli.choose do |sub_menu| sub_menu.prompt = "Please select a menu option\n> " @cli.say("=== SBCP Log Directory Setting ===") @cli.say('Your current logs directory is:') @cli.say("\"#{config['log_directory']}\"") sub_menu.choice('Keep this directory') { @cli.say('Directory kept.'); config_menu(:logs) } sub_menu.choice('Change this directory') do response = '' until Dir.exist?(response) && File.writable?(response) response = @cli.ask("Please enter a new directory.\n> ") if not Dir.exist?(response) @cli.say('Error - This dirctory does not exist. Try again.') elsif not File.writable?(response) @cli.say('Error - This dirctory cannot be written to. Check permissions and try again.') end end config['log_directory'] = response File.write(config_file, config.to_yaml) @cli.say('Changes saved successfully.') config_menu(:logs) end end end menu.choice('Log History') do @cli.choose do |sub_menu| sub_menu.prompt = "Please select a menu option\n> " @cli.say("=== SBCP Log History Setting ===") @cli.say('Logs are currently set to remain archived for:') @cli.say(config['log_history'].to_s + ' days') sub_menu.choice('Keep this setting') { @cli.say('Setting kept.'); config_menu(:logs) } sub_menu.choice('Change this setting') do until response >= 1 response = @cli.ask("Enter a new value in days\n> ", Integer) @cli.say('Value must be greater than or equal to one.') if not response >= 1 end config['log_history'] = response File.write(config_file, config.to_yaml) @cli.say('Changes saved successfully.') config_menu(:logs) end end end menu.choice('Log Style') do @cli.choose do |sub_menu| sub_menu.prompt = "Please select a menu option\n> " @cli.say("=== SBCP Log Style Setting ===") @cli.say('The log style is currently set to:') @cli.say(config['log_style']) sub_menu.choice('Keep this setting') { @cli.say('Setting kept.'); config_menu(:logs) } sub_menu.choice('Change this setting') do response = @cli.ask("Enter a style name (daily, restart))\n> ") { |q| q.in = ['daily', 'restart'] } config['log_style'] = response File.write(config_file, config.to_yaml) @cli.say('Changes saved successfully.') config_menu(:logs) end end end menu.choice('Back to Main Menu') { config_menu(:main) } end when :restarts @cli.choose do |menu| menu.prompt = "Please select a menu option\n> " @cli.say("=== SBCP Restart Settings ===") menu.choice('Restart Schedule') do @cli.choose do |sub_menu| sub_menu.prompt = "Please select a menu option\n> " @cli.say("=== SBCP Restart Schedule Setting ===") @cli.say('The restart schedule is currently set to:') config['restart_schedule'].is_a?(Integer) ? @cli.say('Every ' + config['restart_schedule'].to_s + ' hours') : @cli.say(config['restart_schedule'].to_s.capitalize) sub_menu.choice('Keep this setting') { @cli.say('Setting kept.'); config_menu(:restarts) } sub_menu.choice('Change this setting') do response = @cli.ask("Enter a new value in hours\n> ", Integer) { |q| q.in = [0, 1, 2, 3, 4, 6, 8, 12, 24] } response = 'disabled' if response == 0 config['restart_schedule'] = response File.write(config_file, config.to_yaml) @cli.say('Changes saved successfully.') config_menu(:restarts) end end end menu.choice('Back to Main Menu') { config_menu(:main) } end end end