Ru-b2-SQL-Backups/mysql_database_config.rb
connorc@orbitnode.net 1ed4651679 Refactor generate method in MysqlDatabaseConfig class
The generate method in the MysqlDatabaseConfig class had an error that caused an undefined local variable or method 'config'. The error was due to using the config variable before it was initialized. The solution was to move the code that sets b2_enabled and adds b2 to config after the config variable is initialized. This commit fixes the error by modifying the generate method in the MysqlDatabaseConfig class.
2023-03-18 10:20:18 -06:00

63 lines
1.7 KiB
Ruby

# frozen_string_literal: true
# class for generating the mysql config if it doesn't exist
require 'json'
# class for generating our config
class MysqlDatabaseConfig
def initialize(config_file)
@config_file = config_file
end
def generate
if File.exist?(@config_file)
puts 'Config file already exists, skipping generation.'
else
mysql_host = prompt('MySQL Host')
mysql_username = prompt('MySQL Username')
mysql_password = prompt('MySQL Password')
backup_dir = prompt('Backup Directory', default: '.')
@config = {
'mysql' => {
'host' => mysql_host,
'username' => mysql_username,
'password' => mysql_password
},
'backup_dir' => backup_dir
}
b2_enabled = prompt_bool('Enable Backblaze B2?', default: false)
@config['b2_enabled'] = b2_enabled
if b2_enabled
@b2_key_id = prompt('B2 Key ID')
@b2_application_key = prompt('B2 Application Key')
@b2_bucket_name = prompt('B2 Bucket Name')
@config['b2'] = {
'key_id' => @b2_key_id,
'application_key' => @b2_application_key,
'bucket_name' => @b2_bucket_name
}
end
File.write(@config_file, JSON.pretty_generate(@config))
puts "Config file generated: #{@config_file}"
end
end
private
def prompt(message, default: nil)
print message.to_s
print " [#{default}]" if default
print ': '
value = gets.chomp
value.empty? ? default : value
end
def prompt_bool(message, default: false)
prompt("#{message} (y/n)", default: default) =~ /y|yes/i
end
end